Klikabilni prototip — mjesečni obračun sati po radniku

Nije produkcijska aplikacija. Podaci su izmišljeni i generišu se u browseru — ništa se nigdje ne šalje niti pamti. Norma, razlika, kumulativni saldo i godišnji se stvarno računaju.

Vodič kroz prototip

Ovo je klikabilni prototip novog ekrana za mjesečni obračun sati po radniku — norma, odrađeni sati, razlika, kumulativni saldo viška i manjka, te obračun dana godišnjeg odmora. Služi da se tok i računica isprobaju i odobre prije nego se piše kod.

izmišljeni podaci desktop-only bosanski (jezik mockupa) 123 radnika ništa se ne šalje ni pamti

Šta se stvarno računa

Brojke nisu nacrtane — prototip ih računa u browseru, po istim pravilima po kojima bi ih računala aplikacija. Zato se svaki broj na ekranu može provjeriti ručno.

Norma

Ponedjeljak–subota × 8.5 h. Nedjelja ne ulazi u normu, ali sati odrađeni nedjeljom se računaju u ukupne sate.
Norma se skraćuje na presjek [početak praćenja, datum zaposlenja, prestanak radnog odnosa, kraj mjeseca]. Provjera: pun oktobar 2026 = 229:30, septembar = 221:00, novembar = 212:30 (pet nedjelja).

Ukupno sati

Zbir svih zapisa u šihterici za taj mjesec — ručni unos, kiosk, učitano sa uređaja, sati nastali iz odsustva — bez obzira na vrstu sati. Nema računice „dani × 8.5" i nema liste priznatih vrsta. Svaki zapisani sat se priznaje.

Saldo

Početno stanje + zbir svih mjesečnih razlika od početka praćenja do uključivo odabranog mjeseca. Računa se u letu — nema tabele sa mjesečnim saldom i nema zaključavanja mjeseca.
Posljedica koju ekran izgovara naglas: ispravka ranijeg mjeseca mijenja saldo svih kasnijih.

Godišnji odmor

Prikazan u danima, ne u satima — jer dolazi iz evidencije odsustava, gdje je vrsta eksplicitna. Preneseno, iskorišteno i preostalo. Ne unosi se ovdje i ne vodi se paralelno — izvještaj ga samo čita.

Redoslijed za probu

  1. Otvorite dropdown Mjesec za 2026. — mjeseci prije septembra su onemogućeni, uz objašnjenje zašto se ne nude.
  2. Odaberite 2026 → Septembar. To je prvi praćeni mjesec, pa se ekran automatski otvara u režimu unosa početnog stanja.
  3. U kolonu Početno stanje upišite +5:00 ili -2:30 i gledajte kolonu Saldo desno — mijenja se dok kucate, i status reda se prevrne. Prihvata i 5, 5:30, −2:30; nerazumljiv unos daje crveno polje i blokira spašavanje.
  4. Postavi preostale na 0 → potvrda objašnjava zašto to dugme postoji → Sačuvaj početno stanje. Pratite brojač nesačuvanih izmjena u podnožju.
  5. Prebacite na Oktobar. Isto početno stanje sada ulazi u kumulativ, a kolona je samo prikaz — unos postoji jedino u prvom praćenom mjesecu.
  6. Kliknite na normu radnika koji nosi oznaku dio mjeseca — otvara se računica sa datumima, pa se vidi da razlika dolazi iz ugovora, a ne iz odrađenih sati.
  7. Kliknite na crvene i žute ikone uz imena — tri različita upozorenja, svako sa konkretnim koracima gdje se ispravlja.
  8. Uključite dva „samo …" filtera istovremeno. Nezavisni su i kombinuju se unijom; zbirni red i traka sažetka ostaju zbir cijelog mjeseca — i to piše.
  9. Izvezi u Excel — spinner, pa poruka koja imenuje broj radnika i naziv fajla.
Podaci se generišu deterministički: isti mjesec uvijek daje isti rezultat. Ako nešto izgleda pogrešno, dovoljno je reći koji mjesec i koji radnik — nalaz se ponovi 1:1. Dugme Počni ispočetka vraća sve na početak.

Primjeri koji su namjerno ugrađeni

Ovo nisu nasumični redovi — svaki od ovih slučajeva postoji u podacima da bi se vidjelo kako ga ekran tretira. Većina ih se nađe pretragom ili filterom Samo sa upozorenjem.

SlučajKako ekran reaguje
1Višak sati — odrađeno više od norme Zelena razlika sa strelicom gore, status višak. Znak nosi značenje: jedan potpisan broj, ne dvije kolone.
2Manjak sati Crvena razlika sa strelicom dolje, status manjak. Ulazi u filter Samo ispod norme.
3Tačno na normi 0:00 sa znakom jednakosti — ne prikazuje se kao „nula manjka", nego kao zasebno stanje.
4Zaposlen poslije početka praćenja Nema polje za početno stanje; umjesto njega piše od kojeg datuma praćenje počinje. Saldo mu kreće od nule — nema „prije".
5Prestanak radnog odnosa sredinom mjeseca Skraćena norma sa oznakom dio mjeseca; klik pokazuje računicu sa datumima. U narednom mjesecu red je siv, status nije zaposlen.
6Nijedan zapis u mjesecu Crveni red, 0:00 sa oznakom nema zapisa, razlika jednaka punoj normi. Iznad tabele stoji upozorenje sa uzrocima i dugmetom koje filtrira baš te redove.
7Negativan preostali godišnji Prikazuje se kako jeste — ne zaokružuje se na nulu i ne skriva. Popup daje računicu i kaže gdje se ispravlja.
8Bez unesenog datuma ugovora Puna norma + oznaka bez datuma. Popup upozorava da je manjak lažan ako je radnik stvarno zaposlen kasnije.
9Početno stanje nije uneseno Računa se kao 0:00, ali je red vidljivo označen i broj takvih radnika stoji u traci sažetka. Razlika između nula i nije uneseno ne smije biti nevidljiva.
10Mjesec prije početka praćenja Ne nudi se u izboru. Inače bi pokazao punu normu i nula sati — lažan manjak od cijelog mjeseca, za svakog radnika.
11Filtriran prikaz Zbirni red ostaje zbir cijelog mjeseca, i to je napisano iznad tabele. Filtriran zbir bi se pročitao kao ukupno stanje firme.
12Nerazumljiv unos početnog stanja Polje pocrveni, spašavanje se zaustavi i poruka pokaže prihvaćene formate — ne samo „neispravan unos".

Šta prototip pokriva od UI i UX-a

Vođenje, ne samo prikaz

  • Prazno stanje ne kaže samo „nema podataka" — nabraja tri koraka i objašnjava šta izvještaj sabira.
  • Obavezna polja su nedvosmislena: crvena zvjezdica i plavi rub dok nisu popunjena.
  • Info-dugmad su liberalno posijana — uz normu, saldo, početak praćenja, početno stanje i preostali godišnji.

Poruka bira formu po uzroku

  • Ne zna sljedeći korak → dijalog sa numerisanim koracima, ne poruka koja nestane.
  • Pogrešan unos → crveni rub na polju + kratka poruka sa pravilom.
  • Nepovratna radnja → potvrda koja objašnjava zašto radnja postoji.
  • Nijedno upozorenje ne staje na „nešto nije u redu" — svako imenuje ekran na kojem se ispravlja.

Filteri po jedinstvenom pravilu

  • Pretraga po imenu je uvijek prvi element, skroz lijevo.
  • Poništi filtere je dio filter-bara, nikad paginacije.
  • Višestruki odabir je jedan red: tekst + brojač + strelica, nikad gomila pločica.
  • Filteri „samo …" su nezavisni i kombinuju se unijom; svaki nosi brojač koliko redova pogađa.

Dvanaest kolona, čitljivo

  • Zaglavlje je grupisano u dva reda — sati, godišnji, bolovanje — svaka grupa svojom bojom i debljom linijom.
  • Jedinica stoji u zaglavlju grupe (h:mm naspram dana) — dvije jedinice u istoj tabeli su najveći izvor zabune.
  • Tabela skroluje horizontalno unutar svog okvira; stranica se ne pomjera.

Brojevi se čitaju kao brojevi

  • Sve brojke su mono font sa fiksnom širinom cifre, pa se kolone poravnaju i odstupanje se vidi bez čitanja.
  • Znak nosi značenje: + višak, manjak. Jedan potpisan broj umjesto dvije kolone.
  • Boja prati smjer odstupanja, a strelica ga ponavlja — ne oslanja se samo na boju.

Unos tamo gdje se koristi

  • Početno stanje se unosi u samom izvještaju, u redu radnika — bez skakanja na drugi ekran.
  • Kolona stoji odmah lijevo od salda: efekat se vidi u susjednoj ćeliji, odmah.
  • Editabilna je samo u prvom praćenom mjesecu — inače je prikaz.
  • Grupna akcija postoji da jedna svjesna odluka zamijeni desetine praznih polja.

Povratna informacija na svaku radnju

  • Spinner na učitavanju, spašavanju i izvozu — korisnik nikad ne pogađa je li aplikacija stala.
  • Poruka poslije radnje imenuje ishod: koliko radnika, koji fajl — ne samo „uspješno".
  • Uz naslov stoji trajanje učitavanja, pa se usporenje primijeti odmah.

Read-only, i to se vidi

  • Osim početnog stanja, ništa se sa ovog ekrana ne mijenja.
  • Svaki popup imenuje odredište — šihterica, odsustva, ugovori — pa korisnik ne traži dugme za izmjenu na pogrešnom mjestu.

Isti jezik kao ekran uvoza

  • Traka sažetka, oznake, filter-bar i mono brojevi identični su ekranu za učitavanje sati.
  • Dva ekrana koja obrađuju iste podatke ne smiju izgledati kao dva proizvoda.

Otvoreno pitanje za razgovor

Kolona Preostalo godišnjeg

Preneseno su dani iz prethodnog perioda, Iskorišteno je za odabrani mjesec. Pitanje je šta znači Preostalo:

  • (a) Preneseno − iskorišteno u tom mjesecu. Red je sam sebi dosljedan, ali broj je pogrešan od drugog mjeseca nadalje: radnik koji je dane potrošio u septembru u oktobru opet pokazuje puno stanje.
  • (b) Preneseno − iskorišteno od početka godine. Broj je tačan, ali Preostalo ≠ Preneseno − Iskorišteno na istom redu, pa traži objašnjenje.

Prototip računa (b) i objašnjava razliku popupom uz zaglavlje kolone. Prijedlog je da se (b) i zadrži — kolona se zove Preostalo, pa mora značiti stvarno preostalo stanje — uz to da se Iskorišteno prikaže kao „u mjesecu / ukupno", čime razlika prestaje da izgleda kao greška.

Šta prototip namjerno NE radi

  • Ne pamti ništa između učitavanja stranice — nema baze, nema servera, ništa se nigdje ne šalje.
  • Nema pravog izvoza — dugme pokazuje kako izgleda potvrda, ne pravi fajl.
  • Nema izmjene sati i odsustava — izvještaj je namjerno read-only.
  • Nema telefonskog rasporeda — ovo je back-office ekran za desktop.
  • Ne razbija sate na rad i odsustvo — dok se ne odluči koja se šifra sati računa kao rad a koja kao odsustvo, razbijanje bi bilo nagađanje.
  • Nema grafikona — ovo je operativni kontrolni ekran, ne upravljački izvještaj.

Podaci u prototipu su izmišljeni. Imena, odjeljenja, sati i datumi generisani su u browseru i ne odgovaraju nijednoj stvarnoj osobi ni firmi. Stranica ne šalje ništa nikuda i ne pamti unos — osvježavanje vraća sve na početak.