HR Product Health Review — 2026-07-11 (MC #105260) MC #105260 — Bilko HR Product Health Review — SINTEZA za CEO Datum: 2026-07-11 | Reviewers: bilko-racunovodstvo-hr (lead) + bilko-porez-fiskalizacija-hr | John verifikacija spornih nalaza live probama Executive verdikt Jezgro je zdravo. Ljuska nije spremna za prodaju bez 5 fixeva. Knjigovodstveno jezgro: dvojno knjiženje RADI (John live probe: e2e org, jun P&L 3750 EUR, debit/credit konta ispravna), RRiF kontni plan, NUMERIC(19,4), KIR/KPR ispravni, PDV matematika tačna, OIB checksum ispravan, bilanca invarijanta drži. Porezni verdikt (bilko-porez-fiskalizacija-hr): "NE smije se prodavati HR firmama bez ograde" — uslovi za DA dolje. Nalazi — konsolidovano i rangirano CRITICAL (zakonski rizik / blokira prodaju) PDV filing period hardkodiran kvartalno (PluginHR.getFilingDeadlines) — mjesečni obveznici (iznad praga, čl.85 ZPDV) dobili bi POGREŠAN ROK → rizik kazne klijentu. [porez #1] Nema server-side whitelist PDV stope — taxRate prima bilo šta, tiho truje PDV izvještaj. [porez #2] HIGH Demo-seed zaobilazi knjiženje → demo/trial org ima fakture bez GL zapisa → P&L=0 → svaki trial korisnik zaključi da je proizvod pokvaren. (John reklasifikovao s P0: runtime je ispravan, seed je bug.) [rač #1 + John probe] Dashboard bez period parametra (ReportService.kt:31, hardkodiran tekući mjesec) — CEO-ov trigger nalaz; uneseni stariji račun "nestane" s glavnog ekrana. [rač + CEO] B2G eRačun ne postoji (obaveza za javni sektor od 2019) — ili implementirati ili eksplicitni disclaimer "bez javnog sektora". [porez #3] Generic 404 vraća "Invoice not found" (BILKO-INV-001) za SVE rute — zbunjuje korisnike i mobile tim. [rač #2] MEDIUM Expense kategorije freetext umjesto RRiF konta (accountId nullable, ne popunjava se uvijek). [rač #3] buyerOib se ne preuzima automatski s kupca + einvoiceReadiness se ne prekalkuliše poslije create. [porez live] Retention period kontradikcija: kod tvrdi 11 god (NN 78/2015), dokument kaže UNVERIFIED — pravno raščistiti. [porez] HrEInvoiceServiceTest: 20 padova (test-šema drift o.deleted_at) + PluginHRTest 3 UBL pada = LAŽNI ALARM (osirotjeli test mrtve grane; produkcijski UBL put ispravan) — test dug čisti CI signal. [porez bonus] META (proces) USER-STORIES.md je Srbija-scoped — HR tržište NEMA formalne story-je (samo 2 placeholder ćelije). Review rađen na kod+API. HR story backlog treba napisati. [porez metod] Agent-dizajn bez product review-a (MTD odluka) — persona-review gate prije shipa user-facing feature-a (ide u #105241 proces lekcije). Minimum za "smije se prodavati" (B2B SMB, bez javnog sektora) Fix #1 mjesečno/kvartalno razlikovanje Fix #2 PDV rate whitelist {25,13,5,0} Fix #3 demo-seed kroz servisni sloj (trial kredibilitet) HrEInvoiceServiceTest šema fix (da issue/submit tok bude CI-dokaziv) Eksplicitan B2G disclaimer + retention pravna potvrda Skorovi Računovodstvo: PASS 8 / GAP 5 / FAIL 2 (15 testabilnih; 3 van read-only opsega) Porez: 9 verdikt stavki (tabela u porez fajlu); HR formalne stories ne postoje Puni izvještaji: racunovodstvo-hr-review.md (131 l.) + porez-fiskalizacija-hr-review.md (173 l.) Fix status — 2026-07-12 Talas 1 + 2a (CRITICAL/HIGH nalazi iz reviewa) — MERGED na azdo/main , potvrđeno git merge-base --is-ancestor azdo/main 2026-08-08. MC # Nalaz PR Commit Verdikt Evidence #105271 CRITICAL-1 PDV filing period (mjesečno/kvartalno) PR 97 b7e04fef PARTIAL — setting + oba perioda testirana OK, ali PluginHR.getFilingDeadlines() bez callera van testova na živoj ruti → wiring gap (vidi #105317 ispod) ~/system/evidence/105271/verdict-105271.json #105272 CRITICAL-2 PDV rate whitelist {25,13,5,0} PR 97 b7e04fef PASS ~/system/evidence/105272/verdict-105272.json #105273 HIGH-3 Demo-seed kroz servisni sloj (GL backfill) PR 98 2f644346 PASS — live P&L probe 6500 EUR; usput otkrio BUG-C i BUG-D (out-of-scope, praćeno posebno) ~/system/evidence/105273/verdict-105273.json #105261 CI gap — blokirajući Kotlin compile gate u PR validaciji PR 99 a48cb045 PASS (statička YAML verifikacija gate_kotlin_compile) ~/system/evidence/105261/verdict-105261.json #105269 HR eRačun rabat — cac:AllowanceCharge u UBL PR 101 a0af66eb PASS — 39/39 testova; DB+UBL emisija gotova, UI wiring ostaje (vidi #105309 ispod) ~/system/evidence/105269/verdict-105269.json Napomena o mapiranju: peti commit naveden uz PR listu u naslovu ovog taska ( d42817fa ) NIJE #105269 nego #105278 (HIGH-7 HR story backlog — USER-STORIES-HR.md , 707 linija/21 stories, PASS, merge d42817fa , ~/system/evidence/105278/verdict-105278.json ). #105269 je isporučen kroz a0af66eb (PR 101). Ispravljeno ovdje da se izbjegne identifier-mismatch greška. Follow-up status (ažurirano 2026-08-08) Originalni tekst ovog taska (kreiran 2026-07-12) je #105317 i #105284 zvao "otvoreni follow-upi" — stanje se od tada promijenilo, oba su danas merge-ovana: MC # Šta Status danas Verdikt/Evidence #105317 Wiring gap iz #105271 — ComplianceCalendarService na živoj ruti /compliance/deadlines sad čita org pdv_filing_period umjesto hardkodiranog monthly DONE, MERGED na azdo/main ( 85855216 ) Peer verify PASS (26+28+9 testova, 0 fail) + statutarna validacija PARTIAL-bez-blokera (novi follow-up #105377 za GA pitanja). ~/system/evidence/105317/verdict-105317-ready.json #105284 BUG-C iz #105273 — deterministički account lookup (V97 migracija dala LIKE-prefiks sudare 10%/12%/6%) DONE, MERGED na azdo/main ( 20c6b6fa ) Peer verify PASS, repro dokazan 4/8→8/8 + regresije 46/46+31/31+5/5 (novi follow-up #105375 za ASC fallback granu). ~/system/evidence/105284/verdict-105284-ready.json #105309 eRačun rabat DTO/UI wiring iz #105269 — invoice create/edit API i web UI još nemaju discount polje I DALJE OTVOREN — status in_progress, re-opened na backlog/L (stale-task-escalator 2026-08-08, nema owner aktivnosti) Nema evidence dir — rad nije počeo #105285 BUG-D iz #105273 — BA_FED plugin revenue-konto 4000 vs hardkodirani LIKE '6%' u InvoiceService I DALJE OTVOREN — status paused, backlog/L Nema evidence dir — rad nije počeo Napomena: i #105317 i #105284 su u svom "ready" izvještaju (2026-07-12) imali napomenu "push/PR pending keychain unlock" — to je od tada razriješeno; oba commita ( 85855216 , 20c6b6fa ) su danas potvrđeno na azdo/main (git log 2026-08-08: azdo/main HEAD = c7245a16 , 2026-08-07). Parent review: MC #105260. Ovaj docs task: MC #105318.