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.
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.
# 新产品调查与分析:第三步 AI 产品三层次分析
## 范围
仅调整学生端“新产品调查与分析”(`new-product-survey`)的第三步,以及支持该步骤提交校验的后端接口。保留前两步、案例资料下载、教师端、管理端和第四步既有行为。
## 页面与交互
第三步标题为“AI 产品三层次分析”。页面说明学生应基于第二步采集的真实数据,运用产品三层次理论进行深度分析。
页面使用三列表格:
1. 分析维度: 固定三行, 分别为核心层( AI 技术解决的核心需求/功能)、有形层(外观/材质/参数/价格策略)、延伸层(软件升级/专属服务/社群运营)。
2. 实例: AI 学习机:固定显示原型中的参考要点:核心层为“大模型作业批改、 自适应学习路径规划”;有形层为“护眼屏+铝合金机身、搭载 NPU 芯片、全平台统一定价 2999 元/直播间专属价 2699 元”; 延伸层为“终身免费题库更新、VIP 学科规划师 1 对 1、家长互助社群及资料共享微信群”。
3. 产品分析:针对学生在第二步选择的产品填写。表头显示第二步产品名称,未填写时显示“所选产品”。每行均为多行输入框,按换行录入要点。
核心层、有形层、延伸层各自至少需要两条非空要点。页面显示该行已填写的要点数量和“至少 2 条”的提示;不满足时保持当前页并显示可理解的错误信息。草稿保存不强制完成;点击“下一步”校验通过后保存并进入第四步。
## 数据与接口
第三步继续写入既有 `StudentTrainingAnswer.step3Answer` ,采用以下 JSON 结构:
```json
{
"rows" : [
{ "dimension" : "核心层" , "points" : [ "要点一" , "要点二" ] },
{ "dimension" : "有形层" , "points" : [ "要点一" , "要点二" ] },
{ "dimension" : "延伸层" , "points" : [ "要点一" , "要点二" ] }
]
}
```
前端输入仍以每行的多行文本编辑,保存时由换行规范化为 `points` ;回填时将要点重新换行展示。对于此前版本保存的 `product1` 、`product2`、`product3` 表格答案,页面只取其中第一个非空产品列并转换为当前行文本,保证已保存草稿可继续编辑。
后端新增仅学生可调用的 `POST /api/student-training-answers/new-product-survey/step-3/validate` 。请求传入三行 `{ dimension, points }` 。接口校验学生身份、三层次行标识完整且无重复、每行至少两条去空白后的要点、每条要点非空;校验成功返回 `{ valid: true, message: "校验通过" }` 。该接口只校验填写完整度,不判定学生对其自主选择产品的分析内容是否正确,不新增答案表。
演示模式不调用后端,使用同样的本地校验规则;图片和第二步答案继续沿用既有会话存储与保存逻辑。
## 验证
后端测试覆盖合法三层分析、少于两条要点、维度缺失或重复、非学生权限和控制器调用。前端测试覆盖固定参考内容、产品名称回显、多行要点数量提示、步骤答案序列化与第 3 步校验调用;完成后执行全量后端测试、前端测试和 Vite 构建。