Files
solduri2roa/tools/divergenta_parteneri.py
Marius Mutu f23b3367d8 Lane contract: config/conturi_parteneri.csv, divergenta Oracle, poarta de regresie
Setul de conturi cu parteneri iese din literali si trece in
config/conturi_parteneri.csv, cu categorie si motiv. Comportamentul e neschimbat;
lipsa fisierului opreste cu eroare, nu cade pe set gol.

CONFIG_CONT_IREG ramane consultativ: tools/divergenta_parteneri.py raporteaza
divergenta, nu o aplica. Constatarea (27 conturi in Oracle si nu la noi, 3 la noi
si nu in Oracle - 5121, 5124, 5311) e scrisa in docs/decizii_import.md.

tests/test_regresie.py compara iesirea codului de azi cu tests/golden/ pe valori
de celula, prin anonimizatorul refolosit ca functie. Trece pe FUNDATIA si MASTER;
verificat ca pica la o schimbare reala de set de conturi.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EYeAtVxeS8m4oXekjX8Am2
2026-09-21 15:53:00 +03:00

68 lines
2.4 KiB
Python

"""Compara setul operational de conturi cu parteneri cu snapshot-ul CONFIG_CONT_IREG.
RAPORTEAZA divergentele, nu le aplica: nu scrie nimic in config/conturi_parteneri.csv
si nu se conecteaza la Oracle. Snapshot-ul vine din sql/export_config_cont_ireg.sql
sau, in lipsa unei rulari pe Oracle, din config/config_cont_ireg_snapshot.csv.
Rulare: py tools/divergenta_parteneri.py config/config_cont_ireg_snapshot.csv
"""
import csv
import os
import sys
RADACINA = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
CONFIG = os.path.join(RADACINA, "config", "conturi_parteneri.csv")
def citeste_config(path=CONFIG):
"""Conturile cu parteneri tinute de noi (coloana cont din config)."""
if not os.path.exists(path):
raise SystemExit("lipseste configuratorul de parteneri: %s" % path)
conturi = set()
with open(path, encoding="utf-8-sig", newline="") as f:
for r in csv.DictReader(f):
cont = (r.get("cont") or "").strip()
if cont:
conturi.add(cont)
return conturi
def citeste_snapshot(path):
"""Conturile CU_INREGISTRARI = 1 din snapshot; ignora comentariile si antetul."""
if not os.path.exists(path):
raise SystemExit("lipseste snapshot-ul: %s" % path)
conturi = set()
primul = True
with open(path, encoding="utf-8-sig") as f:
for linie in f:
linie = linie.strip()
if not linie or linie.startswith("#"):
continue
valoare = linie.split(",")[0].strip().strip('"').strip()
if primul and valoare.lower() == "cont":
primul = False
continue
primul = False
if valoare:
conturi.add(valoare)
return conturi
def main(argv):
if len(argv) != 2:
raise SystemExit("Utilizare: py tools/divergenta_parteneri.py <snapshot.csv>")
noi = citeste_config()
oracle = citeste_snapshot(argv[1])
doar_oracle = sorted(oracle - noi)
doar_noi = sorted(noi - oracle)
print("Conturi comparate: la noi %d, in Oracle %d" % (len(noi), len(oracle)))
print("In Oracle, nu la noi (%d): %s"
% (len(doar_oracle), ", ".join(doar_oracle) if doar_oracle else "(niciunul)"))
print("La noi, nu in Oracle (%d): %s"
% (len(doar_noi), ", ".join(doar_noi) if doar_noi else "(niciunul)"))
return 0
if __name__ == "__main__":
sys.exit(main(sys.argv))