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-07-product-developm...

52 lines
3.2 KiB
Markdown

# 产品开发关键因素模块:第 2 步「技术与合规角度分析」设计
## 目标与范围
仅开发学生端 `product-development-factors` 任务的第 2 步,以及该步骤的服务端校验。第 1 步已完成的用户角度分析保持不变;教师端、管理员端、数据库表、材料下载与第 3 步的具体业务均不在本次范围内。
## 页面与交互
第 2 步标题为“技术与合规角度分析”,正文提示为“技术与合规角度分析,填写下表:”。页面沿用第 1 步的任务导航与深色学生端视觉,但表格内容严格对应原型,固定四列:`维度`、`评估项`、`成功产品`、`失败产品`。不显示产品名称输入框。
固定两行,顺序及评估项如下:
| 维度 | 评估项 |
| --- | --- |
| 技术应用 | 核心技术是否已成熟、可量产?避免使用实验室级原型(如未验证的 AI 模型) |
| 合规与认证 | 是否通过目标市场强制认证目标市场要求的产品资质、检测报告等中国CCC美国FCC欧盟CE出口需符合 RoHS、REACH。是否规避专利与知识产权风险 |
每一行的成功产品、失败产品各提供一个多行分析输入框。四个分析内容去除首尾空白后均非空,点击“保存并进入第 3 步”才会推进。校验成功后使用 `SAVE` 保存,不触发任务总提交或成绩结算。
第 2 步以外不复用该表格:第 1 步保留其已完成页面;第 3 步尚未纳入本次开发时显示轻量待配置占位。若任务配置未包含第 3 步,保存成功并提示未配置下一步,停留在第 2 步。
## 数据与接口
第 2 步答案写入现有 `StudentTrainingAnswer.step2Answer`,不新增数据库表。保存 JSON 只包含两行分析:
```json
{
"factors": [
{
"dimension": "技术应用",
"criteria": "核心技术是否已成熟、可量产?避免使用实验室级原型(如未验证的 AI 模型)",
"successAnalysis": "...",
"failedAnalysis": "..."
}
]
}
```
新增校验接口:`POST /api/student-training-answers/product-development-factors/step-2/validate`。
请求字段为 `factors`,每行拥有 `dimension`、`successAnalysis`、`failedAnalysis`。服务端仅允许已登录学生调用,且必须恰好提交一次“技术应用”和“合规与认证”,每行两列分析均为非空。成功返回 `valid: true``message: "校验通过"`;不符合规则则返回可展示的错误消息。
前端恢复时按维度将 `step1Answer` 恢复到第 1 步、`step2Answer` 恢复到第 2 步;保存第 2 步后将 `currentStep` 写为 `3`,页面切换到 0 基索引 `2`
## 测试与验收
- 页面第 2 步仅展示两行原型维度和四列表头,不显示产品名称字段。
- 四项分析填写完整时,先调用第 2 步校验接口,再以 `saveAction: "SAVE"` 保存 `step2Answer`,最后进入第 3 步;不出现 `SUBMIT`
- 空白分析、缺失/重复/伪造维度与非学生身份均被后端拒绝。
- 已保存的两步内容可以分别恢复,且刷新后恢复进度到第 3 步(若该步骤已配置)。
- 后端服务和控制器测试、前端静态契约测试与生产构建均通过。