62 lines
1.5 KiB
Python
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
|