# 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.