Backend podsistemi¶
Ovaj dokument opisuje backend podsisteme i šta svaki od njih treba da radi. Cilj je da implementacija bude podeljena na jasne celine, bez mešanja uređajskog API-ja, administracije, obračuna i skladištenja telemetrije.
1. Identitet i pristup¶
Ovaj podsistem upravlja korisnicima i pravima pristupa.
Treba da podrži:
- administratorske naloge,
- servisne naloge,
- korisničke naloge,
- uloge i dozvole,
- login i refresh token,
- audit log za kritične akcije.
Predložene uloge:
| Uloga | Prava |
|---|---|
admin |
Puna administracija sistema. |
operator |
Upravljanje korisnicima, ugovorima, tarifama i računima. |
service |
Servisni pregled uređaja, dijagnostika i reset određenih stanja. |
viewer |
Pregled podataka bez izmena. |
customer |
Pregled sopstvene potrošnje i računa. |
2. Registar uređaja¶
Registar uređaja čuva identitet svakog Strujomerko uređaja.
Treba da sadrži:
- serijski broj,
- model i hardversku reviziju,
- firmware verziju,
- status uređaja,
- claim code ili provisioning status,
- vezu ka korisniku, lokaciji ili ugovoru,
- vreme poslednjeg javljanja,
- trenutno poznatu konfiguracionu reviziju.
Statusi uređaja mogu biti:
manufactured,claimed,active,suspended,retired,service_required.
3. Prvo povezivanje uređaja¶
Provisioning povezuje fizički uređaj sa backend zapisom i izdaje uređajski token.
Tipičan tok:
- Fabrika kreira uređaj u backend-u ili generiše claim code.
- Uređaj šalje bootstrap zahtev sa serijskim brojem i claim code-om.
- Backend proverava da li je uređaj poznat i dozvoljen.
- Backend vraća
device_id,meter_id, uređajski token i početnu konfiguraciju. - Uređaj čuva token u NVS-u i koristi ga za dalju komunikaciju.
4. Telemetrija¶
Telemetrijski podsistem prima merenja i statusne informacije.
Treba da radi:
- validaciju uređajskog tokena,
- proveru schema verzije,
- proveru redosleda sekvenci,
- deduplikaciju ponovljenih paketa,
- čuvanje sirovog payload-a,
- normalizaciju merenja,
- izračunavanje agregiranih podataka,
- upis događaja i alarma.
5. Konfiguracija uređaja¶
Backend mora uređaju slati konfiguraciju kroz verzionisani ugovor.
Konfiguracija može obuhvatiti:
- interval slanja telemetrije,
- heartbeat interval,
- backend endpoint-e,
- tarifnu konfiguraciju,
- vremensku zonu,
- servisna ograničenja,
- feature flag-ove,
- komande koje uređaj treba da izvrši.
Svaka konfiguracija mora imati reviziju. Uređaj treba da prijavi koju reviziju koristi.
6. Tarife¶
Tarifni podsistem čuva planove, vremenske opsege, cene i pravila.
Uređaju se šalje samo operativni deo koji je potreban za lokalni izbor aktivne tarife. Cene i obračunska pravila ostaju na backend-u.
7. Obračun¶
Obračunski podsistem koristi verifikovanu telemetriju i tarifne planove za izradu računa.
Treba da podrži:
- obračunske periode,
- ručno i automatsko generisanje računa,
- stavke računa,
- poreze i naknade,
- korekcije,
- status računa,
- audit verifikaciju potrošnje.
8. Događaji i alarmi¶
Događaji služe za servisni i operativni nadzor.
Tipični događaji:
- tamper otvoren,
- tamper latch obrisan,
- power-fail,
- emergency save,
- uređaj offline,
- modem greška,
- merenje u grešci,
- reset brojača,
- zastarela konfiguracija,
- drift sata.
9. Administratorski portal¶
Admin portal treba da omogući:
- pregled uređaja,
- pregled korisnika i ugovora,
- pregled telemetrije,
- servisne akcije,
- upravljanje tarifama,
- generisanje računa,
- pregled alarma,
- audit log.
10. Korisnički portal¶
Korisnički portal treba da prikaže:
- trenutnu i istorijsku potrošnju,
- potrošnju po tarifama,
- statuse uređaja relevantne korisniku,
- račune,
- obaveštenja i upozorenja.