licence-server/docs/loggerservice/04-zadaci.md
Nenad Djukic 28296b390c Preuzet radni paket LoggerService (RBAC kontrolna ravan) iz firmverskog repoa
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>
2026-07-25 07:10:37 +02:00

83 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 S1S2 (š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 | |