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`)的第一步,以及支撑该步判题的后端接口和数据。保留当前任务配置中的案例资料下载按钮和下载行为;不调整教师端、管理端或其余实训步骤。
## 页面
第一步展示四步进度条,当前步骤为“产品卖点的三层次分类”。页面提供案例资料下载入口、说明文字和包含 11 条卖点的表格。每行显示序号、卖点内容和必选下拉框;下拉项固定为“核心层”“有形层”“延伸层”。不向学生展示标准答案。
点击“下一步”时,页面先校验 11 项均已选择。校验通过后请求判题接口:正确行显示成功状态,错误行显示错误提示但保留学生选择;全部正确时进入第二步。页面将学生选择和本步的判题结果保存进既有学生实训答案记录,以便刷新后恢复。
## 标准答案与判题
后端新增任务步骤标准答案存储,按 `task_key + step_no` 保存结构化 JSON。该 JSON 包含 11 条卖点的稳定标识和正确层级。服务启动时以幂等方式初始化 `new-product-survey` 第一步的标准答案;数据库中已有记录时不覆盖人工维护的答案。
新增仅学生可调用的第一步判题接口。接口接收 11 条 `{ id, category }` 选择,服务端从标准答案表读取答案后逐条比对,返回每项的正确状态、错误信息、正确数量、总数量和是否全部正确。响应不包含正确层级,避免泄露标准答案。
学生页面在收到判题响应后,再调用既有学生实训答案保存接口,持久化选择、判题结果和当前步骤。本步未全部正确时不推进步骤;保存当前进度仍可保存草稿,不触发判题。
## 数据与兼容性
新增标准答案表不改变现有 `training_task` 、班级任务配置或学生答案表的含义。学生作答及判题结果继续保存为第一步 JSON, 因此现有成绩、进度和导出链路保持兼容。演示模式沿用现有浏览器会话存储, 不调用后端判题接口; 前端在演示模式使用同一套题目答案进行本地判题, 以保证页面可演示。
## 异常处理与验证
后端拒绝题目数量、卖点标识或层级值不合法的请求,并在未配置标准答案时返回明确错误。前端显示可理解的错误提示,网络或保存失败时不推进步骤,也不丢失当前选择。
验证包括:后端判题服务的全对、错项、无效输入和初始化不覆盖用例;前端静态测试覆盖题目结构、下拉项、判题调用与错误状态;构建并启动前后端后验证接口与页面可访问。