Files
tuanwei-admin/docs/ai-qmgc-student-analysis-contract.md
T
gxwebsoft d8e7e2a2a8 feat(volunteer): 新增志愿服务证明材料识别及年度证明功能
- 新增志愿证明材料识别功能,支持自动识别材料并回填关键信息
- 在志愿时长编辑页面添加材料识别按钮及识别结果展示
- 新增志愿服务证明模块,支持查询、生成及下载年度志愿服务证明PDF
- 志愿时长列表及审核详情中新增“服务地点”字段显示
- 志愿时长导入功能支持“服务地点”字段,完善导入表头与数据映射
- 志愿时长详情、审核流程等界面优化,增加识别材料公章状态及流程节点提示
- 志愿时长待审核项支持用户撤回操作,撤回后记录被删除需重新录入
- 社团年度报告相关接口新增,实现社团年度报告生成及分页查询
- 调整相关样式与界面布局,提升用户体验与信息展示完整性
2026-11-06 12:04:32 +08:00

2.7 KiB
Raw Blame History

AI 学情分析接口契约(前端已接入,后端待实现)

青马学员档案里的「AI 学情分析」入口复用现有 AI 流式链路(utils/ai-stream.ts), 后端需要新增一个与 activityOutlineGen / manuscriptGen 同构的端点。

1. 端点

用途 方法 路径
流式分析(页面实际调用) POST /api/ai/qmgcStudentAnalysis/stream
一次性返回(调试/他端) POST /api/ai/qmgcStudentAnalysis

响应格式与现有 AI 链路一致:

  • /stream 返回 text/event-stream,每帧一个 data: 行,帧内容为 JSON;
  • 正文帧:{ "answer": "<markdown 片段>" },也兼容 { "notice": "<片段>" };
  • 心跳/占位帧:{ "loading": "true" },前端忽略;
  • 结束帧:{ "answer": "__END__" };
  • 失败时可用 { "answer": "<片段>", "reset": "true" } 覆盖已推内容, 末帧 status: "failed",前端会显示统一失败文案。

2. 入参

{
  "studentId": 123,
  "focus": "thought | difficulty | advice | undefined",
  "context": {
    "studentName": "张三",
    "studentNo": "20230001",
    "collegeName": "第一临床医学院",
    "className": "临床医学 2023 级 1 班",
    "batch": "2026 年第 1 期",
    "stage": "study",
    "totalScore": 86,
    "materialCount": 5,
    "scoredMaterialCount": 4,
    "taskDoneCount": 6,
    "taskTotal": 8,
    "materialTexts": ["【学习心得】……"],
    "taskTexts": ["完成线上团课(已完成)"],
    "scoreTexts": ["理论/课堂表现:90 分"]
  }
}

context 是前端已加载数据的摘要,后端实现了按 studentId 自行取数后可以忽略它; 保留它是为了后端聚合尚未覆盖某类数据时,AI 仍能拿到培养材料正文。

focus 为空表示综合维度;调度到 Dify 时可映射成不同的提示词变量。

3. 数据口径

第一期可用的输入只有青马域已有数据:

  • gxmu_qmgc_material:培养材料标题与正文、评分与评语;
  • 学员任务分配记录:任务标题、完成状态;
  • gxmu_qmgc_score:考核维度、评分项、得分与评语。

系统目前没有考勤、签到、课堂互动类数据。 需求原文提到的「课堂互动数据」 在采集入口落地前不参与分析,前端弹窗里已明确向教师提示这一点。后续若新增采集, 在 context 中补充对应摘要字段即可,无需改动流式协议。

4. 历史记录

如果要把分析结果写入 ai_chat_list,chat_type 需要新增一个取值 (如 student_analysis),并同步前端 utils/ai-chat-type.ts 的类型与中文名; 本次前端改动未接入历史记录,属于可选增强。