You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
dianshang-qianduan/docs/superpowers/specs/2026-08-31-requirements-doc...

45 lines
2.3 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 产品需求说明书任务提交设计
## 背景
实训任务15“产品需求说明书”已支持完成第1步匹配、填写第2步明细、上传并预览第3步 Word/PDF 文档,但第3步没有最终“提交任务”操作。统一顶部工具栏会查找页面中的同名按钮;找不到时仅提示学生先完成全部步骤,因此学生无法将该任务标记为已提交。
## 目标
让学生在完成第1步并上传有效 PRD 文档后,可在第3步明确提交任务;提交结果须复用现有学生答案保存接口,并保存为最终提交状态。
## 范围
- 在 `requirements-doc.vue` 的第3步操作区新增“提交任务”按钮。
- 新增一个任务专用的最终提交处理函数。
- 复用已有 `saveStudentTrainingAnswer` 接口;不新增或变更后端接口。
- 添加静态回归测试,锁定按钮、前置条件与请求载荷。
不修改通用工具栏的按钮匹配逻辑,不改动其他实训页面,也不增加第2步的额外必填校验。
## 交互与数据流
1. 学生完成第1步匹配,页面状态 `stepOnePassed` 为真。
2. 学生上传可用的 `.docx` 或 `.pdf`,页面状态 `isDocumentReady` 为真。
3. 第3步显示“提交任务”按钮;任一前置条件不满足时按钮禁用。
4. 点击后,页面用当前三步答案构造一次保存请求:`currentStep: 3`、`submitted: true`、`saveAction: "SUBMIT"`。
5. 请求成功后展示成功提示;请求失败时保留现有文档和表单状态,并展示中文错误提示。
统一顶部工具栏通过其既有的可见按钮发现逻辑,能点击页面内新增的“提交任务”,从而与页面底部操作保持一致。
## 错误处理
- 处于提交中时禁用第3步保存与提交按钮,避免重复提交。
- 文档未就绪或第1步未通过时不发起请求。
- 后端错误优先展示返回的错误消息,缺失时使用“提交失败,请稍后重试”。
## 测试
新增 Node 静态测试,验证:
- 页面第3步包含“提交任务”按钮并使用提交状态禁用条件;
- 最终提交构造的载荷包含 `submitted: true`、`saveAction: "SUBMIT"` 与第3步进度;
- 提交函数复用 `saveStudentTrainingAnswer` 并反馈成功/失败信息。
执行新增测试、全量 `node --test tests` 和生产构建进行验证。