import json
import sys
from datetime import datetime
from pathlib import Path

sys.path.insert(0, str(Path(__file__).resolve().parent.parent))

from app.config import OUTPUT_DIR
from app.orchestrator.pipeline import run_daily_pipeline
from app.utils.logging_config import setup_logging


def main():
    raw = input("Hangi tarih için başarısız kategoriler yeniden denensin? (GG.AA.YYYY): ").strip()
    target_date = datetime.strptime(raw, "%d.%m.%Y").date()

    manifest_path = OUTPUT_DIR / target_date.isoformat() / "manifest.json"
    if not manifest_path.exists():
        print(f"Manifest bulunamadı: {manifest_path}")
        return

    manifest = json.loads(manifest_path.read_text(encoding="utf-8"))
    failed = [slug for slug, entry in manifest.items() if entry.get("status") != "uploaded"]

    if not failed:
        print("Başarısız kategori yok, hepsi zaten yüklenmiş.")
        return

    print(f"Yeniden denenecek kategoriler: {', '.join(failed)}")
    setup_logging()
    run_daily_pipeline(target_date, categories=failed)


if __name__ == "__main__":
    main()
