Files
selfrelease 51feae55ba feat(backend): Phase 0 项目骨架完成 — 后端/前端/数据库/Docker
- 后端:FastAPI + SQLAlchemy + Alembic,7 张核心表迁移成功
- 前端:Next.js 16 + TailwindCSS 4 + 三端布局(投资人/创始人/Admin)
- 数据库:PostgreSQL 16,7 张核心实体表(tenants/users/companies/monthly_reports/health_scores/risk_events/audit_logs)
- Docker:docker-compose.yml + 前后端 Dockerfile
- 测试:健康检查 4 个测试全部 GREEN
- 文档:README/run.md/AGENTS.md/docs 体系完整
2026-07-18 21:50:15 +08:00

36 lines
1.2 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""统一响应模型。
所有 API 返回统一壳:{code, message, data, trace_id, timestamp}
"""
import uuid
from datetime import datetime, timezone
from typing import Any, Generic, TypeVar
from pydantic import BaseModel, Field
T = TypeVar("T")
class ApiResponse(BaseModel, Generic[T]):
"""统一 API 响应壳。"""
code: int = Field(default=0, description="业务状态码,0 表示成功")
message: str = Field(default="success", description="提示信息")
data: T | None = Field(default=None, description="业务数据")
trace_id: str = Field(default_factory=lambda: str(uuid.uuid4()), description="链路追踪 ID")
timestamp: str = Field(
default_factory=lambda: datetime.now(timezone.utc).isoformat(),
description="响应时间(UTC ISO 8601",
)
def success(data: Any = None, message: str = "success") -> dict[str, Any]:
"""构造成功响应。"""
return ApiResponse(code=0, message=message, data=data).model_dump()
def error(code: int = -1, message: str = "error", data: Any = None) -> dict[str, Any]:
"""构造错误响应。"""
return ApiResponse(code=code, message=message, data=data).model_dump()