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

96 lines
4.8 KiB
Markdown

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