"""
Génération de réponses via l'API Anthropic (compatible Python 3.6).
Utilise requests directement, sans le SDK anthropic.
"""
import requests, os

ANTHROPIC_API_KEY = os.getenv('ANTHROPIC_API_KEY')

SYSTEM_PROMPT = """Tu es l'assistant personnel de Jimmy Hanselmann.
Tu rédiges des réponses aux commentaires LinkedIn en son nom.

Règles :
- Réponds toujours dans la même langue que le commentaire reçu
- Ton : chaleureux, professionnel mais pas corporate, authentique
- Longueur : 2 à 4 phrases maximum, jamais de liste à puces
- Ne commence jamais par "Merci pour votre commentaire" ou formules robotiques
- Ne fais aucune promesse que Jimmy ne peut tenir
- Si le commentaire est négatif ou hors sujet, reste neutre et bienveillant
"""

def choose_campaign(comment_text, campaigns):
    """
    Choisit la campagne Gojiberry la plus adaptee au commentaire recu.
    Retourne le list_id de la meilleure campagne, ou None.
    """
    if not campaigns:
        return None

    # Une seule campagne active -> l'utiliser directement
    if len(campaigns) == 1:
        return campaigns[0]['list_id']

    # Plusieurs campagnes -> laisser Claude decider
    camps_desc = "\n".join([
        "- Campagne '{}' (list_id={}) : {}".format(
            c['name'], c['list_id'], c['description'][:200])
        for c in campaigns
    ])

    prompt = (
        "Voici un commentaire LinkedIn recu sur un post :\n\n"
        "\"{comment}\"\n\n"
        "Et voici les campagnes de prospection disponibles :\n{camps}\n\n"
        "Quelle campagne est la plus adaptee pour ce commentateur ?"
        " Reponds UNIQUEMENT avec le list_id (nombre entier), rien d'autre."
    ).format(comment=comment_text, camps=camps_desc)

    headers = {
        'x-api-key': ANTHROPIC_API_KEY,
        'anthropic-version': '2023-06-01',
        'content-type': 'application/json'
    }
    body = {
        "model": "claude-haiku-4-5-20251001",
        "max_tokens": 10,
        "messages": [{"role": "user", "content": prompt}]
    }

    try:
        r = requests.post(
            'https://api.anthropic.com/v1/messages',
            headers=headers, json=body, timeout=15
        )
        r.raise_for_status()
        list_id_str = r.json()['content'][0]['text'].strip()
        return int(list_id_str)
    except Exception as e:
        import logging
        logging.error("Erreur choose_campaign : {}".format(e))
        return campaigns[0]['list_id']  # fallback : premiere campagne


def generate_response(comment_text, post_content):
    prompt = (
        "Quelqu'un a commenté le post LinkedIn de Jimmy.\n\n"
        "Contenu du post :\n{post_content}\n\n"
        "Commentaire reçu :\n{comment_text}\n\n"
        "Rédige la réponse de Jimmy."
    ).format(
        post_content=post_content or '(non disponible)',
        comment_text=comment_text
    )

    headers = {
        'x-api-key': ANTHROPIC_API_KEY,
        'anthropic-version': '2023-06-01',
        'content-type': 'application/json'
    }
    body = {
        "model": "claude-opus-4-6",
        "max_tokens": 300,
        "system": SYSTEM_PROMPT,
        "messages": [{"role": "user", "content": prompt}]
    }

    r = requests.post(
        'https://api.anthropic.com/v1/messages',
        headers=headers,
        json=body,
        timeout=30
    )
    r.raise_for_status()
    return r.json()['content'][0]['text'].strip()
