diff --git a/docs/asp-terminia/02-api-ugovor-firmware.md b/docs/asp-terminia/02-api-ugovor-firmware.md index 00c2e6c..9e02059 100644 --- a/docs/asp-terminia/02-api-ugovor-firmware.md +++ b/docs/asp-terminia/02-api-ugovor-firmware.md @@ -68,5 +68,32 @@ HTTP ≠ 200 → firmware čita JSON polje `"error"` i prikazuje ga korisniku uz |---|---|---| | P1 | Tačna formula `machine_fingerprint` u Go kodu (ulazni string, velika/mala slova, dvotačke?) | ⬜ proveriti u kodu servera | | P2 | Da li `activate` na VEĆ aktiviran ključ + ISTI fingerprint vraća licencu ponovo (re-aktivacija posle brisanja NVS) ili `ALREADY_ACTIVATED`? Za teren nam treba: isti uređaj sme ponovo. | ⬜ proveriti/podesiti | -| P3 | Tačan skup polja `license` objekta za ASP proizvod (limits/features imena) | ⬜ definisati uz Z1 | +| P3 | Tačan skup polja `license` objekta za ASP proizvod (limits/features imena) | ✅ odgovoreno uz Z1 (2026-07-25) — vidi ispod | | P4 | `expires_at` format (ISO8601?) — firmware poredi prvih 10 znakova (`YYYY-MM-DD`) | ⬜ potvrditi | + +### Odgovor P3 (2026-07-25) + +Server čuva `limits`/`features` kao `json.RawMessage` — **ne tumači ih, samo +ih potpisano vraća** (potvrđeno čitanjem `internal/model/license.go`, +`internal/model/request.go`). Firmware (ASP-TERMINIA repo, `licenca.cpp`) +**trenutno uopšte ne čita ova dva polja** — parsira samo `edition`, +`customer`/`customer_name`, `expires_at`, `grace_days`, +`machine_fingerprint`. Enforcement (kad `features`/`limits` postanu bitni) je +odložen na Z4. + +Zaključak: format nije bio ni bitan za Z1/Z2 (bez FW koda koji ga čita, ništa +se ne lomi bilo kojim izborom). Proizvod `ASP-TERMINIA` je zaveden +(`migrations/004_seed_asp_terminia.sql`) sa **placeholder** vrednostima: + +```json +"limits": {"max_readers": 4, "max_cards": 5000} +"features": ["FEAT_CARDCHECK", "FEAT_ISSUE", "FEAT_PRINT", "FEAT_CATALOG", "FEAT_ANTIPASS", "FEAT_SYNC", "FEAT_OTA"] +``` + +`features` su imena iz ASP repo `docs/18-licenciranje-po-mac.md` §6.3 (string +nizovi, ne bitmaska — server ionako ne tumači, a string nizovi su čitljiviji +u dashboardu i lakši za FW proveru kad enforcement dođe: `"FEAT_X" in niz` +umesto bitmaske). **Ovo NIJE konačna odluka o paketima** (basic/pro) — vlasnik +to još nije odlučio; svaka izdata licenca nosi svoje `limits`/`features` +nezavisno od default-a proizvoda, pa se default sme promeniti kasnije bez +posledica po već izdate licence.