feat(api): API Server + Discord Bot 구현 #task-191
This commit is contained in:
61
api/models.py
Normal file
61
api/models.py
Normal file
@@ -0,0 +1,61 @@
|
||||
"""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
|
||||
Reference in New Issue
Block a user