Lane regresie: poarta finala trece, etapa 2 e gata

tests/test_regresie_capat_la_capat.py ruleaza extrage.py si genereaza.py ca
subprocese, pornind de la PDF-urile originale, si compara rezultatul anonimizat cu
tests/golden/ pe valori de celula: 0 diferente pe ambele firme. Fluxul nou
reproduce exact xlsx-urile deja importate in ROACONT.

33 de teste trec, fara niciun skip.

CLAUDE.md: dependintele noi (xlrd, firebird-driver) si punctele de intrare.
Handoff-ul rescris pe starea de final, cu ce NU e dovedit: cititorul FDB e
verificat doar pe cazul sintetic al firmei de joaca si nu se duce la un client
fara rerularea portii pe datele lui.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EYeAtVxeS8m4oXekjX8Am2
This commit is contained in:
2026-09-21 16:29:29 +03:00
parent 82511c8adb
commit 0d0b3e26fe
5 changed files with 404 additions and 139 deletions

View File

@@ -3,14 +3,21 @@
Convertor balante SAGA (PDF) -> xlsx de initializare solduri ROACONT.
## Mediu
- `py` (Python 3.13). Instalate: pdfplumber, openpyxl. Fara alte dependinte.
- `py` (Python 3.13). Instalate: pdfplumber, openpyxl, xlrd (.xls BIFF), firebird-driver
(Firebird embedded). Fara alte dependinte; testele folosesc `unittest` din stdlib.
- Nu folosi `sed -i` (corupe fisierele). Scrie cu heredoc sau Python.
- `D:\ROA\ROACONT` = read-only. Nu comite (git/svn) fara aprobare.
## Fisiere
| | |
|---|---|
| `extrage.py` | **punctul de intrare**: sursa (pdf/xlsx/fdb) -> contractul intern |
| `genereaza.py` | **punctul de intrare**: contractul intern -> xlsx de import |
| `extract_balanta.py` | PDF -> `balanta_<FIRMA>.csv` (pdfplumber pe coordonate) |
| `citire_xlsx.py` | foaie SAGA .xls/.xlsx -> acelasi contract |
| `citire_fdb.py` | CONT_BAZA.FDB -> balanta + parteneri + facturi (verificat doar pe sintetic) |
| `mapare.py` | propunere automata + `corectii_<FIRMA>.xlsx`, .TOATE/.RESTUL |
| `config/conturi_parteneri.csv` | **conturile cu parteneri** - autoritatea, nu CONFIG_CONT_IREG |
| `genereaza_xlsx.py` | CSV -> `init_<FIRMA>_<an>_<luna>.xlsx` |
| `init_facturi_balanta_note.xlsx` | sablonul ROA (rand 1 = coloane, 2-13 instructiuni, 20+ exemple) |
| `docs/decizii_import.md` | **regulile de mapare - citeste intai** |