From 0c19c804d1a37c46de163c8baafe4491f0fae90f Mon Sep 17 00:00:00 2001 From: "Adriano (goldrake)" Date: Sun, 27 Sep 2026 13:38:10 +0000 Subject: [PATCH] analista: --secco non scrive piu' nel DB (#34) scrivi() chiamava J.salva() prima del controllo su --secco: un giro "a secco" scriveva comunque le sezioni misurate nel giornale. Ora salva() (e scrivi_file, che era gia' dopo il return) girano solo quando non e' secco; rendi_markdown() tollera l'assenza della riga in DB (nota/analisi vuote, verificato). Test nuovo in tests/test_analista.py (non c'e' un test_analista_u4.py: l'analisi indicava i due file journal/tradesdb, questo fix e' su analista.py e segue la convenzione un file-di-test-per-modulo del resto della suite). Co-Authored-By: Claude Sonnet 5 --- scripts/live/analista.py | 3 ++- tests/test_analista.py | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/scripts/live/analista.py b/scripts/live/analista.py index 4ddbfd7..2fcbe0c 100644 --- a/scripts/live/analista.py +++ b/scripts/live/analista.py @@ -73,7 +73,8 @@ def invia(con, g: date, voce: dict, analisi: str, stato: str, motivi: list[str], def scrivi(con, g: date, modello: str, secco: bool = False, verbose: bool = True, telegram: bool = True) -> str: voce = J.costruisci(con, g) - J.salva(con, voce) # le sezioni misurate prima, cosi' il modello le legge + if not secco: # --secco: stampa e NON salva (#34) — niente scrittura + J.salva(con, voce) # le sezioni misurate prima, cosi' il modello le legge pagina = J.rendi_markdown(con, voce) st = storico(con, g) prompt = A.costruisci_prompt(pagina, st) diff --git a/tests/test_analista.py b/tests/test_analista.py index be6760d..d24eec5 100644 --- a/tests/test_analista.py +++ b/tests/test_analista.py @@ -210,6 +210,21 @@ def test_l_agente_non_tocca_la_nota(db, monkeypatch, tmp_path): assert r["analisi"].startswith("Analisi valida") and r["analisi_stato"] == "ok" +def test_secco_stampa_e_non_salva(db, monkeypatch, tmp_path, capsys): + """#34: prima del fix `J.salva()` veniva chiamato comunque, prima del controllo su + `secco` — un giro "a secco" scriveva lo stesso le sezioni misurate nel DB.""" + import analista as CLI + monkeypatch.setattr(A, "interroga", lambda *a, **k: ("Analisi che non deve finire nel DB.", None)) + monkeypatch.setattr(J, "JOURNAL_DIR", tmp_path) + g = date(2026, 8, 21) + assert db.execute("SELECT COUNT(*) c FROM journal").fetchone()["c"] == 0 # DB vuoto in partenza + stato = CLI.scrivi(db, g, modello="finto", secco=True, verbose=False, telegram=False) + assert stato == "ok" + capsys.readouterr() # non e' l'oggetto del test + assert db.execute("SELECT COUNT(*) c FROM journal").fetchone()["c"] == 0 # DB ANCORA vuoto + assert not (tmp_path / f"{g}.md").exists() # scrivi_file non chiamato + + def test_se_il_modello_non_risponde_l_analisi_di_IERI_non_resta_in_pagina(db, monkeypatch, tmp_path): """Il guasto peggiore: una pagina che mostra l'analisi del giorno prima come se fosse di oggi.""" import analista as CLI