citire_xlsx.py citeste .xlsx (openpyxl) si .xls (xlrd) in acelasi contract intern
ca extract_balanta.py. Prima foaie, nu dupa nume; potrivire exacta a coloanelor,
niciodata pe substring (TOTAL_DEB vs TOTAL_DEB_1); CONT ramane text.
mapare.py: propunere automata, corectii_<FIRMA>.xlsx detinut de utilizator si
mapare_<FIRMA>.xlsx regenerat de unealta, .TOATE/.RESTUL in ordinea exact ->
RESTUL -> TOATE, redenumirea sinteticului. Se opreste cu eroare la cont/acont
peste 4 caractere, coliziune accidentala si cont_saga inexistent in corectii.
Corectat in orchestrare: .xls-ul SAGA nu are inregistrare CODEPAGE, deci xlrd
cadea pe iso-8859-1 si strica denumirile ("FURNIZORI \x97 DEBITORI"). Citirea se
face cu encoding_override="cp1250", cu o verificare in test care pica daca revine.
18 teste trec, inclusiv poarta de regresie pe etalon.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EYeAtVxeS8m4oXekjX8Am2
3.2 KiB
3.2 KiB
Raport lane mapare - solduri2roa etapa 2
1. Facut
Doua fisiere noi, nimic altceva atins.
mapare.py (nou):
mapare.py:33-48contractul: coloanelemapare_/corectii_, sursele, regex.TOATE/.RESTUL, config parteneri, randul-exemplu comentat.mapare.py:55-65citeste_parteneri- doar citire dinconfig/conturi_parteneri.csv.mapare.py:68-79separa/propune- propunerea automata; partener ->acontgol.mapare.py:99-106creeaza_corectii- fisier gol + antet + exemplu comentat.mapare.py:109-139citeste_corectii- antet exact, randurile#ignorate, duplicat = Stop.mapare.py:142-151_regula- ordinea exact ->.RESTUL->.TOATE.mapare.py:167-176_verifica_corectii- cheie fara cont in balanta = Stop.mapare.py:179-194_verifica_coliziuni- colaps legal doar sub acelasi.TOATE/.RESTUL; partenerii si randurileexclussunt in afara verificarilor.mapare.py:197-236aplica- merge-ul; lungimi > 4 = Stop.mapare.py:239-260scrie_mapare/genereaza_mapare- scrie maparea, creeaza corectiile doar daca lipsesc.
tests/test_mapare.py (nou): 10 teste (vezi 2).
2. Verificari
- Comanda:
py -m unittest discover -s tests -v- Rezultat:
Ran 18 tests in 0.853s/OK(exit 0). - Include
tests/test_regresie.py(2/2 OK) sitests/test_citire_xlsx.pyal lane-ului paralel (6/6 OK). Zero esecuri.
- Rezultat:
- Cens octeti > 0x7F:
mapare.py0,tests/test_mapare.py0. LF, ca restul.pydin proiect (genereaza_xlsx.pytot LF) - nu am introdus CRLF si nici diacritice. - Smoke pe date reale (in temp, fara sa scriu in radacina):
mapare.aplicapebalanta_FUNDATIA.csv(82 conturi) sibalanta_MASTERJOB.csv(81) - fara Stop, fara coliziuni. git status: doarmapare.pysitests/test_mapare.pyadaugate de mine (restul untracked sunt ale lane-uluicitire-xlsx). Fara commit, faragit add.
3. Decizii si intrebari deschise
- Propunerea automata:
cont= sinteticul dinaintea punctului,acont= analiticul concatenat (toate caracterele, nu doar cifre -conturi_roa.dbfareacont2alfanumericX/PG). Peste 4 caractere -> Stop (cagenereaza_xlsx.py:196), nu trunchiere. Nu am preluat literal "primele max 4 caractere" din plan, care ar include punctul la sintetici de 3 cifre. .TOATE/.RESTULse aplica si randului sintetic (parinte), altfel o redenumire409 -> 4091ar cere doua corectii. Fara efect pe colaps: toate au aceeasi regula.- Coliziunea e permisa doar cand toate conturile au aceeasi cheie
.TOATE/.RESTUL; un amestec exact +.TOATEpe aceeasi pereche da Stop. exclusse intoarce in rezultatul structurat (pentru integrare), dar nu are coloana inmapare_- contractul are exact 6 coloane.contgol intr-o corectie = pastreaza propunerea automata;acontgol = fara analitic.PLANCONTnu se preia (cerut).
Nefacut: integrarea in generator (lane integrare). Nu am adaugat citire_balanta in modul;
integrarea va pasa rows din genereaza_xlsx.citeste_balanta (suporta sold sau
total_d/total_c).
4. Stare periculoasa
Niciuna: fara binar editat/write-back, fara procese ramase, fara fisiere scrise in radacina (maparile de test au fost doar in temp). Fara commit.