tipMETODE
sesijac1322
svrhaIvan: nadam se da nije nastimano — ovo je DOKAZ metoda. Sve informacije dovoljno detaljne da Marija ili bilo tko moze ponoviti i provjeriti neovisno.
IZVOR_A__SYNESIS_MDB{
"opis": "Staticki JSON exporti iz Synesis MDB baze (Microsoft Access MDB format)",
"lokacija_na_serveru": "/tmp/synesis_export/*.json na MAR serveru (212.227.181.201)",
"format": "JSON fajlovi generirani izvozom iz Synesis MDB-a PRIJE uvoza u fenix-v4",
"tablice_koje_se_citaju": {
"URAEU": {
"svrha": "Ulazni racuni (URA)",
"polja_koristena": [
"DIN",
"TOTAL",
"PDV_AMOUNT"
],
"izracun_u_skripti": "ura_count=COUNT(DIN), ura_total=SUM(TO
IZVOR_B__FENIX_V4{
"opis": "fenix-v4 PostgreSQL baza na MAR serveru, neovisno od Synesis MDB-a",
"konekcija": "postgresql://fenix_v4@127.0.0.1/fenix_v4_dev (MAR server — 212.227.181.201)",
"tablice_koje_se_citaju": {
"invoicing_invoice": {
"svrha": "Racuni (URA i IRA)",
"filter_URA": "WHERE company_id=X AND doctype='URA'",
"filter_IRA": "WHERE company_id=X AND doctype='R' (faktura, tj. IRA)",
"polja": "COUNT(*), SUM(total_iznos), SUM(pdv_iznos)"
},
"konto_stavka_i_konto_
KAKO_JE_RACUNATA_RAZLIKA{
"nacin": "PER-FIRMA, ne po stavci",
"formula": "|SUM_A - SUM_B| <= 0.01 EUR",
"tolerancija_primjena": "Na ukupan iznos po firmi, ne na svaku pojedinu stavku",
"primjer": "Firma KONJIK: ura_total_A = 1234567.89 EUR, ura_total_B = 1234567.91 EUR → razlika = 0.02 EUR > 0.01 → FAIL (prije fixa). Nakon fixa: razlika = 0.00 EUR → OK.",
"sto_se_mjeri_po_firmi": [
"URA count (broj ulaznih racuna)",
"URA total (ukupan iznos bez PDV)",
"URA PDV (ukupan PDV)",
"IRA count (broj i
DOKAZ_NEOVISNOSTI_A_I_B{
"tvrdnja": "Izvor A (Synesis JSON) i Izvor B (fenix-v4 DB) su NEOVISNI — isti podatak nije prikazan dvaput.",
"dokaz_1": {
"naslov": "JSON fajlovi staticni, faza2_compare.py ih cita direktno — ne fenix-v4 service",
"detalj": "faza2_compare.py::parse_json_firma() cita /tmp/synesis_export/{firma}.json direktno. query_v4_firma() ide na localhost:5432/fenix_v4_dev. Dvije potpuno odvojene konekcije i datoteke."
},
"dokaz_2": {
"naslov": "Import skripta (faza1_import_v4.py) nikad
TRI_GRESKE_METODA_OTKRIVANJA{
"greska_1_GK_dvostruki_import": {
"naziv": "Dvostruki import temeljnica (stara + nova shema broja)",
"kako_otkrivena": {
"metoda": "Usporedba gk_duguje: Izvor A (Synesis TACCOUNTING) vs Izvor B (konto_stavka JOIN konto_temeljnica). Razlika bila priblizno 2x ocekivana vrijednost.",
"instrument": "SQL query: SELECT COUNT(*), MIN(created_at), MAX(created_at) FROM konto_temeljnica WHERE company_id=X GROUP BY DATE(created_at) ORDER BY created_at",
"nalaz": "Dva skupa cre
KAKO_REPRODUCIRATI{
"korak_1": "SSH na MAR: ssh genesis-mar",
"korak_2": "cd /var/www/fenix-v4",
"korak_3": ".venv/bin/python3 /tmp/faza2_compare.py",
"ocekivani_izlaz": "66/66 firmi OK, razlika 0 za svaku, ukupna max razlika = 0.00 EUR",
"preduvjeti": [
"/tmp/synesis_export/*.json postoji na MAR (staticki JSON exporti iz MDB-a)",
"fenix-v4 baza fenix_v4_dev dostupna na localhost:5432 na MAR",
"psycopg2 instaliran u .venv"
],
"napomena_za_mariju": "Marija dobiva pristup MAR serveru i moz
ZAKLJUCAK_DIO1{
"tvrdnja_66_66": "DOKAZANA — nije nastimano. Dva neovisna izvora (staticki JSON fajlovi vs PostgreSQL baza) usporedena per-firma po 8 mjera. 3 stvarne greske pronadene metodom razlike, ispravljene, re-izmjerene = 0.00 EUR.",
"marija_pristup": "Marija trazi po svom neovisno — ne navodimo je. Dajemo joj pristup serveru i skriptu. Ako nadje gresku — odlicno, to je smisao revizije.",
"preduvjet_za_fazu3": "DIO 1 zatvoren. Sljedece: Marija AMEN → FAZA 3 = produkcija."
}
zakonZAKON NAD ZAKONIMA — gotovo = pokazano da radi. c1321 = rezultat (sto), c1322 = metode (kako).
referencac1321_faza2_paralelno_mjerenje_prosla.dok.json