Paket je nastao u asp-terminia/licence/ ali je sav posao serverski, pa se seli ovde. Firmverska strana je gotova od FW 0.10.0 i ne dira se. - docs/asp-terminia/ - 6 dokumenata: postojece stanje servera i FW klijenta, tacan API ugovor koji firmware ocekuje, zadaci Z1-Z6 sa kriterijumima prihvatanja, pravila rada na produkciji, enforcement pitanja E1-E6 - reference prepravljene: "ASP repo" = https://git.terminia.net/djuka/asp-terminia (ranije su pokazivale na lokalnu putanju D:\priv\... koja vise ne postoji) - CLAUDE.md: sekcija o cetvrtom proizvodu + pokazivac na paket ASP-Terminia se od ESIR/ARV/LIGHT_TICKET razlikuje po tome sto je machine_fingerprint MAC cipa (eFuse), a uredjaj radi offline - mrezna greska ne sme da ga obori. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
42 lines
2.3 KiB
Markdown
42 lines
2.3 KiB
Markdown
# Pravila rada — PROČITATI PRE PRVOG SSH-a
|
|
|
|
> Server 151 je **PRODUKCIJA** sa živim klijentima (fiskalizacija ESIR, ARV,
|
|
> LIGHT_TICKET licence, terminia SaaS). Greška ovde košta prave korisnike.
|
|
|
|
## Tvrda pravila (bez izuzetka)
|
|
|
|
1. **Read-only dok se ne odobri write.** Istraživanje (čitanje koda, šeme,
|
|
nginx konfiga) je slobodno. SVAKI write na produkciju (SQL, fajl, nginx reload,
|
|
restart servisa) traži **izričito DA vlasnika za taj konkretan korak**.
|
|
2. **Backup pre svake izmene.** Minimum:
|
|
- baza: `mysqldump` ciljanih tabela (ili cele baze) u `/root/backup/` sa datumom;
|
|
- fajl/konfig: kopija sa `.bak-YYYYMMDD` sufiksom pre izmene.
|
|
U izveštaju navesti tačnu putanju backupa.
|
|
3. **Migracije, ne ad-hoc SQL.** Izmene šeme/podataka idu kao numerisan fajl u
|
|
`migrations/` (šablon = postojeće migracije), idempotentno gde je moguće.
|
|
4. **Tajne se ne diraju:** `.env`, privatni ključevi (`crypto/` osim `public.pem`),
|
|
lozinke — ne čitati sadržaj, ne ispisivati u logove/izveštaje. Ako je za posao
|
|
potreban admin API ključ — **tražiti od vlasnika**, ne vaditi ga iz `.env`.
|
|
5. **Ne dirati tuđe servise:** `terminia` SaaS (8091/8092), Gitea, ESIR — ni
|
|
konfiguraciju, ni bazu, ni portove. Nginx: menjati SAMO dodavanjem novih
|
|
server blokova; postojeći `arv` sajt ostaje kakav jeste.
|
|
6. **Nikad destruktivno:** bez DROP/DELETE nad postojećim podacima; bez rotacije
|
|
ključeva; bez gašenja servisa duže od reload-a.
|
|
7. **Kompatibilnost klijenata u polju:** serijalizacija `license` objekta i format
|
|
potpisa se NE menjaju (lome verifikaciju na uređajima). Nova polja se DODAJU,
|
|
postojeća se ne preimenuju.
|
|
|
|
## Kako se testira bez rizika
|
|
|
|
- Novi proizvod (ASP-Terminia) i test ključevi su IZOLOVANI redovi — ne dodiruju
|
|
postojeće. Test aktivacije gađaju samo ASP ključeve.
|
|
- Za probe API-ja koristiti `curl` sa test ključem; nikad tuđe ključeve.
|
|
- Ako postoji mogućnost lokalnog pokretanja (Go build + test MySQL šema) — poželjno
|
|
prvo lokalno, pa migracija na produkciju.
|
|
|
|
## Izveštavanje
|
|
|
|
Posle svake sesije: šta je pročitano, šta je menjano (tačne putanje/tabele),
|
|
gde je backup, šta je sledeće, otvorena pitanja za vlasnika. Odgovore na pitanja
|
|
upisivati u `02-api-ugovor-firmware.md` §5 i `05-enforcement-odluke.md`.
|