Skip to content

后端约定

后端为 Python 3.13 + FastAPI + SQLAlchemy(Async)。以下为主要约定,贡献代码请遵循。

异步优先

数据库操作全部使用 AsyncSessionawait

SQLAlchemy 2.0 语法

python
result = await db.execute(
    select(Question).where(Question.status == QuestionStatus.PUBLISHED)
)
questions = result.scalars().all()

CRUD 模式

新增数据访问请继承 app/crud/base.py:CRUDBase

python
class CRUDQuestion(CRUDBase[Question, QuestionCreate, QuestionUpdate]):
    ...

类型注解

强制类型注解(typing.Listtyping.Optional 等)。

依赖管理

使用 uv

bash
uv add <package>

数据库迁移

bash
uv run alembic revision --autogenerate -m "描述"
uv run alembic upgrade head

迁移脚本位于 backend/alembic/versions/,当前采用 SQLite / MySQL 通用的双库基线。

AI 集成

  • 新增 AI 供应商:实现 app/services/ai_provider.pyAIProvider 接口。
  • 文档解析 / 抽取:使用 app/services/doc_processor.pyDocProcessor
  • AI 配置是数据库驱动ai_providersai_models 表),不是环境变量。

配置

  • 静态配置:app/core/config.py
  • 动态业务配置:system_setting 表(界面热更新)。

目录速览

目录职责
app/api/v1/endpoints/路由端点
app/crud/数据访问
app/models/ORM 模型
app/schemas/Pydantic 模型
app/services/业务服务
scripts/运维 / 数据脚本

基于 AGPL-3.0 许可发布