Skip to content

API 模块归属与鉴权矩阵

本文档用于统一各端接口契约与权限边界,确保 Web/Mobile/AI 的调用一致,避免同名功能出现不同路径或字段。


1. 目标

  • 接口一致:所有客户端使用同一套路径与字段。
  • 鉴权清晰:每个接口都标注权限与角色范围。
  • 模块归属明确:每个接口明确归属到后端模块/AI 服务。

2. 角色与权限(RBAC)

权限定义见后端 code/backend/internal/authz/rbac.go

权限描述典型角色
course:read查看课程/章节/资源student/assistant/teacher/admin
course:write创建/编辑课程与章节teacher/admin
assignment:read查看作业/提交student/assistant/teacher/admin
assignment:write发布作业teacher/admin
assignment:submit提交作业student
assignment:grade批改作业teacher/assistant/admin
resource:read查看资源student/assistant/teacher/admin
resource:write创建/删除资源teacher/admin
quiz:read查看测验/题目student/assistant/teacher/admin
quiz:write创建/编辑测验teacher/admin
quiz:take参加测验student
quiz:grade查看所有测验结果/统计teacher/assistant/admin
ai:use使用 AI 接口student/assistant/teacher/admin
sim:use使用仿真/数值接口student/assistant/teacher/admin
code:run代码执行/沙箱student/assistant/teacher/admin
announcement:read查看公告student/assistant/teacher/admin
announcement:write发布公告teacher/admin
attendance:read查看考勤student/assistant/teacher/admin
attendance:write发起/结束考勤teacher/admin
attendance:checkin学生签到student
attendance:export导出考勤teacher/admin
user:stats获取用户统计student/assistant/teacher/admin
user:manage用户管理admin

3. 模块归属(目标态)

模块归属服务说明
Authbackend/auth登录/鉴权/企业微信 OAuth
Coursebackend/course课程基础信息与成员访问控制
Chapterbackend/chapter章节内容/心跳/学习统计
Assignmentbackend/assignment作业发布/提交/批改
Quizbackend/quiz测验发布/作答/统计
Resourcebackend/resource资源管理
AIbackend/ai + ai_servicechat/工具调用/写作分析
Simulationbackend/sim + simulation仿真与数值计算
Writingbackend/writing + ai_service写作提交与分析
Announcementbackend/announcement公告
Attendancebackend/attendance考勤
User Statsbackend/user用户统计
Adminbackend/admin后台管理
Uploadbackend/upload文件上传

4. 接口矩阵(目标态)

/api/v1 为统一前缀。此处为目标契约,后端将按此收敛。

Auth

方法路径权限说明
POST/auth/loginpublic登录获取 JWT
GET/auth/meauth获取当前用户
POST/auth/wecompublic企业微信登录
POST/auth/wecom/jsconfigpublic企微 JS SDK 配置
GET/auth/wecom/oauth-urlpublic获取 OAuth 地址

Course

方法路径权限说明
GET/coursescourse:read课程列表
GET/courses/{courseId}course:read课程详情
POST/coursescourse:write创建课程

Chapter

方法路径权限说明
GET/courses/{courseId}/chapterscourse:read章节列表
GET/chapters/{id}course:read章节详情
POST/chapterscourse:write创建章节
PUT/chapters/{id}course:write更新章节
DELETE/chapters/{id}course:write删除章节
POST/chapters/{id}/heartbeatcourse:read学习时长心跳
GET/chapters/{id}/my-statscourse:read个人章节统计
GET/chapters/{id}/class-statscourse:write班级章节统计

Assignment

方法路径权限说明
GET/courses/{courseId}/assignmentsassignment:read作业列表
POST/courses/{courseId}/assignmentsassignment:write创建作业
GET/assignments/{id}assignment:read作业详情
POST/assignments/{id}/submitassignment:submit提交作业
GET/assignments/{id}/submissionsassignment:grade作业提交列表
POST/submissions/{submissionId}/gradeassignment:grade批改作业
POST/submissions/{submissionId}/ai-gradeassignment:gradeAI 批改建议

Quiz

方法路径权限说明
GET/courses/{courseId}/quizzesquiz:read测验列表
POST/quizzesquiz:write创建测验
GET/quizzes/{id}quiz:read测验详情
PUT/quizzes/{id}quiz:write更新测验
DELETE/quizzes/{id}quiz:write删除测验
POST/quizzes/{id}/startquiz:take开始测验
POST/quizzes/{id}/submitquiz:take提交测验
GET/quizzes/{id}/resultquiz:read测验结果

Resource

方法路径权限说明
GET/courses/{courseId}/resourcesresource:read资源列表
POST/resourcesresource:write创建资源
DELETE/resources/{id}resource:write删除资源

AI / Writing

方法路径权限说明
POST/ai/chatai:useAI 对话
POST/ai/chat_with_toolsai:use工具调用对话
POST/ai/chat/guidedai:use引导式学习对话
POST/courses/{courseId}/writingassignment:submit写作提交
GET/courses/{courseId}/writingassignment:read写作列表
GET/writing/{id}assignment:read写作详情
PUT/writing/{id}/feedbackassignment:grade写作反馈更新

Simulation

方法路径权限说明
POST/sim/*sim:use仿真接口统一前缀
POST/calc/*sim:use数值计算接口统一前缀
POST/sim/run_codecode:run代码执行

User Stats / Admin

方法路径权限说明
GET/user/statsuser:stats用户统计
GET/admin/statsuser:manage系统统计
GET/admin/usersuser:manage用户列表
POST/admin/usersuser:manage创建用户
PUT/admin/users/{id}user:manage更新用户
DELETE/admin/users/{id}user:manage删除用户

5. 统一响应规范(目标态)

json
{
  "success": true,
  "data": { }
}
json
{
  "success": false,
  "error": { "code": "ERROR_CODE", "message": "错误说明" }
}

6. 课程归属与鉴权规则

  • 课程内资源(章节/作业/测验/资源/写作)默认要求用户为课程成员。
  • 写操作必须验证“课程教师/管理员”身份。
  • 助教仅具备读与部分批改权限,不具备创建课程/章节的权限。

Released under the MIT License.