Files
variet-agent/api/models.py

62 lines
1.5 KiB
Python

"""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