"""
Deletes job directories whose status.json hasn't been updated in more than
TTL_HOURS. Run this periodically (cron/systemd timer) so uploaded lead lists
don't sit on disk indefinitely.

Usage:
    python cleanup_old_jobs.py            # uses TTL_HOURS env var, default 72
    python cleanup_old_jobs.py --ttl-hours 24
"""

import argparse
import os
from datetime import datetime, timezone

import jobs


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--ttl-hours", type=float, default=float(os.environ.get("TTL_HOURS", 72)))
    args = parser.parse_args()

    now = datetime.now(timezone.utc)
    deleted = 0
    for job_id in jobs.list_jobs():
        st = jobs.get_status(job_id)
        if not st:
            continue
        updated_at = st.get("updated_at")
        if not updated_at:
            continue
        try:
            ts = datetime.fromisoformat(updated_at)
        except ValueError:
            continue
        age_hours = (now - ts).total_seconds() / 3600
        if age_hours > args.ttl_hours:
            jobs.delete_job(job_id)
            deleted += 1
            print(f"deleted {job_id} (age {age_hours:.1f}h)")

    print(f"done. deleted {deleted} job(s).")


if __name__ == "__main__":
    main()
