Siirry sisältöön

Tilintarkastusyhtiön työajanseuranta

Projektien ja henkilöstön työajan seuranta tilintarkastusyhtiön käyttöön · Rakennettu alusta alkaen, yksin

Päivitetty

Ennen

Asiakkaat, projektit ja tunnit olivat yhdessä paikassa, jossa kaikki yrityksessä näkivät ja muokkasivat kaikkea.

Jälkeen

87

käyttöoikeusruutua todistettu tietokannalla ennen jokaista julkaisua; 30 tyhjää ruutua piilotettiin.

Näin se toimii
  1. 1Ihminen:Omistaja

    Rakentaa roolit valintaruuduilla alueittain (asiakkaat, projektit, työaika, raportit) katselua, luontia, muokkausta ja poistoa varten.

  2. 2Ihminen:Työntekijä

    Kirjaa tunnit asiakkaalle, projektille ja tehtävälle tai merkitsee poissaolon.

    Ohjelmisto:Verkkosovellus

    Muistuttaa jokaista, jonka työaikakirjaus on vielä tyhjä ennen määräaikaa.

  3. 3Ihminen:Projektin ylläpitäjä

    Hyväksyy tai hylkää viikon työaikakirjauksen oman projektitiiminsä osalta.

  4. 4Ohjelmisto:Tietokanta

    Näyttää jokaiselle vain sen, minkä hänen roolinsa sallii: työntekijät näkevät omat tuntinsa, projektin ylläpitäjät tiiminsä, omistajat jokaisen asiakkaan.

  5. 5Ihminen:Omistaja

    Lukee tunnit asiakkaan, projektin ja henkilön mukaan dashboardeilta ja raporteista.

Aina päällä

  • Aiemmin jokainen yrityksessä pystyi avaamaan jokaisen asiakkaan ja kaikkien tunnit. Nyt tietokanta kieltää kaiken, mitä rooli ei salli, vaikka näkymä sitä pyytäisi.
  • Ennen jokaista pushia jokainen rooli testataan tietokannan eristettyä kopiota vasten.

Ongelma

Tilintarkastusyhtiö hallinnoi asiakkaitaan, projektejaan ja henkilöstön tunteja työkalussa, jossa jokainen pystyi avaamaan jokaisen asiakkaan ja kaikkien työajat.

Diagnoosi

Käyttöoikeuksien hallinta pettää huomaamatta, kun se on näkymässä. Siksi jokaisen säännön piti olla tietokannassa ja todistettu testeillä.

Punnitsemani vaihtoehdot

  1. Jokainen rooli näkee eri tiedot. Missä käyttöoikeussäännöt sijaitsevat?

    Valittu

    Itse tietokannassa, testattuna jokaiselle roolille ennen jokaista julkaisua

    Näkymä ei voi vuotaa sitä, minkä tietokanta kieltää. Hinta: testiajo eristetyllä kopiolla ennen jokaista pushia.

    • Hylätty

      Vain näkymissä

      Käyttäjä saattoi nähdä tai muuttaa tietoja, jotka näkymän piti piilottaa.

  2. Tietuetta ei enää tarvita. Poistetaanko vai säilytetäänkö se?

    Valittu

    Arkistoidaan ja anonymisoidaan

    Työaikakirjausten historia säilyy eheänä.

    • Hylätty

      Poistetaan

      Poisto vie mukanaan myös työaikakirjausten historian.

Ratkaisu

Yksisivuinen verkkosovellus hallinnoidun Postgresin päällä. Jokainen käyttöoikeussääntö on tietokannassa, ja automaattinen roolimatriisi todistaa sen toimivaksi ennen jokaista julkaisua.

Sovellus
  • React
  • Vite
  • TanStack Router
  • TanStack Query
  • shadcn/ui
  • Chart.js
Data ja tietoturva
  • Supabase
  • PostgreSQL row-level security
  • Edge Functions (Deno)
Hosting
  • Cloudflare
Laatu
  • GitHub Actions
  • Role-matrix tests
  • Vitest
  • Property-based tests
  • Accessibility tests

Luvut: Automaattinen roolitesti, 2026-09-25