#!/usr/bin/env python3
"""
Updates progress.json after an episode is generated.

Usage:
    python3 log_episode.py <episode_type> <lesson_num> <title> <key_phrases_json>

    episode_type: "new" or "review"
    lesson_num: integer
    title: string
    key_phrases_json: JSON array of strings (the 5 phrases from the episode recap)

Example:
    python3 log_episode.py new 1 "Presenting Yourself" '["Me llamo Tobi","soy suizo","soy ingeniero de software","vivo en Zúrich","mucho gusto"]'
"""

import json
import sys
from datetime import date, timedelta
from pathlib import Path

BASE     = Path(__file__).parent
PROGRESS = BASE / "progress.json"


def main():
    if len(sys.argv) < 5:
        print("Usage: log_episode.py <type> <lesson_num> <title> <key_phrases_json>")
        sys.exit(1)

    ep_type    = sys.argv[1]       # "new" or "review"
    lesson_num = int(sys.argv[2])
    title      = sys.argv[3]
    key_phrases = json.loads(sys.argv[4])

    with open(PROGRESS) as f:
        progress = json.load(f)

    intervals = progress.get("srs_intervals_days", [7, 14, 28])
    today_str = date.today().isoformat()
    completed = progress.get("completed_lessons", [])

    if ep_type == "new":
        # Add new lesson to completed
        first_review = (date.today() + timedelta(days=intervals[0])).isoformat()
        completed.append({
            "lesson": lesson_num,
            "title": title,
            "date_completed": today_str,
            "key_phrases": key_phrases,
            "topics_covered": [],
            "review_count": 0,
            "next_review": first_review,
            "review_history": []
        })
        progress["next_new_lesson"] = lesson_num + 1
        print(f"✅ Logged new lesson {lesson_num}: {title}")
        print(f"   First review scheduled: {first_review}")

    elif ep_type == "review":
        # Find and update the existing lesson
        lesson = next((c for c in completed if c["lesson"] == lesson_num), None)
        if lesson is None:
            print(f"❌ Lesson {lesson_num} not found in progress.json")
            sys.exit(1)

        review_count = lesson.get("review_count", 0)
        lesson["review_count"] = review_count + 1
        lesson["review_history"].append(today_str)

        if review_count + 1 < len(intervals):
            next_days = intervals[review_count + 1]
            lesson["next_review"] = (date.today() + timedelta(days=next_days)).isoformat()
            print(f"✅ Logged review #{review_count + 1} for lesson {lesson_num}")
            print(f"   Next review in {next_days} days: {lesson['next_review']}")
        else:
            lesson["next_review"] = None
            print(f"✅ Lesson {lesson_num} archived — all reviews complete")

        # Update key phrases with new ones from review
        if key_phrases:
            existing = set(lesson.get("key_phrases", []))
            for p in key_phrases:
                if p not in existing:
                    lesson["key_phrases"].append(p)

    progress["completed_lessons"] = completed
    with open(PROGRESS, "w") as f:
        json.dump(progress, f, indent=2, ensure_ascii=False)

    print(f"\n📊 Progress summary:")
    print(f"   Lessons completed: {len(completed)}")
    for c in completed:
        nr = c.get('next_review', 'archived')
        rc = c.get('review_count', 0)
        print(f"   Lesson {c['lesson']}: {c['title']} | reviews: {rc} | next: {nr}")


if __name__ == "__main__":
    main()
