Paket je nastao u asp-terminia/serviseri/ ali je sav posao serverski (isti backend i baza kao ASP-Terminia licenciranje), pa se seli ovde - isto obrazlozenje i put kao docs/asp-terminia/. - docs/loggerservice/ - 7 dokumenata: vizija/MVP (merodavan dokument), ZAKLJUCEN RBAC model (stablo orgs, 4 role, invarijante, seme tabela), heartbeat/discovery formati koje uredjaj vec salje, provisioning i katalog firmvera, zadaci S1-S7, pravila rada na produkciji - reference prepravljene: "ASP repo" = https://git.terminia.net/djuka/asp-terminia, link ka docs/asp-terminia/ unutar istog repoa umesto stare "dal-license-server repo:" oznake - CLAUDE.md: sekcija LoggerService + koordinacija sa docs/asp-terminia/ (S1-S2 idu POSLE Z1 da se migracije ne sudare) Firmverska strana (svc.cpp, discovery/heartbeat) ostaje u ASP repou i ne dira se. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
83 lines
3.8 KiB
Markdown
83 lines
3.8 KiB
Markdown
# 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 | ⬜ |
|