# Zadaci (redom; svaki sa kriterijumom prihvatanja) > ⚠️ **AŽURIRANO 2026-07-24 uveče:** vizija je proširena — LoggerService je > aplikacija za servisne firme (vidi `00-vizija-i-mvp.md`, MERODAVNO). Zadaci > ispod važe uz izmene: S1 šema se širi jezgrom (oprema/klijenti/nalozi/ > zaduženja/zalihe), S4 „dashboard" = MVP aplikacije (jezgro + tok > klijent→nalog→oprema→istorija), modul „Uređaji" = toggle po firmi, minimalno: > lista+status+dodela FW (više FW proizvoda!) + direktna veza na licencni server. > Koordinacija: zadaci S1–S2 (šema) idu POSLE [`docs/asp-terminia/03-zadaci.md`](../asp-terminia/03-zadaci.md) Z1 > (ASP proizvod) da se ne sudaraju migracije — ili u dogovoru sa tim agentom > (isti `migrations/` folder, numeracija se nastavlja). > **Svaki write na produkciju: backup + izričita dozvola (05-pravila-rada.md).** ## S1 — Migracije RBAC šeme (pun model odmah) **Šta:** migracije za tabele iz `01-rbac-model.md`: `orgs`, `users` (proširenje ili nova, zavisno od postojeće admin auth šeme — PROVERITI šta postoji), `devices`, `entitlements`, `service_grants`, `sale_grants`. Seed: koren `Terminia (vendor)` + org `DAL (kupac)` pod njim. **Prihvatanje:** migracije prolaze na kopiji baze pa na produkciji; postojeće tabele/podaci netaknuti; ER skica (tekstualna) u ovom folderu. ## S2 — Registracija razvojnog uređaja **Šta:** ubaciti razvojni terminal u `devices`: MAC `1C:DB:D4:A6:A4:60`, product_code ASP-Terminia, org DAL (ili test org), fw_verzija tekuća. **Prihvatanje:** red postoji; vidljiv u (privremenom) pregledu/upitu po podstablu. ## S3 — Heartbeat prijemnik **Šta:** UDP servis (Go, deo istog procesa ili poseban systemd unit) po `02-uredjaji-heartbeat-discovery.md` §2: prima JSON, upsert `devices` (fw/ip/poslednji_heartbeat), nepoznat MAC → tabela/lista „neregistrovani". Dbg tok (§3): upis u fajlove po MAC/danu sa rotacijom (logrotate ili u kodu). **Prihvatanje:** sa razvojnog uređaja (vlasnik podesi Podešavanja → Servis na javnu adresu:port) stiže heartbeat i `devices.poslednji_heartbeat` se pomera; status online/offline izračunljiv. ## S4 — Minimalni dashboard (LoggerService lice, inkrement 1) **Šta:** na postojeći htmx admin sloj dodati: lista org-stabla, lista uređaja (status/fw/heartbeat), lista neregistrovanih + dugme „usvoji u org". Vidljivost striktno po podstablu prijavljenog (invarijanta 2 iz 01). **Prihvatanje:** vlasnik (koren) vidi sve; test user u DAL vidi samo DAL podstablo. ## S5 — Service grants (inkrement 2) **Šta:** CRUD za `service_grants` + provera u middleware-u (serviser vidi/dira samo ciljeve granta, u roku važenja). Org tipa „serviser" + test serviser nalog. **Prihvatanje:** serviser nalog vidi TAČNO grantovane uređaje; posle isteka `vazi_do` — ništa. ## S6 — Katalog firmvera (posle Z6 potpisa) **Šta:** nginx `fw.terminia.net` statika (ili do domena: putanja na postojećem sajtu) + mozak-endpoint „daj mi URL za moju verziju" (MAC+licenca → potpisan kratkotrajni URL). Format manifesta USKLADITI sa firmware stranom pre implementacije. **Prihvatanje:** curl tok: uređaj-identitet → URL → download `.bin` + `.sig`; verifikacija potpisa javnim ključem prolazi. ## S7 — Model B alat (USB flešer) Po `03-provisioning-i-fw-katalog.md` §4. Može i ranije (nezavisan od servera). **Prihvatanje:** nova ploča → `terminia-setup` AP za <5 min, MAC ispisan. --- ## Zahtevi ka firmveru (dopisivati; radi firmware strana, ne ovaj agent) | # | Zahtev | Status | |---|---|---| | F1 | Heartbeat na JAVNU adresu: potvrditi UDP kroz NAT u realnom okruženju ili preći na HTTPS POST (upisati odluku) | ⬜ | | F2 | Manifest format za auto-OTA (bootstrap Model A) — dogovoriti polja | ⬜ | | F3 | (po potrebi) registracioni token pri prvom javljanju uređaja | ⬜ |