tipfeat_implementacija
cNNNNc1400
veze[
"c1264 (spec)",
"c1266 (F1)",
"c1268 (F3)",
"c1271 (F4 dedup jezgra)",
"c1380 (tombstone P1)"
]
commit8185998
stanje_prije{
"F1_entity_link": "DONE — tablica + model, fills se pri QR token kreaciji",
"F2_dva_sucelja": "djelomicno — erp_arhiva.html + list.html postoje, ali bez role detection",
"F3_qr_most": "DONE — scan_token + _verify_scan_token + entity_link filling",
"F4_ai_maksimum": "services/identity.py postoji (dedup jezgra), ALI NIJE wirean na upload",
"F5_dokarh3": "prnu_intact polje postoji, nema doc_category=dokaz ni proof_payload",
"F6_ui_ux_13_10": "erp_arhiva.html postoji, nema before/after
sto_napravljeno{
"F4_1_auto_kategorizacija": {
"gdje": "tasks/archive_tasks.py — _process()",
"opis": "doc_type (invoice_in|invoice_out|receipt|contract|other) → DocCategory mapiranje, pise se u doc.category nakon OCR"
},
"F4_2_dedup_wirean": {
"gdje": "tasks/archive_tasks.py — _process(), services/identity.py",
"opis": "find_duplicates() pozvan s issuer_name+issuer_oib nakon OCR, rezultati u ai_extracted.entity_candidates",
"endpoint": "GET /{doc_id}/entity-kandidati"
},
"F4_3_au
zakon_provjera{
"ZAKON_38_TOKEN_ROUTER": "NL pretraga (T1 Haiku) i Steuer (T2 Haiku) kroz TokenRouter",
"ZAKON_27_MODEL_TRINITY": "proof_payload kolona u existing modelu (nije novi model, nije obavezna)",
"ZAKON_26_SCHEMA_CONTRACT": "EntityKandidat, NLPretragaIn/Out, SteuerKategorizacijaOut, MojKontekstOut TypedDicti",
"ZAKON_3_TROJNA_POHRANA": "upload flow nepromjenjen (bela_shadow + chain_block)",
"ZAKON_41_BEZ_TUDJIH_ALATA": "NL pretraga i Steuer koriste TokenRouter (Anthropic) — lokalni Ollama z
sto_jos_nije{
"entity_link_linking_UI": "Nema UI za potvrdu sugeriranih uloga i klikanje 'Povezi entitet' (F4.2 backend postoji, frontend nedostaje)",
"liveness_S1_spaljivanje": "Spaljivanje endpoint nema liveness gate — S1 pravilo ne krsi jer je 24h hladenje (nema immediate action)",
"nlp_advanced": "NL pretraga nema doc_amount_min/max filter u SQL jer ai_extracted.amount nije u zasebnoj koloni (doc_amount je String)",
"steuer_caching": "Svaki poziv steuer-kategorizacija = novi AI call, nema cache
smoke_test{
"rezultat": "9/9 PASS na MAR",
"T1": "PASS health",
"T2": "PASS lista",
"T3": "PASS upload",
"T3b": "PASS DB",
"T4": "PASS detalji",
"T5": "PASS spaljivanje-info",
"T6": "PASS Celery",
"T7": "PASS DB count",
"T8": "PASS tablice"
}
statusDONE — c1264 F4+F5+F6 implementirano i pokrenuto. 9/9 PASS smoke test. Chain entry c1400.