Prejsť na obsah

Sledovanie času v audítorskej firme

Sledovanie projektov a hodín zamestnancov pre audítorskú firmu · Vytvorené od nuly, samostatne

Aktualizované

Predtým

Klienti, projekty a hodiny boli na jednom mieste, kde mohli všetci vo firme vidieť a meniť všetko.

Potom

87

políčka oprávnení dokázané voči databáze pred každým nasadením; 30 nerobilo nič a boli skryté.

Ako to funguje
  1. 1Človek:Vlastník

    Vytvára roly so zaškrtávacími políčkami pre jednotlivé oblasti (klienti, projekty, čas, reporty) na zobrazenie, vytváranie, úpravu a mazanie.

  2. 2Človek:Zamestnanec

    Zapisuje hodiny ku klientovi, projektu a úlohe, alebo si zadá voľno.

    Softvér:Webová aplikácia

    Pripomenie každému, kto má pred termínom stále prázdny výkaz hodín.

  3. 3Človek:Správca projektu

    Schvaľuje alebo zamieta týždenný výkaz hodín svojho projektového tímu.

  4. 4Softvér:Databáza

    Každému ukáže iba to, čo mu rola dovoľuje: zamestnanci vidia svoje hodiny, správcovia projektov svoj tím, vlastníci každého klienta.

  5. 5Človek:Vlastník

    Číta hodiny podľa klienta, projektu a osoby v dashboardoch a reportoch.

Platí vždy

  • Predtým mohol každý vo firme otvoriť každého klienta a hodiny všetkých ostatných. Teraz databáza odmietne všetko, čo rola nepovoľuje, aj keď si to vyžiada obrazovka.
  • Pred každým pushom sa každá rola testuje na izolovanej kópii databázy.

Problém

Audítorská firma viedla klientov, projekty a hodiny zamestnancov v nástroji, kde mohol každý otvoriť každého klienta aj čas všetkých ostatných.

Diagnóza

Riadenie prístupu zlyháva nenápadne, keď žije na obrazovke, takže každé pravidlo muselo žiť v databáze a byť dokázané testami.

Varianty, ktoré som zvažoval

  1. Každá rola vidí iné dáta. Kde žijú pravidlá prístupu?

    Zvolené

    Priamo v databáze, testované pre každú rolu pred každým nasadením

    Obrazovka nemôže prezradiť to, čo databáza odmietne. Cena: testovací beh na izolovanej kópii pred každým pushom.

    • Zamietnuté

      Iba na obrazovkách

      Človek mohol vidieť alebo meniť dáta, ktoré mala obrazovka skryť.

  2. Záznam už nie je potrebný. Zmazať ho alebo ponechať?

    Zvolené

    Archivovať a anonymizovať

    História výkazov hodín zostane neporušená.

    • Zamietnuté

      Zmazať ich

      Mazanie kaskádovo odstráni históriu výkazov hodín.

Riešenie

Jednostránková webová aplikácia nad spravovaným Postgresom. Každé pravidlo prístupu žije v databáze a pred každým nasadením ho dokazuje automatická matica rolí.

Aplikácia
  • React
  • Vite
  • TanStack Router
  • TanStack Query
  • shadcn/ui
  • Chart.js
Dáta a bezpečnosť
  • Supabase
  • PostgreSQL row-level security
  • Edge Functions (Deno)
Hosting
  • Cloudflare
Kvalita
  • GitHub Actions
  • Role-matrix tests
  • Vitest
  • Property-based tests
  • Accessibility tests

Čísla: Automatická kontrola rolí, 2026-09-25