"""Idea schemas for VoIdea API.""" from datetime import datetime from typing import Optional from pydantic import BaseModel, Field class IdeaCreate(BaseModel): title: str = Field(min_length=1, max_length=255) content: str = Field(min_length=1) tags: Optional[list[str]] = None is_public: bool = False class IdeaUpdate(BaseModel): title: Optional[str] = Field(None, min_length=1, max_length=255) content: Optional[str] = Field(None, min_length=1) status: Optional[str] = None tags: Optional[list[str]] = None is_public: Optional[bool] = None funnel_status: Optional[str] = None class IdeaResponse(BaseModel): id: str user_id: str title: str content: str status: str tags: Optional[list[str]] = None is_public: bool public_slug: Optional[str] = None funnel_status: Optional[str] = None created_at: datetime updated_at: datetime class FunnelTransitionRequest(BaseModel): target_status: str = Field(min_length=1, max_length=20) AI_AGENT_ROLES = [ "coordinator", "task_organizer", "business_analyst", "legal_expert", "financial_consultant", "solution_architect", "tester", "ui_designer", "smm_specialist", "life_coach", "accessibility_expert", ] class IdeaAnalyzeResponse(BaseModel): status: str = "started" idea_id: str task_count: int = 0 tasks: list[dict] = [] class AnalysisResultResponse(BaseModel): id: str role: str status: str message: str | None = None success: bool duration_ms: int created_at: str | None = None