Opis za rad
Node 22 + Express 4, baza je SQLite preko `sql.js` (jedan fajl), nalazi i dokazi su append-only JSONL. Novo lice je statički HTML/CSS/JS bez build koraka — servira ga isti proces ispod `/novi`.
Kako se pokreće
npm ci # 29 zavisnosti PORT=3100 node server.js # normalan rad (baza database.sqlite) # demo režim (sintetički podaci, bez prave baze) SEOGEO_DEMO=1 SEOGEO_DATA_DIR=data-demo PORT=3100 node server.js node data-demo/seed-demo.mjs http://127.0.0.1:3100 # napuni demo node _qa/smoke.mjs # 18/18 provera (testovi) node ui/build-pages.mjs # regeneriši landing i opis
API
| metod | putanja | šta radi |
|---|---|---|
GET | /api/novi/pregled | klijenti + nalazi + dokazi + šta čeka (jedan ulaz kokpita) |
GET | /api/novi/klijenti | lista klijenata (demo ili baza) |
GET | /api/novi/nalazi?klijentId= | nalazi sa izvorom i hashom |
POST | /api/novi/nalazi | upis nalaza — server računa hash |
GET | /api/novi/dokazi?klijentId= | dokazi pre → posle |
POST | /api/novi/dokazi | upis dokaza za nalaz |
GET | /api/novi/summary?klijentId= | koliko nalaza, koliko dokazano |
GET | /api/health | da li radi (postojeća ruta) |
Podaci
- database.sqlite — klijenti i stanje (u demou se ne koristi)
- data/nalazi.jsonl i data/dokazi.jsonl — append-only, sa hashom
- data-demo/ — sintetički klijenti, nalazi i dokazi za demo
- ui/ — novo lice (Pregled, Klijent, stranice) + pages.mjs koji ih generiše
Ograničenja — šta ovaj demo ne radi
- Testovi pokrivaju tri novčane staze (18 provera: nalazi, dokazi, objave, HTTP); dijelovi mašine van tog kruga se proveravaju ručno.
- Objava popravke nije automatizovana: mašina pravi nacrt, čovek objavljuje (ili Full Vidljivost preko reda za objavu).
- Demo nema autentikaciju i radi na sintetičkim podacima; prava baza se ne izlaže.
- Stari ekrani (radni sto, analitika, v11, v15) i dalje postoje na svojim adresama — novo lice ih ne gasi.
Kako se postavlja
Jedan Node proces iza nginx-a, systemd servis, Let’s Encrypt, demo režim kroz env. Recept: E:\poslovi\DEMO-REGISTAR.md.
Demo ne troši novac na model: režim je sintetički, ključevi nisu postavljeni.