Decizii LACERTA: data = ultima zi, 542 cu parteneri, 4428/01, backup .fbk
- genereaza_xlsx: coloana data = ultima zi a lunii; etalonul de regresie actualizat doar pe aceasta coloana (verificat celula cu celula). - config: 542 cont cu parteneri (acum identic cu REF); descrierea lui 4092 corectata. - extrage/citire_fdb: .fbk se restaureaza cu gbak -c in temporar; test ca da aceleasi fisiere ca FDB-ul. - test_lacerta: 49/53 frunze identice cu REF, 4428.TOATE -> 4428/01. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EYeAtVxeS8m4oXekjX8Am2
This commit is contained in:
@@ -22,7 +22,7 @@ colector `%` se exclude.
|
||||
Baza primita se copiaza in temporar si copia se repune online (clientul o poate opri
|
||||
cu `full shutdown` inainte de copiere); fisierul primit nu se atinge.
|
||||
|
||||
VERIFICARI: firma de joaca din `D:\SAGA250909\0001` (sinteticele = exportul .xlsx,
|
||||
VERIFICARI: firma de joaca din `D:/SAGA250909/0001` (sinteticele = exportul .xlsx,
|
||||
la octet) si LACERTA 06/2026 (tests/test_lacerta.py: 48 din 53 de frunze identice cu
|
||||
importul facut din exportul SAGA, restul explicate in docs/analiza_lacerta_fdb.md;
|
||||
facturile per document insumeaza netul fiecarui partener). La un client nou se
|
||||
@@ -43,6 +43,7 @@ from datetime import date
|
||||
|
||||
FBCLIENT = r"C:\Program Files\Firebird\Firebird30_Saga\fbclient.dll"
|
||||
GFIX = os.path.join(os.path.dirname(FBCLIENT), "gfix.exe")
|
||||
GBAK = os.path.join(os.path.dirname(FBCLIENT), "gbak.exe")
|
||||
UTILIZATOR = "SYSDBA"
|
||||
PAROLA = "masterkey"
|
||||
CHARSET = "WIN1250"
|
||||
@@ -292,12 +293,20 @@ def scrie_csv(rows, cale, coloane):
|
||||
|
||||
def copie_online(cale_fdb, dir_tmp):
|
||||
"""Copiaza baza in dir_tmp si o repune online, daca clientul a oprit-o inainte de
|
||||
copiere (`full shutdown`). Fisierul primit nu se atinge. Pe o baza deja online
|
||||
gfix raspunde cu eroare, inofensiva: daca repunerea chiar esueaza, conectarea
|
||||
urmatoare pica cu mesajul real (`database ... shutdown`)."""
|
||||
copiere (`full shutdown`). Un backup `.fbk` se restaureaza cu gbak in dir_tmp.
|
||||
Fisierul primit nu se atinge. Pe o baza deja online gfix raspunde cu eroare,
|
||||
inofensiva: daca repunerea chiar esueaza, conectarea urmatoare pica cu mesajul
|
||||
real (`database ... shutdown`)."""
|
||||
if not os.path.exists(cale_fdb):
|
||||
raise FileNotFoundError("lipseste baza Firebird: %s" % cale_fdb)
|
||||
copie = os.path.join(dir_tmp, "CONT_BAZA.FDB")
|
||||
if cale_fdb.lower().endswith(".fbk"):
|
||||
rez = subprocess.run([GBAK, "-c", cale_fdb, copie, "-user", UTILIZATOR,
|
||||
"-password", PAROLA], capture_output=True, text=True)
|
||||
if rez.returncode != 0:
|
||||
raise RuntimeError("restaurarea %s a esuat: %s"
|
||||
% (cale_fdb, (rez.stderr or rez.stdout).strip()))
|
||||
return copie
|
||||
shutil.copyfile(cale_fdb, copie)
|
||||
if os.path.exists(GFIX):
|
||||
subprocess.run([GFIX, "-online", "normal", copie, "-user", UTILIZATOR,
|
||||
|
||||
Reference in New Issue
Block a user