# scripts/summarize.py
import json
from datetime import datetime
from config import MEMORY_DIR, SUMMARY_DIR, load_config
import requests

def load_memory(date_str):
    path = MEMORY_DIR / f"{date_str}.json"
    if not path.exists():
        print(f"⚠️ メモリファイルが見つかりません: {path}")
        return None
    with open(path, "r") as f:
        return json.load(f)

def save_summary(date_str, content):
    SUMMARY_DIR.mkdir(parents=True, exist_ok=True)
    path = SUMMARY_DIR / f"{date_str}_summary.json"
    with open(path, "w") as f:
        json.dump(content, f, indent=2, ensure_ascii=False)
    print(f"✅ 要約を保存しました: {path}")

def build_prompt(logs):
    messages = [
        {"role": "system", "content": "あなたは要約AIです。以下の会話ログを要約してください。"},
        {"role": "user", "content": "\n".join(f"{entry['sender']}: {entry['message']}" for entry in logs)}
    ]
    return messages

def summarize_with_llm(messages):
    cfg = load_config()
    if cfg["provider"] == "openai":
        headers = {
            "Authorization": f"Bearer {cfg['api_key']}",
            "Content-Type": "application/json",
        }
        payload = {
            "model": cfg["model"],
            "messages": messages,
            "temperature": 0.7
        }
        response = requests.post(cfg["url"], headers=headers, json=payload)
        response.raise_for_status()
        return response.json()["choices"][0]["message"]["content"]

    elif cfg["provider"] == "ollama":
        payload = {
            "model": cfg["model"],
            "prompt": "\n".join(m["content"] for m in messages),
            "stream": False,
        }
        response = requests.post(cfg["url"], json=payload)
        response.raise_for_status()
        return response.json()["response"]

    else:
        raise ValueError(f"Unsupported provider: {cfg['provider']}")

def main():
    date_str = datetime.now().strftime("%Y-%m-%d")
    logs = load_memory(date_str)
    if not logs:
        return

    prompt_messages = build_prompt(logs)
    summary_text = summarize_with_llm(prompt_messages)

    summary = {
        "date": date_str,
        "summary": summary_text,
        "total_messages": len(logs)
    }

    save_summary(date_str, summary)

if __name__ == "__main__":
    main()