from fastapi import APIRouter, status from app.core.errors import not_found from app.schemas.common import StatusMessage from app.schemas.project import ProjectCreate, ProjectCreateResponse, ProjectDetail, ProjectListItem from app.services import project_service router = APIRouter(prefix="/projects", tags=["projects"]) @router.get("/", response_model=list[ProjectListItem]) def list_projects() -> list[dict]: return project_service.list_projects() @router.post("/", response_model=ProjectCreateResponse, status_code=status.HTTP_201_CREATED) def create_project(payload: ProjectCreate) -> dict: return project_service.create_project(payload.name, payload.description) @router.get("/{project_id}/", response_model=ProjectDetail) def get_project(project_id: str) -> dict: project = project_service.get_project(project_id) if not project: not_found("project_not_found", "项目不存在") return project @router.delete("/{project_id}/", response_model=StatusMessage) def delete_project(project_id: str) -> dict: deleted = project_service.delete_project(project_id) if not deleted: not_found("project_not_found", "项目不存在") return {"status": "success", "message": "项目已成功删除"}