"""API 요청/응답 모델. FastAPI + Discord Bot 공용 데이터 모델입니다. """ from enum import Enum from pydantic import BaseModel, Field from datetime import datetime class TaskStatus(str, Enum): """작업 상태.""" PENDING = "pending" PLANNING = "planning" EXECUTING = "executing" REVIEWING = "reviewing" DONE = "done" ERROR = "error" class TaskRequest(BaseModel): """작업 요청.""" project: str = Field( default=".", description="프로젝트 경로 (기본: 현재 디렉토리)", ) request: str = Field( ..., description="사용자 작업 요청 (자연어)", ) mode: str = Field( default="general", description="실행 모드: general | secure", ) class TaskProgress(BaseModel): """작업 진행 단계.""" phase: str message: str timestamp: datetime = Field(default_factory=datetime.now) class TaskResponse(BaseModel): """작업 결과.""" task_id: str status: TaskStatus = TaskStatus.PENDING request: str = "" plan: dict | None = None progress: list[TaskProgress] = Field(default_factory=list) result: dict | None = None error: str | None = None created_at: datetime = Field(default_factory=datetime.now) updated_at: datetime = Field(default_factory=datetime.now) class HealthResponse(BaseModel): """헬스체크 응답.""" status: str = "ok" version: str = "0.1.0" uptime_seconds: float = 0.0