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.
# 新产品调查与分析:第二步选定调查平台与产品
## 范围
仅调整学生端“新产品调查与分析”(`new-product-survey`)的第二步,以及支持该步骤提交校验的后端接口。保留当前任务配置的案例资料下载入口和下载行为;不调整教师端、管理端及其余实训步骤。
## 页面与交互
第二步标题为“选定调查平台与产品”。学生以消费者身份,通过搜索、浏览和对比采集一个真实 AI 产品的数据,并完成以下字段:
1. 调查平台:必选单选项为京东、天猫、抖音电商,并展示原型中的平台说明。
2. 调查场景:必选单选项为 AI 智能家居、AI 智能办公、AI 儿童玩具、AI 学习设备、AI 美妆辅助、其他场景;每项展示示例。选择“其他场景”后显示必填文本框,填写自定义场景名称。
3. 搜索关键词:必填单行输入框,提示学生按“核心词 + 属性词 + 场景词”组织关键词,并展示原型示例。
4. 产品名称:必填单行输入框。
5. 产品图片:必传 1 至 5 张图片。上传完成后以缩略图显示;点击缩略图查看大图,学生可删除已上传的图片。超过 5 张、非图片文件或上传失败均显示明确提示,且不写入答案。
步骤导航继续使用既有四步名称。点击“下一步”时,先调用第二步校验接口;校验通过后保存答案并进入第三步,未通过时停留当前页并显示校验提示。普通“保存”仍可保存草稿,不强制所有字段完整。
## 数据持久化与接口
页面将一个对象序列化到既有学生答案的 `step2Answer` 字段:
```json
{
"platform" : "京东" ,
"scene" : "AI儿童玩具" ,
"customScene" : "" ,
"keyword" : "AI智能对话机器人 3-6岁 玩具" ,
"productName" : "示例产品" ,
"images" : [
{ "name" : "product-main.png" , "url" : "/profile/upload/202608/...png" }
]
}
```
图片继续上传到现有 `/common/upload` ,只在答案 JSON 中保存原始文件名和服务端返回的 URL, 不新增图片表。刷新或再次进入页面时回填表单和缩略图; 旧版第二步表格 JSON 可以安全忽略,不阻止学生填写新版内容。
后端新增仅学生可调用的 `POST /api/student-training-answers/new-product-survey/step-2/validate` 。请求包括平台、场景、自定义场景、关键词、产品名称和图片 URL 列表。接口校验:学生身份、平台与场景已选择、选择“其他场景”时自定义场景非空、关键词与产品名称非空、图片 URL 数量在 1 至 5 范围且每项非空。校验成功后返回成功结果;前端随后复用现有学生实训答案保存接口持久化 `step2Answer` 。不新增标准答案或判题逻辑,因为本步骤采集的是学生自行选择的真实产品资料。
## 兼容性与验证
现有 `student_training_answer` 与步骤答案明细表继续承载 JSON, 因此成绩、进度和导出链路保持兼容。演示模式沿用浏览器会话存储, 并在本地执行同等的必填与图片数量校验, 不发起上传或后端校验请求。
验证包括:后端服务与控制器的合法请求、缺失字段、其他场景未填写、图片数量越界和非学生权限测试;前端静态测试覆盖选择项、自定义场景条件渲染、上传数量限制、缩略图预览、数据保存与校验调用;再执行前端构建与后端测试。