"""
Runner giornaliero (scheduler, ~09:00): calendario, pronostici del giorno,
raccolta tipster, agenti S1. Ogni esecuzione scrive un log in logs/.

Uso:
    python scripts/run_daily.py
"""

import subprocess
import sys
from datetime import datetime
from pathlib import Path

SCRIPTS = Path(__file__).resolve().parent
LOG_DIR = SCRIPTS.parent / "logs"

STEPS = [
    ("sync_fixtures.py", []),
    ("daily_picks.py", []),
    ("tipster_pengwin.py", ["--max-articles", "15"]),
    ("telegram_collector.py", ["--max-extract", "40"]),
    ("run_agents.py", ["--stage", "S1"]),
]


def main() -> int:
    LOG_DIR.mkdir(exist_ok=True)
    log_path = LOG_DIR / f"daily_{datetime.now():%Y%m%d_%H%M}.log"
    with open(log_path, "w", encoding="utf-8") as log:
        for script, extra in STEPS:
            header = f"\n{'=' * 60}\n{datetime.now():%H:%M:%S} {script} {' '.join(extra)}\n"
            log.write(header)
            log.flush()
            try:
                res = subprocess.run(
                    [sys.executable, "-W", "ignore", str(SCRIPTS / script), *extra],
                    stdout=log, stderr=subprocess.STDOUT, timeout=2400)
                log.write(f"[exit {res.returncode}]\n")
            except subprocess.TimeoutExpired:
                log.write("[TIMEOUT]\n")
            log.flush()
    print(f"Log: {log_path}")
    return 0


if __name__ == "__main__":
    sys.exit(main())
