|
|
# 产品开发关键因素第 3 步设计
|
|
|
|
|
|
## 目标
|
|
|
|
|
|
为学生端“产品开发关键因素”实训补齐第 3 步“商业化及市场反馈”分析页。学生对成功产品与失败产品分别完成三项固定维度分析,保存后进入第 4 步,但不提交整个任务。
|
|
|
|
|
|
## 范围与约束
|
|
|
|
|
|
- 仅修改学生端页面及其学生答案校验接口;不调整教师端、任务配置端或其他模块。
|
|
|
- 延续现有 `product-development-factors` 单页多步骤页面、答案存储和本地草稿机制。
|
|
|
- 不新增数据库表或字段:第 3 步内容持久化到现有答案记录的 `step3Answer`,进度写入 `currentStep`。
|
|
|
- 成功保存第 3 步后,保存动作固定为 `SAVE`、`submitted: false`、`currentStep: 4`;不得调用任务提交动作。
|
|
|
|
|
|
## 学生页面
|
|
|
|
|
|
当 `currentStep === 2` 时展示标题“商业化及市场反馈角度分析,填写下表:”,表头为“维度 / 评估项 / 成功产品 / 失败产品”。
|
|
|
|
|
|
固定三行及评估项:
|
|
|
|
|
|
| 维度 | 评估项 |
|
|
|
| --- | --- |
|
|
|
| 供应链与成本控制 | 产品成本是否可控?是否支持规模化?是否具备备选供应链?关键元器件(如芯片、传感器)有≥2家可替换供应商 |
|
|
|
| 商业模式 | 盈利模式是否清晰?硬件销售毛利率≥50%,或有订阅服务(如云存储、AI 功能包)。是否构建“数据 - 反馈 - 迭代”闭环?产品使用数据可回传,驱动功能优化与新版本开发 |
|
|
|
| 市场反馈 | 是否处于需求上升期?功能、设计、服务、品牌是否有差异化壁垒?用户是否高留存、高互动、低退货? |
|
|
|
|
|
|
每行的成功产品与失败产品列各提供多行文本输入。六个输入均为必填;保存按钮为“保存并进入第 4 步”,清空按钮沿用现有行为。页面恢复已保存答案和本地草稿;导出内容与清空逻辑覆盖前三步。
|
|
|
|
|
|
若任务配置少于四步,保存仍成功,提示“已保存,当前任务尚未配置第 4 步”,并留在当前页;否则切换到第 4 步占位页。
|
|
|
|
|
|
## 前端数据流
|
|
|
|
|
|
- 定义 `STEP_THREE_FACTOR_ROWS` 和 `stepThreeRows`,结构与前两步相同:`dimension`、`criteria`、`successAnalysis`、`failedAnalysis`。
|
|
|
- 在 `buildDraft` 中新增 `stepThree`;在加载答案与草稿时恢复第 3 步。
|
|
|
- 仅第 3 步保存时组装 `{ factors: [{ dimension, successAnalysis, failedAnalysis }] }` 发往校验接口;校验通过后,保存 `step3Answer`。
|
|
|
- 演示模式使用与正式接口相同的固定维度和六项非空规则,保证离线体验一致。
|
|
|
|
|
|
## 后端校验接口
|
|
|
|
|
|
新增 `POST /api/student-training-answers/product-development-factors/step-3/validate`。
|
|
|
|
|
|
- 仅允许已登录、`roleId == 4` 的学生调用;未登录返回 401,非学生返回 403。
|
|
|
- 请求体为 `factors` 数组,每项含 `dimension`、`successAnalysis`、`failedAnalysis`。
|
|
|
- 必须且只能提交一次下列三个维度:供应链与成本控制、商业模式、市场反馈。
|
|
|
- 每个维度的成功产品与失败产品分析去除空白后都必须有内容。
|
|
|
- 合法请求返回 `{ valid: true, message: "校验通过" }`;缺项、重复、伪造维度或空内容返回明确的 400 错误信息。
|
|
|
|
|
|
## 测试
|
|
|
|
|
|
- 后端服务测试覆盖:完整合法数据、空内容、伪造或重复维度、非学生身份。
|
|
|
- 控制器测试覆盖:接口把认证学生与请求参数传给第 3 步校验服务并返回结果。
|
|
|
- 前端静态契约测试覆盖:三项固定维度、`step3Answer` 持久化、校验 API、六项非空演示校验,以及只保存进入第 4 步、不提交任务的行为。
|
|
|
- 最终运行后端 `mvn -B test` 和前端静态契约测试、生产构建。
|