"""Publication preparation: teasers, visual ideas, final package."""
from pathlib import Path
from rich.console import Console
from rich.panel import Panel

console = Console()

_SYSTEM = """Du bist ein erfahrener Redaktionsassistent für KNIEPUNKT.
Erstelle prägnante, ansprechende LinkedIn-Texte und kreative Cover-Ideen für eine hochgebildete Zielgruppe."""


def generate_teasers(client, draft: str) -> str:
    """Generate 3 teaser/invitation text variants."""
    from kniepunkt.llm import chat

    console.print("\n[yellow]Erstelle Teaser-Varianten...[/yellow]")

    prompt = f"""Erstelle 3 verschiedene LinkedIn-Einladungstexte (Teaser) für diese KNIEPUNKT-Episode.

Episodentext (Auszug):
{draft[:2000]}

**Variante 1 – Neugier-Aufhänger:** stellt eine Frage oder weckt Neugier
**Variante 2 – Pointierte These:** provokante Aussage oder klare Meinung
**Variante 3 – Bild/Anekdote:** beginnt mit einem konkreten Bild oder einer kurzen Geschichte

Jeder Teaser: 3-5 Sätze, LinkedIn-gerecht, endet mit einer Leseeinladung und "Schönen Sonntag! 🤙" """

    return chat(client, [{"role": "user", "content": prompt}], _SYSTEM, max_tokens=1024)


def generate_visual_ideas(client, draft: str) -> str:
    """Generate 3 cover/visual concept ideas."""
    from kniepunkt.llm import chat

    console.print("\n[yellow]Entwickle Cover-Ideen...[/yellow]")

    prompt = f"""Entwickle 3 Cover-Ideen für diese KNIEPUNKT-Episode.

Episodentext (Auszug):
{draft[:1500]}

Für jede Idee:
- **Bildkonzept:** Was ist zu sehen? Konkrete Beschreibung des Motivs
- **Stil:** fotorealistisch / illustrativ / symbolisch / abstrakt
- **Verbindung zur Episode:** Wie spiegelt es das Thema wider?
- **Bildgenerierungs-Prompt (Englisch):** konkreter Prompt für DALL-E / Midjourney / Flux

Hinweis: KNIEPUNKT-Logo, Episodentitel und Datum werden vom Autor separat hinzugefügt."""

    return chat(client, [{"role": "user", "content": prompt}], _SYSTEM, max_tokens=1024)


def save_package(session_date: str, draft: str, teasers: str, source_assessment: str, visual_ideas: str) -> Path:
    """Write the complete publication package to a markdown file."""
    sessions_dir = Path(__file__).parent.parent / "sessions"
    sessions_dir.mkdir(exist_ok=True)
    out_path = sessions_dir / f"{session_date}_publikation.md"

    content = f"""# KNIEPUNKT Publikationspaket – {session_date}

## Artikel

{draft}

---

## Einladungstexte (Teaser-Varianten)

{teasers}

---

## Cover-Ideen

{visual_ideas}

---

## Quellenbewertung

{source_assessment}
"""
    out_path.write_text(content, encoding="utf-8")
    return out_path
