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 体系完整
This commit is contained in:
selfrelease
2026-07-18 21:50:15 +08:00
parent f09aa33589
commit 51feae55ba
72 changed files with 8048 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
"""Pydantic schema 模块。"""
+35
View File
@@ -0,0 +1,35 @@
"""统一响应模型。
所有 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()