"""Revisione settimanale in SOLA LETTURA: un modello DIVERSO dall'autore rilegge il sistema. uv run python scripts/live/revisione.py # chiama il revisore, scrive docs/revisioni/.md, Telegram uv run python scripts/live/revisione.py --secco # solo la taglia del materiale: niente modello, niente file uv run python scripts/live/revisione.py --quiet # per il cron (scripts/cron_review.sh, lunedi' 06:15 UTC) Cosa scrive: SOLO il rapporto. Cosa non tocca: config, libro, cron, codice, dati. Le proposte restano proposte; decide l'operatore. Dettagli e ragioni in `src/live/revisione.py`. """ from __future__ import annotations import sys from datetime import datetime, timezone from pathlib import Path ROOT = Path(__file__).resolve().parents[2] sys.path.insert(0, str(ROOT)) USO = """uso: revisione.py [--giorno AAAA-MM-GG] [--modello NOME] [--secco] [--no-telegram] [--quiet] --giorno G data della revisione (default: adesso, UTC) --modello M revisore (default: src.live.revisione.MODELLO = claude-fable-5-1 — NON il modello che scrive il codice) --secco stampa la taglia del materiale e si ferma: niente modello, niente file, niente Telegram --no-telegram scrive il rapporto ma non manda la sintesi --quiet stampa solo l'esito ⚠️ SPENDE una chiamata al modello e MANDA un messaggio Telegram, salvo --secco/--no-telegram. Scrive un solo file: docs/revisioni/.md.""" def _arg(flag: str, default=None): a = sys.argv[1:] return a[a.index(flag) + 1] if flag in a and a.index(flag) + 1 < len(a) else default if __name__ == "__main__": from src.live.cli import valida valida("revisione.py", USO, flag=("--secco", "--no-telegram", "--quiet"), con_valore=("--giorno", "--modello")) from src.live import revisione as R g = _arg("--giorno") adesso = (datetime.fromisoformat(g).replace(tzinfo=timezone.utc) if g else datetime.now(timezone.utc)) esito = R.scrivi(ROOT, adesso, modello=_arg("--modello", R.MODELLO), secco="--secco" in sys.argv, telegram="--no-telegram" not in sys.argv, quiet="--quiet" in sys.argv) if "--quiet" in sys.argv and not esito.get("secco"): print(f"revisione {esito['data']}: {esito.get('stato')}" + (f" — {esito.get('errore')}" if esito.get("errore") else "") + f" {esito.get('file')}") raise SystemExit(0 if esito.get("secco") or esito.get("stato") in ("ok", "sospetta") else 1)