Audito įmonės laiko apskaita
Audito įmonės projektų ir darbuotojų laiko apskaita · Sukurta nuo nulio, dirbant vienam
Atnaujinta
Prieš
Klientai, projektai ir valandos buvo vienoje vietoje, kur visi įmonėje galėjo viską matyti ir keisti.
Po
87
leidimų langelių, įrodytų su duomenų baze prieš kiekvieną diegimą; 30, kurie nieko nedarė, paslėpti.
- 1Žmogus:Savininkas
Kuria roles su žymimaisiais langeliais kiekvienai sričiai (klientai, projektai, laikas, ataskaitos) peržiūrai, kūrimui, redagavimui ir ištrynimui.
- 2Žmogus:Darbuotojas
Registruoja valandas pagal klientą, projektą ir užduotį arba pasižymi laisvadienį.
Programinė įranga:Žiniatinklio programaPrimena kiekvienam, kurio laiko žiniaraštis prieš terminą vis dar tuščias.
- 3Žmogus:Projekto administratorius
Tvirtina arba atmeta savaitės laiko žiniaraštį savo projekto komandai.
- 4Programinė įranga:Duomenų bazė
Parodo kiekvienam tik tai, ką leidžia jo rolė. Darbuotojai mato savo valandas, projektų administratoriai savo komandą, savininkai visus klientus.
- 5Žmogus:Savininkas
Skaito valandas pagal klientą, projektą ir asmenį dashboard'uose ir ataskaitose.
Veikia visada
- Anksčiau kiekvienas įmonėje galėjo atidaryti bet kurį klientą ir visų valandas. Dabar duomenų bazė atmeta viską, ko rolė neleidžia, net jei to prašo ekranas.
- Prieš kiekvieną kodo įkėlimą (push) kiekviena rolė yra išbandoma izoliuotoje duomenų bazės kopijoje.
Problema
Audito įmonė vedė klientus, projektus ir darbuotojų valandas įrankyje, kuriame kiekvienas galėjo atidaryti bet kurį klientą ir visų žmonių laiką.
Diagnozė
Prieigos kontrolė tyliai sugenda, kai ji įgyvendinta ekrane, todėl kiekviena taisyklė turėjo būti duomenų bazėje ir įrodyta testais.
Svarstyti variantai
Kiekviena rolė mato skirtingus duomenis. Kur saugomos prieigos taisyklės?
Pasirinkta
Pačioje duomenų bazėje, išbandytos kiekvienai rolei prieš kiekvieną diegimą
Ekranas negali nutekinti to, ko duomenų bazė neleidžia. Kaina: testų paleidimas izoliuotoje kopijoje prieš kiekvieną kodo įkėlimą (push).
Atmesta
Tik ekranuose
Žmogus galėjo pamatyti ar pakeisti duomenis, kuriuos ekranas turėjo paslėpti.
Įrašas nebereikalingas. Ar jį ištrinti, ar saugoti toliau?
Pasirinkta
Suarchyvuoti ir anonimizuoti
Laiko žiniaraščių istorija lieka nepaliesta.
Atmesta
Ištrinti
Ištrynimas kaskadiškai sunaikina laiko žiniaraščių istoriją.
Sprendimas
Vieno puslapio žiniatinklio programa valdomame Postgres. Kiekviena prieigos taisyklė apibrėžta duomenų bazėje ir prieš kiekvieną diegimą įrodoma automatine rolių matrica.
- Programa
- React
- Vite
- TanStack Router
- TanStack Query
- shadcn/ui
- Chart.js
- Duomenys ir sauga
- Supabase
- PostgreSQL row-level security
- Edge Functions (Deno)
- Talpinimas
- Cloudflare
- Kokybė
- GitHub Actions
- Role-matrix tests
- Vitest
- Property-based tests
- Accessibility tests
Susijusios paslaugos
Skaičiai: Automatinis rolių patikrinimas, 2026-09-25