{"id":"c0983","filename":"c0983_invoicing_invoice_pk_fix.dok.json","weise3_id":"WEISE3::eb5af3aeef6480eff75344f701c3c348::CC::dokarh::FENIX2026","tip":"fix","naziv":"KRITIČAN FIX: invoicing_invoice PRIMARY KEY constraint","kreator":"genesis","datum":"2026-05-18","snippet":"","status":"","prev_weise3":"","bunker_l":"#00d4ff","full":{"tip":"fix","naziv":"KRITIČAN FIX: invoicing_invoice PRIMARY KEY constraint","sustav":"fina-connect","server":"NEW (31.70.90.84, fina_erp)","datum":"2026-05-18","sto_treba":"Tablica invoicing_invoice nije imala PRIMARY KEY constraint — id kolona sadržavala duplikate.","uzrok":"Dvostruki import podataka — svi redovi s ID 1-24622 bili su duplirani (točno identični, različiti ctid).","faze":[{"br":1,"naziv":"Dijagnoza","status":"DONE","opis":"30.656 ukupnih redova, 15.335 unique ID, 15.321 duplikat redova (sve tačne kopije)"},{"br":2,"naziv":"Backup","status":"DONE","opis":"pg_dump invoicing_invoice --data-only → /tmp/invoicing_invoice_backup_20260518.sql (42MB)"},{"br":3,"naziv":"Brisanje duplikata","status":"DONE","opis":"DELETE FROM invoicing_invoice a USING invoicing_invoice b WHERE a.id = b.id AND a.ctid > b.ctid → 15.321 redova obrisano","sql":"DELETE FROM invoicing_invoice a USING invoicing_invoice b WHERE a.id = b.id AND a.ctid > b.ctid"},{"br":4,"naziv":"PRIMARY KEY","status":"DONE","opis":"ALTER TABLE invoicing_invoice ADD CONSTRAINT invoicing_invoice_pkey PRIMARY KEY (id) — uspjelo bez grešaka"},{"br":5,"naziv":"Gunicorn reload","status":"DONE","opis":"systemctl reload gunicorn-fina.service"}],"rezultat":{"redova_prije":30656,"redova_poslije":15335,"obrisano":15321,"pk_constraint":"invoicing_invoice_pkey PRIMARY KEY btree(id)","sequence_stanje":"last_value=24622 (konzistentno s MAX(id))"},"zakon":["ZAKON 32 — svaki fix ima chain entry","ZAKON 3 — integritet pohrane"],"napomena":"Nema DB-level FK referenci na ovu tablicu (sve su application-level db_constraint=False) — brisanje je sigurno. Backup dostupan na serveru.","weise3_id":"WEISE3::eb5af3aeef6480eff75344f701c3c348::CC::dokarh::FENIX2026"}}