接口文档站

满足根 CLAUDE.md 开发强制规范 #3(接口必有文档)#5(接口必有日志+文档)

真源在管理后台(可编辑),这里是导出落点

本项目所有 Expo / H5 ↔ FastAPI 接口的文档,可编辑真源是数据库表 app_api_docs,在**管理后台「接口文档」**里增删改查、发布(三栏 newapi.pro 风格:左分组 / 中正文 / 右示例,编辑页右侧实时预览)。

流程

flowchart LR
  A[管理后台·接口文档<br/>增删改查/发布] --> B[(app_api_docs 表)]
  B -->|GET /api/admin/docs/export| C[docs/接口文档/<br/>json / markdown 导出]
  D[FastAPI 日志中间件] --> E[(app_api_logs 表)]
  E -->|method+path 关联| B
  F[管理后台·接口日志] -->|点日志「查看接口文档」| A

新增 / 改接口时(强制)

  1. 在管理后台「接口文档」补 / 改对应条目并发布;或改 server/scripts/seed_api_docs.pyDOCS 后跑该脚本批量同步。
  2. 确认该接口在管理后台「接口日志」可见(中间件默认覆盖 /api 全部路径,WS 记连接/断开)。
  3. 重新导出本目录快照(可选):GET /api/admin/docs/export?format=markdown

教师端文档站 = 独立项目 apps/docs(三栏,渲染本目录 md)

教师端把本目录的 markdown 渲染成独立的三栏接口文档站(左导航 / 中正文 / 右目录,newapi.pro 观感 + Verdana Health 设计 token):

  • 项目:project/apps/docs(Next.js 静态站,纯渲染本目录 md、不连后端、无鉴权)。
  • 运行:pnpm --filter @teacher/docs devhttp://localhost:3002(生产 teacher-docs.weizhiqingtu.com)。
  • 内容真源即本目录 *.md改 md = 改文档站(构建期 apps/docs/src/content.ts 读取分组渲染)。
  • 与「平台级管理后台」的 app_api_docs(三栏 newapi.pro 编辑端,另一独立项目)互不影响——教师端是自建后端,文档以本目录 md 为准。

教师端本地接口文档(本端自建后端,直接维护在本目录)

教师端为自建 FastAPI(见 CLAUDE.md #6),以下条目随接口增删改同步更新(也即上面文档站 apps/docs 渲染的内容):

  • 登录鉴权.mdPOST /api/teacher/{login,register,refresh}GET /api/teacher/{schools,me,profile,students}(分类:登录鉴权)
  • 在线升级.mdGET /api/version/check(分类:在线升级)
  • 接口日志查询.mdGET /api/admin/logs/logs/stats/logs/{id}/ai/runs/ai/runs/{id}(分类:系统运维;仅管理员 is_admin,由独立运维后台 apps/admin 消费)。登录/me 现返回 isAdmin

与 FastAPI 自带 /docs 的关系

FastAPI /docs(OpenAPI)自动生成、互为补充,但不能顶替本要求(CLAUDE.md #3):本套文档含错误码、请求/响应示例、分组与发布状态,且与接口日志按 method+path 打通。