Files
solduri2roa/docs/raport_lane_contract.md
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

4.8 KiB

Raport lane contract - etapa 2

1. Facut

1.1 config/conturi_parteneri.csv

  • config/conturi_parteneri.csv:1-10 - 9 conturi, antet exact cont,categorie,motiv. Categoriile (BANCA / SINTETIC / FARA_ANALITICE) corespund exact seturilor PARTENER_BANCA / PARTENER_SINTETIC / PARTENER_FARA_ANALITICE de dinainte (genereaza_xlsx.py:46-50).

1.2 genereaza_xlsx.py (singura modificare permisa)

  • genereaza_xlsx.py:48-49 - CONFIG_PARTENERI, cale absoluta fata de fisierul scriptului.
  • genereaza_xlsx.py:56-70 - citeste_conturi_parteneri(): citeste CSV-ul la pornire; fisier lipsa sau categorie necunoscuta -> Stop cu mesaj clar (nu cade pe set gol).
  • genereaza_xlsx.py:77-78 - cele trei seturi se incarca din CSV la import.
  • LATURA_CREDIT (:43) nu s-a mutat in CSV - neatins.
  • Verificat bit-identic: regenerare FUNDATIA/MASTER => 0 diferente de celula fata de init_FUNDATIA_2025_12.xlsx / init_MASTER_2025_12.xlsx din radacina (76x39, respectiv 81x39).

1.3 Script divergenta fata de Oracle

  • sql/export_config_cont_ireg.sql - SELECT cont FROM config_cont_ireg WHERE cu_inregistrari = 1, spool CSV cu o coloana (CONT); nume de coloane luate din docs/config_cont_ireg.md.
  • config/config_cont_ireg_snapshot.csv - snapshot construit o singura data (21.09.2026) din docs/config_cont_ireg.md:91, cu comentariu in antet despre sursa si data.
  • tools/divergenta_parteneri.py:17 citeste config-ul, :30 snapshot-ul (ignora liniile # si antetul cont/CONT), :51 tipareste cele doua liste. Nu scrie in config, nu se conecteaza la Oracle, doar stdlib.

1.4 docs/decizii_import.md

  • docs/decizii_import.md:122 - sectiune noua "Divergenta fata de CONFIG_CONT_IREG (constatata 21.09.2026)" cu ambele liste complete si comanda de refacere.

1.5 Anonimizator + poarta de regresie

  • tests/anonimizeaza_etalon.py:49 citeste_corespondenta, :54 anonimizeaza_foaie, :99 anonimizeaza_fisier - functii importabile; :112 anonimizeaza() refoloseste acelasi nucleu. Verificat: golden regenerat din init_*.xlsx = golden comis pe valori de celula (0 diferente), tabela de corespondenta neschimbata.
  • tests/test_regresie.py:44 setUpClass (skip daca lipseste tabela, :46), :78 _verifica (comparatie pe valori de celula), :115/:118 cele doua teste. Scrie xlsx-urile intr-un director temporar, nu peste cele din radacina.

2. Verificari

  • Cens octeti: toate fisierele atinse raman ASCII pur (0 octeti > 0x7F inainte si dupa). Nu s-a atins niciun .vc2/.sc2/.prg.
  • Terminatoare de linie: sql/export_config_cont_ireg.sql scris CRLF (27 linii). Fisierele .py/.csv LF, ca restul surselor Python existente.
  • Comanda de test (output exact):
> py -m unittest discover -s tests -v
test_fundatia (test_regresie.TestRegresieEtalon.test_fundatia) ... ok
test_master (test_regresie.TestRegresieEtalon.test_master) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.416s

OK
  • Comanda de divergenta (output exact):
> py tools/divergenta_parteneri.py config/config_cont_ireg_snapshot.csv
Conturi comparate: la noi 9, in Oracle 33
In Oracle, nu la noi (27): 1621, 167, 232, 234, 261, 2678, 2691, 403, 404, 408, 409, 4091, 4093, 4094, 4118, 413, 418, 419, 426, 4511, 456, 457, 471, 472, 4754, 542, 8051
La noi, nu in Oracle (3): 5121, 5124, 5311
  • Verificat ca mesajul de esec al testului contine fisier, rand, coloana, asteptat si gasit (simulat cu un golden modificat): g.xlsx: rand 3, coloana 2: asteptat 'TAMPER', gasit 12.
  • Verificat ca SkipTest se declanseaza cand lipseste tests/_corespondenta_anonimizare.json.
  • Netinse: init_FUNDATIA_2025_12.xlsx, init_MASTER_2025_12.xlsx (mtime 00:13), tests/golden/*, tests/_corespondenta_anonimizare.json, docs/verificare_*.md, init_facturi_balanta_note.xlsx.

3. Divergenta constatata fata de Oracle

  • In Oracle, nu la noi (27): 1621, 167, 232, 234, 261, 2678, 2691, 403, 404, 408, 409, 4091, 4093, 4094, 4118, 413, 418, 419, 426, 4511, 456, 457, 471, 472, 4754, 542, 8051
  • La noi, nu in Oracle (3): 5121, 5124, 5311

Aceeasi divergenta e scrisa in docs/decizii_import.md:122.

4. Nefacut / blocat

  • SQL-ul nu s-a rulat pe Oracle (interzis in acest lane). Snapshot-ul e construit din docs/config_cont_ireg.md. tools/divergenta_parteneri.py citeste si formatul produs de SQL (antet CONT), deci refacerea din Oracle nu cere modificari.
  • Nimic blocat. Singura modificare in genereaza_xlsx.py este mutarea seturilor de conturi in CSV.

5. Stare periculoasa

Niciuna: fara commit / git add, fara write-back in binar, fara procese ramase, fisierele init_*.xlsx din radacina si etalonul neatinse. Toate iesirile de test sunt intr-un director temporar, sters la finalul testului. Un bash.exe.stackdump aparut in timpul sesiunii a fost sters.