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...

2.3 KiB

产品需求说明书任务提交设计

背景

实训任务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 和生产构建进行验证。