对于 {{ statement.targetUser || '【目标市场/用户】' }},我们的 {{ statement.productName || '【产品名称】' }} 是一个 {{ statement.productCategory || '【产品类别】' }},它能提供 {{ statement.coreValue || '【核心价值/关键收益】' }},因为它具有 {{ statement.differentiationReason || '【主要差异化理由】' }}。
+diff --git a/src/api/studentTrainingAnswer.js b/src/api/studentTrainingAnswer.js index 422d013..a8a0c3c 100644 --- a/src/api/studentTrainingAnswer.js +++ b/src/api/studentTrainingAnswer.js @@ -423,3 +423,91 @@ export function checkConsumerBehaviorStepFour(payload) { headers: { repeatSubmit: false }, }); } + +export function checkProductValuePositioningStepOne(payload) { + const rows = Array.isArray(payload?.rows) ? payload.rows : []; + const types = ["核心痛点1", "核心痛点2", "核心痛点3", "弱需求", "伪需求"]; + if (isStudentDemo()) { + const valid = rows.length === types.length && rows.every((row, index) => row?.id === index + 1 + && row?.type === types[index] + && Boolean(String(row?.description || "").trim()) + && Boolean(String(row?.scene || "").trim())); + return Promise.resolve({ + code: 200, + data: { + valid, + message: valid ? "核心痛点分类填写完整。" : "请完成 3 个核心痛点、弱需求和伪需求的描述与场景。", + }, + }); + } + return request({ + url: "/api/student-training-answers/product-value-positioning/step-1/validate", + method: "post", + data: { rows }, + headers: { repeatSubmit: false }, + }); +} + +export function checkProductValuePositioningStepTwo(payload) { + const customerProfile = payload?.customerProfile || {}; + const valueMap = payload?.valueMap || {}; + if (isStudentDemo()) { + const requiredValues = [ + customerProfile.jobs, customerProfile.pains, customerProfile.gains, + valueMap.products, valueMap.painRelievers, valueMap.gainCreators, + payload?.canvasUrl, + ]; + const valid = requiredValues.every((item) => Boolean(String(item || "").trim())); + return Promise.resolve({ + code: 200, + data: { + valid, + message: valid ? "价值主张画布填写完整。" : "请完整填写用户档案、产品价值地图并上传产品价值主张画布。", + }, + }); + } + return request({ + url: "/api/student-training-answers/product-value-positioning/step-2/validate", + method: "post", + data: payload, + headers: { repeatSubmit: false }, + }); +} + +export function checkProductValuePositioningStepThree(payload) { + const statements = Array.isArray(payload?.statements) ? payload.statements : []; + const requiredFields = ["targetUser", "productName", "productCategory", "coreValue", "differentiationReason"]; + if (isStudentDemo()) { + const valid = statements.length === 2 && statements.every((statement, index) => statement?.id === index + 1 + && requiredFields.every((field) => Boolean(String(statement?.[field] || "").trim()))); + return Promise.resolve({ + code: 200, + data: { valid, message: valid ? "两版定位陈述填写完整。" : "请完整填写两个产品价值定位陈述版本。" }, + }); + } + return request({ + url: "/api/student-training-answers/product-value-positioning/step-3/validate", + method: "post", + data: { statements }, + headers: { repeatSubmit: false }, + }); +} + +export function checkProductValuePositioningStepFour(payload) { + const sectionKeys = ["marketInsights", "marketOverview", "userAnalysis", "competitorAnalysis", "productRequirements"]; + if (isStudentDemo()) { + const valid = sectionKeys.every((key) => Array.isArray(payload?.[key]) && payload[key].length > 0 + && payload[key].every((row) => Boolean(String(row?.content || "").trim()))) + && Boolean(String(payload?.productPositioning || "").trim()); + return Promise.resolve({ + code: 200, + data: { valid, message: valid ? "MRD 文档填写完整。" : "请完整填写 MRD 的五组分析内容和产品定位。" }, + }); + } + return request({ + url: "/api/student-training-answers/product-value-positioning/step-4/validate", + method: "post", + data: payload, + headers: { repeatSubmit: false }, + }); +} diff --git a/src/views/product/differentiation.vue b/src/views/product/differentiation.vue index 1d5e0d7..910ef3b 100644 --- a/src/views/product/differentiation.vue +++ b/src/views/product/differentiation.vue @@ -48,20 +48,31 @@
价值主张的起点不是产品功能,而是用户痛点。不要试图满足所有人,只抓占 80% 的核心用户最痛的 3 个问题。
+参考实训 11 的需求优先级评估结果,整理出 Top3 核心痛点,同时识别弱需求和伪需求——它们不作为核心价值主张,只作为加分项。
| 序号 | +需求类型 | +需求描述 | +场景描述 | +
|---|---|---|---|
| {{ index + 1 }} | +{{ row.type }} | ++ | + |
| 维度 | 说明 | 内容 |
|---|---|---|
| 用户目标(Jobs) | 用户在相关场景中试图完成的任务 | |
| 痛点(Pains) | 用户遇到的障碍、风险和负面体验 | |
| 收益期望(Gains) | 用户期望的结果和额外收益 |
| 维度 | 说明 | 内容 |
|---|---|---|
| 产品与服务 | 我们提供给用户的产品和服务清单 | |
| 痛点缓释器(Pain Relievers) | 产品如何消除或缓解用户痛点 | |
| 增益创造器(Gain Creators) | 产品如何创造额外价值和惊喜体验 |
检查“产品价值地图”与“用户档案”是否实现匹配(Fit):每个痛点应有对应的痛点缓释器,每个收益期望应有对应的增益创造器。根据上表绘制产品价值主张画布。
+ +推荐工具及方法如下,自行选择:
+1. 下载模板,填写用户档案及产品价值地图,完成产品价值主张画布。
+ +2. 导出用户档案和价值主张地图两张表,使用通用 AI 大模型辅助生成画布。
+根据前面实训分析,使用经典定位陈述格式撰写简洁有力的产品价值定位陈述。
+经典定位陈述格式:对于【目标市场/用户】,我们的【产品名称】是一个【产品类别】,它能提供【核心价值/关键收益】,因为它具有【主要差异化理由】。
对于 {{ statement.targetUser || '【目标市场/用户】' }},我们的 {{ statement.productName || '【产品名称】' }} 是一个 {{ statement.productCategory || '【产品类别】' }},它能提供 {{ statement.coreValue || '【核心价值/关键收益】' }},因为它具有 {{ statement.differentiationReason || '【主要差异化理由】' }}。
+| 序号 | 模块 | 标题 | 内容 |
|---|---|---|---|
| {{ index + 1 }} | +{{ row.module }} | +{{ row.title }} | ++ |
根据以上结构框架及信息,结合实训 8-11,撰写 MRD 文档。
+1. 根据报告模板,自行分析撰写 MRD 文档。
+2. 使用通用 AI 大模型辅助完成报告,参考步骤提示词见案例资料文档。