"""Aria Pydantic Schemas (KAR-220 Phase 2 - Schema-Validation).

Pydantic-Models for Skill-I/O validation. Pilot: AKP-Briefing.
Pattern: schemas defined here, imported by skills, validated at I/O boundaries.
"""
from __future__ import annotations
from datetime import datetime
from typing import Literal
from pydantic import BaseModel, Field


class TriagedItem(BaseModel):
    video_id: str
    verdict: Literal["promote", "skip", "summary"]
    avg_score: float = Field(ge=-5.0, le=5.0)


class DeepProcessedItem(BaseModel):
    video_id: str
    classification: Literal["Issue", "Skill", "Spike", "Brain-Entry", "Ignore"]
    priority: Literal["P0", "P1", "P2", "P3", "P4"]
    confidence: float = Field(ge=0.0, le=1.0)
    brain_note_path: str | None = None
    kar_issue_id: str | None = None
    cost_usd: float = Field(ge=0.0)
    title: str
    channel: str
    url: str
    duration_seconds: int | None = None


class CostSnapshot(BaseModel):
    triage: float = Field(ge=0.0)
    deep: float = Field(ge=0.0)
    total: float = Field(ge=0.0)


class BriefingWindow(BaseModel):
    ingested: int = Field(ge=0)
    triage_breakdown: dict[str, int]
    deeps: list[DeepProcessedItem]
    since: str  # ISO timestamp


class BriefingPayload(BaseModel):
    """Final payload that goes through send_telegram."""
    text: str = Field(min_length=10, max_length=4096)
    chat_id: str
    is_full_briefing: bool
    items_count: int = Field(ge=0)


class AkpIngestedVideo(BaseModel):
    """Output of aria-akp-ingest.py per video."""
    video_id: str
    channel: str
    title: str
    duration_seconds: int = Field(gt=0)
    url: str
    transcript_chars: int = Field(ge=0)
    raw_path: str
