Files
companion-assistant/backend/app/schemas/project.py
T

81 lines
1.5 KiB
Python

"""项目相关 schema。"""
from pydantic import BaseModel, Field
PROJECT_TYPES = ["programming", "research", "office", "writing", "video"]
class ProjectCreate(BaseModel):
name: str = Field(min_length=1, max_length=128)
type: str = Field(default="programming", pattern="|".join(PROJECT_TYPES))
description: str = ""
settings: dict = {}
class ProjectUpdate(BaseModel):
name: str | None = None
description: str | None = None
status: str | None = None
settings: dict | None = None
class ProjectOut(BaseModel):
id: int
name: str
type: str
description: str
status: str
workspace_dir: str
settings: dict = {}
created_at: str
updated_at: str
class Config:
from_attributes = True
class ProjectTaskCreate(BaseModel):
title: str = Field(min_length=1, max_length=256)
description: str = ""
agent_id: int | None = None
class ProjectTaskOut(BaseModel):
id: int
project_id: int
title: str
description: str
status: str
output: str
created_at: str
finished_at: str | None
class Config:
from_attributes = True
class TaskOut(BaseModel):
"""后台任务。"""
id: int
type: str
status: str
params: dict = {}
result: dict = {}
error: str
created_at: str
finished_at: str | None
class Config:
from_attributes = True
class FileOut(BaseModel):
id: int
project_id: int | None
filename: str
size: int
mime: str
created_at: str
class Config:
from_attributes = True