Pāriet uz saturu

Revīzijas uzņēmuma laika uzskaite

Projektu un darbinieku laika uzskaite revīzijas uzņēmumam · Izveidots no nulles, viens pats

Atjaunināts

Pirms

Klienti, projekti un stundas atradās vienuviet, kur ikviens uzņēmumā varēja redzēt un mainīt visu.

Pēc

87

atļauju lodziņi, kas pirms katras izlaides pierādīti pret datubāzi; 30 lodziņi, kas neko nedarīja, tika paslēpti.

Kā tas darbojas
  1. 1Cilvēks:Īpašnieks

    Veido lomas ar atzīmējamām rūtiņām katrai jomai (klienti, projekti, laiks, atskaites): skatīšana, izveide, rediģēšana un dzēšana.

  2. 2Cilvēks:Darbinieks

    Reģistrē stundas pie klienta, projekta un uzdevuma vai pieprasa brīvdienas.

    Programmatūra:Tīmekļa lietotne

    Atgādina ikvienam, kura laika uzskaite pirms termiņa vēl ir tukša.

  3. 3Cilvēks:Projekta administrators

    Apstiprina vai noraida nedēļas laika uzskaiti savai projekta komandai.

  4. 4Programmatūra:Datubāze

    Katram rāda tikai to, ko atļauj viņa loma: darbinieki redz savas stundas, projektu administratori savu komandu, īpašnieki katru klientu.

  5. 5Cilvēks:Īpašnieks

    Skata stundas pa klientiem, projektiem un cilvēkiem dashboard un atskaitēs.

Vienmēr darbojas

  • Agrāk ikviens uzņēmumā varēja atvērt jebkuru klientu un visu cilvēku stundas. Tagad datubāze noraida visu, ko loma neatļauj, pat ja ekrāns to pieprasa.
  • Pirms katras publicēšanas katra loma tiek pārbaudīta uz izolētas datubāzes kopijas.

Problēma

Revīzijas uzņēmums klientus, projektus un darbinieku stundas uzskaitīja rīkā, kurā ikviens varēja atvērt jebkuru klientu un visu cilvēku laiku.

Diagnoze

Piekļuves kontrole klusi sabrūk, ja tā atrodas ekrānā, tāpēc katram noteikumam bija jāatrodas datubāzē, un to apliecina testi.

Izvērtētās iespējas

  1. Katra loma redz citus datus. Kur atrodas piekļuves noteikumi?

    Izvēlēts

    Pašā datubāzē, pārbaudīti katrai lomai pirms katras izlaides

    Ekrāns nevar nopludināt to, ko datubāze liedz. Cena: testu palaišana uz izolētas kopijas pirms katras publicēšanas.

    • Noraidīts

      Tikai ekrānos

      Cilvēks varēja redzēt vai mainīt datus, ko ekrāns bija paredzējis slēpt.

  2. Ieraksts vairs nav vajadzīgs. Vai to dzēst, vai paturēt?

    Izvēlēts

    Arhivēt un anonimizēt

    Laika uzskaites vēsture paliek neskarta.

    • Noraidīts

      Dzēst tos

      Dzēšana kaskādē izdzēš laika uzskaites vēsturi.

Risinājums

Vienas lapas tīmekļa lietotne uz pārvaldītas Postgres. Katrs piekļuves noteikums atrodas datubāzē, un pirms katras izlaides to apliecina automātiska lomu matrica.

Lietotne
  • React
  • Vite
  • TanStack Router
  • TanStack Query
  • shadcn/ui
  • Chart.js
Dati un drošība
  • Supabase
  • PostgreSQL row-level security
  • Edge Functions (Deno)
Mitināšana
  • Cloudflare
Kvalitāte
  • GitHub Actions
  • Role-matrix tests
  • Vitest
  • Property-based tests
  • Accessibility tests

Skaitļi: Automātiska lomu pārbaude, 2026-09-25