# 数据化选品与市场机会识别第二步设计 ## 目标 将“数据化选品与市场机会识别”的第二步实现为可填写、自动计算、可校验和可回显的指标权重设置页面,并保持学生端既有深色实训工作台风格。 ## 范围 - 页面:`/product/market-opportunity-selection` 的第二步“指标权重设置”。 - 一级指标固定为市场规模、市场潜力、竞争强度、运营难度。 - 二级指标固定为 9 项,分组、顺序和建议区间以原型为准。 - 不新增文件上传控件;顶部通用案例资料按钮继续沿用现有的图片和 PDF 预览能力。 ## 交互与计算 1. 学生必须先通过并保存第一步的指标分类,第二步才可填写。 2. 每个一级指标填写一个 1–100 的整数权重,四项合计必须为 100%。 3. 每个二级指标填写维度内的 1–100 整数权重;同一一级指标下的二级权重合计必须为 100%。 4. 对应总权重实时显示,计算公式为:一级指标权重 × 二级指标维度内权重 ÷ 100。 5. 全部对应总权重合计必须为 100%。未满足任一规则时,页面即时提示,保存时由后端再次校验。 6. 保存成功后,将第二步答案写入 `step2Answer` 并进入第三步;再次打开页面时回显已保存权重。 ## 指标清单与顺序 | 一级指标 | 一级建议区间 | 二级指标(顺序固定) | 二级建议区间 | | --- | --- | --- | --- | | 市场规模 | 25–35 | 搜索次数(万次)、成交金额(万元) | 25–35、65–75 | | 市场潜力 | 25–35 | 成交金额增速(%)、类目成交增速(%) | 55–65、35–45 | | 竞争强度 | 20–30 | 需供比、在线商品数、在线商家数 | 25–35、35–45、25–35 | | 运营难度 | 10–20 | 自然流占比(%)、退货率(%) | 55–65、35–45 | ## 保存与校验数据契约 保存到 `step2Answer` 的 JSON 结构固定为: ```json { "title": "市场机会识别与选品", "primaryWeights": { "市场规模": 30, "市场潜力": 25, "竞争强度": 25, "运营难度": 20 }, "dimensionWeights": { "search-count": 30, "transaction-amount": 70 }, "correspondingWeights": { "search-count": 9, "transaction-amount": 21 } } ``` 校验接口请求继续使用数组字段 `primaryWeights`(`group`、`weight`)和 `dimensionWeights`(`id`、`weight`);服务端不接受客户端传入的对应总权重,并自行复核总和。 ## 后端边界 现有第二步校验接口已经校验第一步完成状态、四类一级权重、九项二级权重及对应总权重总和。此次不改变接口字段或数据表结构,仅补充回归测试,确保上述规则持续有效。 ## 验收标准 - 原型中的四类一级指标、九项二级指标、建议区间与顺序一致。 - 权重输入、组内合计、对应总权重和总计均实时可见。 - 不合格数据不能保存并进入第三步。 - 合格数据可以保存、刷新后仍能回显。 - 页面不含原型未提供的上传控件;已配置的案例资料维持预览与下载行为。