diff --git a/backend/pipeline/llm/generate_strategy.py b/backend/pipeline/llm/generate_strategy.py index 4f1d170..0b140db 100644 --- a/backend/pipeline/llm/generate_strategy.py +++ b/backend/pipeline/llm/generate_strategy.py @@ -16,7 +16,7 @@ from .llm_client import call_llm, estimate_chat_input_tokens, llm_context_window STRATEGY_DATA_RULES = """**全局禁止编造(适用于输出全文各节、各表、各段;独立策略稿与报告第九章策略归纳**共用**本段,硬性)**: - **事实与数字**:销量、GMV、占比、价带、条数、份额、券面额、满减/满折门槛、到手价、店铺/品牌计数与排名、SKU 数、接口返回量等,**仅可**来自**本次调用输入 JSON** 中已给出的字段(策略稿为 `structured_brief`、`rules_draft_markdown` 内摘录、`report_strategy_excerpt`、`strategy_decisions`、`business_notes`;第九章嵌入为 `competitor_brief`、可选 `prior_chapter_llm_narratives`);**禁止**凭空新增、改口径或写成「已监测证实」而无字段支撑。 - **主体与名称**:**禁止**引入上述输入中**未出现**的**具体**品牌名、店铺名、SKU 名、商品标题作为**事实陈述**;若 `strategy_decisions`/备注/brief/节选已含则可写;否则用「头部/同类竞品」等泛称或「待业务指定对标」。 -- **用户侧表述**:**禁止**虚构评价原文、访谈引语、带引号的「用户说…」;细则见下文「§2 针对痛点要怎么做」表第一列。 +- **用户侧表述**:**禁止**虚构评价原文、访谈引语、带引号的「用户说…」;细则见下文「§2 针对痛点要怎么做」表**痛点简述**列。 - **促销与活动**:**禁止**编造活动名、具体规则、补贴比例;细则见下文促销与第八章探针相关条款。 - **策略动作与落地结果**:可写「建议」「假设」「待验证」的动作方向,**不得**编造「已执行」「已上线」「数据显示转化率/复购提升」等**无输入依据**的结果。 - **信息不足**:须写「输入未体现」「待核对」「假设:」「待验证:」,**禁止**用确定语气掩盖缺失依据。 @@ -27,8 +27,9 @@ STRATEGY_DATA_RULES = """**全局禁止编造(适用于输出全文各节、 - **必须**把篇幅放在**策略**:§2「针对痛点要怎么做」、后文战术与节奏(**勿**与报告重复统计展开)。 **数据与口径(硬性,与宿主分析报告同源输入)**: -- **§2「针对痛点要怎么做」表(反捏造,硬性)**: - - **第一列「用户痛点(简述)」**:**禁止**书写「用户反馈『……』」「评价称『……』」等**带引号的逐字原话**,除非该片段在 `structured_brief`、`strategy_hints`、`report_strategy_excerpt` 或 `business_notes` 中**已出现相同或明显包含**的文本;否则一律**不得**用引号假装引用。 +- **§2「针对痛点要怎么做」表(反捏造 + 分类目,硬性)**: + - **「类目/细类(本决策适用)」列**:须与 `structured_brief` 中类目混排、矩阵分组、§1.2 细类讨论或 `strategy_decisions` 已选战场**可对上**;**禁止**编造未出现的类目名。**多细类并存**(如饼干 vs 面包)时,**必须分行**分策,**禁止**用「全站用户」「整体策略」等**泛化**一句覆盖彼此冲突的动作。**若**类目或主推线尚不确定,该行可写「待业务定类」或「假设:优先××线」,并说明**分类决策依据或待补信息**;仍须避免与数据明显矛盾。 + - **「用户痛点(简述)」列**:**禁止**书写「用户反馈『……』」「评价称『……』」等**带引号的逐字原话**,除非该片段在 `structured_brief`、`strategy_hints`、`report_strategy_excerpt` 或 `business_notes` 中**已出现相同或明显包含**的文本;否则一律**不得**用引号假装引用。 - 若输入仅有主题级信号(关注词、负向归因方向、价差行数等),痛点简述应写**可追溯归纳**,例如「与 brief 中 ×× 字段一致」「与报告第八章/节选已归纳的 ×× 主题一致」「监测摘要见 `strategy_hints` 第 n 条」,或写「**待原评论抽样核实**」——**禁止**把合理推测写成「用户已明确说……」的事实口吻。 - **禁止**凭空发明痛点行(如「配料相似」「卖点雷同」「性价比一般」)作为**已监测结论**;此类表述仅当 `structured_brief`、节选或备注中**确有同类主题或措辞**时方可写入,否则不写或标为待验证假设。 - **不得编造**销量、GMV、未在 `structured_brief` 与底稿中出现的占比或价格;底稿与摘要中的数字须保持一致。 @@ -51,7 +52,7 @@ STRATEGY_SYSTEM = f"""你是市场策略顾问,根据**结构化监测摘要** **决策边界(硬性)**: - **业务已在 `strategy_decisions` 中填写的项**(角色、时间、成功标准、战场一句话、定位勾选、竞争倾向、四柱、目标客群/对标/资源备注、**营销策略**与**总体策略**等)视为**已定决策**:成稿须**落实为具体执行句**,**不得**改写成相反结论或再要求用户「请选择」。 - **表单中为空或占位(如 *待填*、*骨架占位*)的项**:结合 `structured_brief`、节选与数据摘录**补全为可执行表述**;补全须与数据方向一致。 -- **成稿阶段避免**:反复「请业务决策」「待确认后再定」;不确定性一句带过即可。 +- **成稿阶段避免**:反复「请业务决策」「待确认后再定」;**不确定时**须在 §2.1 表中用「类目/细类」列 +「待业务定类」「假设:」**分类**写清,**禁止**只写泛化一句带过。 **输出结构与阅读顺序(须与 `rules_draft_markdown` 章节一致,勿另起目录)**: **摘要** → **一、顾客是谁**(含人群与路径、细类讨论、本品聚焦)→ **二、产品价值与用户痛点**(**仅 §2.1 针对痛点要怎么做** 表,**勿**再设独立「痛点表/价值对表/负向归因」子节)→ **三、为什么要买「这款产品」**(**仅 §3.1 品类与时机**;**无 §3.2**,转化与价带应对已在 §2 表内则**勿重复**)→ **四、为什么要选「这个品牌」** → **五、与其它品牌有何不同** → **六、阶段目标与路径** → **七、品牌四线**(建设·打造·运营·体验)→ **八、战术支柱**(产品/定价/促销/渠道与传播)→ **九、风险、假设与待验证** → **十、下一步与节奏**(含业务备注)→ **附录**。 @@ -60,13 +61,13 @@ STRATEGY_SYSTEM = f"""你是市场策略顾问,根据**结构化监测摘要** **语气**:面向业务读者,避免 CR1、心智等内部缩写;**勿在成稿中反复强调「对齐某报告第几章」**,以策略表述为主。 **策略表述硬性(痛点 → 怎么做,须覆盖全书,不得只写 §2~§8 部分章节)**: -- **总原则**:成稿**不是**第二份分析报告,也**不是**市场形势说明书。每条重要内容应能回答:**针对哪条用户痛点**(与 **§2.1** 表对应)、**我们采取什么动作**、**在具体触点怎么做**(商详/主图/短视频/客服/规格/价格呈现等)、**如何验证**(若适用)。 +- **总原则**:成稿**不是**第二份分析报告,也**不是**市场形势说明书。每条重要内容应能回答:**针对哪条用户痛点、在哪条类目/细类下**(与 **§2.1** 表对应)、**我们采取什么动作**、**在具体触点怎么做**(商详/主图/短视频/客服/规格/价格呈现等)、**如何验证**(若适用)。 - **§2.1 针对痛点要怎么做**(若底稿已有表头)须**填写实质内容**;全稿**动作总锚**为 §2.1。若无表,须在 **§二** 或 **§八** 用等价分条写清「痛点—动作—落地—验证」。 **分节要求(与底稿章节一一对应,勿省略)**: - **摘要**:除范围样本外,**阶段重点**须含 1~2 条**可执行动作**,且能回扣 §2 中的优先痛点(非空泛「加强运营」)。 - **一、顾客是谁**:**禁止**重复报告中的细类词频、分品类样本量展开、文本挖掘方法;用 **少量结论句**(谁搜、关心什么)即可,**1.3 本品聚焦**须写清「本期主攻人群/场景」与 **§2.1** 的对应关系。 -- **二**:**仅 §2.1** 一张表:「用户痛点(简述)| 策略动作 | 具体怎么做 | 如何验证」。须覆盖监测已支撑的主要维度(口感/质地分线、分量/规格、信任与价格等,依数据取舍);**第一列**遵守「§2 表」反捏造条款。**禁止**再写独立「痛点与证据表」「价值对表」「负向归因」子节(与 §二 重复的内容一律并入本表或删去)。 +- **二**:**仅 §2.1** 一张表:「类目/细类(本决策适用)| 用户痛点(简述)| 策略动作 | 具体怎么做 | 如何验证」。须覆盖监测已支撑的主要维度(**按类目分行**,口感/质地分线、分量/规格、信任与价格等,依数据取舍);**类目列 + 痛点简述列**遵守「§2 表」条款。**禁止**再写独立「痛点与证据表」「价值对表」「负向归因」子节(与 §二 重复的内容一律并入本表或删去)。 - **三**:**仅 §3.1**(品类与时机、检索/样本、购买理由);可结合 brief 写价带锚点一句。**禁止**写 §3.2「转化障碍与应对」;若与购买相关的障碍与应对已在 §2.1 表内,§3.1 **勿再复述**。 - **四**:品牌承诺与调性须能落到**可感知触点**(如商详第几屏、包装、客服首句),避免只有形容词。 - **五**:§5.2 差异化、§5.3 竞争应对须写清**相对竞品多做什么/少做什么、具体一步动作**。 diff --git a/backend/pipeline/reporting/strategy_draft.py b/backend/pipeline/reporting/strategy_draft.py index 06b1bb4..5956f20 100644 --- a/backend/pipeline/reporting/strategy_draft.py +++ b/backend/pipeline/reporting/strategy_draft.py @@ -171,10 +171,7 @@ def build_strategy_draft_markdown( lines: list[str] = [ f"# 市场策略制定草稿 · 「{kw}」", "", - "> **骨架说明**:本页为**规则骨架**(占位与少量摘录)。大模型成稿时须写成**短、可执行**的完整策略稿,结构与 [`docs/demo` 市场策略稿示例](docs/demo) 一致:**摘要 → 一~十 → 附录**。" - "**不与《竞品分析报告》重复**:统计表、词频/共现、细类样本量、文本挖掘方法等以报告为准;策略稿只写**结论要点 + 怎么做**,可写「详见报告 §×」。" - "**决策在策略生成表单完成**;未填项由模型结合本任务摘要与可选节选补全,**成稿不再写「请再选 / 请决策」式套话**。" - "**全局禁止编造**:数字、品牌/店铺名、用户引语、活动规则等须能在 `structured_brief` / 报告节选 / 业务备注中核对;无依据处写「假设」「待核对」「输入未体现」(见 `generate_strategy.py` 中 `STRATEGY_DATA_RULES`)。", + "> **骨架说明**:本页为规则骨架;结构与 [`docs/demo`](docs/demo) 示例一致。**全局禁止编造**见 `generate_strategy.py` 中 `STRATEGY_DATA_RULES`。", "", ] if generated_at_iso: @@ -291,16 +288,18 @@ def build_strategy_draft_markdown( [ "## 二、产品价值与用户痛点", "", - "*本节**仅**用下表写清**针对痛点要怎么做**(痛点简述 + 动作 + 落地 + 验证)。**不再**单设「痛点表 / 价值对表 / 负向归因」子节,避免与 §三、§八重复。*", + "*本节**仅**用下表写清**针对痛点要怎么做**(**类目** + 痛点简述 + 动作 + 落地 + 验证)。**不再**单设「痛点表 / 价值对表 / 负向归因」子节,避免与 §三、§八重复。*", "", "*「用户痛点(简述)」须与 `structured_brief` / 策略线索 / 报告节选**可核对**;**禁止**编造「用户反馈『……』」式引语,除非原句已出现在上述输入中。*", "", + "*「类目/细类」列:写明本行决策**适用于哪一类**(如饼干/面包/全检索池);多细类须**分行**,**禁止**用一句「全站」覆盖彼此冲突的策略;类目未定可写「待业务定类」并附分类假设。*", + "", "### 2.1 针对痛点要怎么做", "", - "| 用户痛点(简述) | 策略动作 | 具体怎么做(触点/话术/规格/渠道) | 如何验证 |", - "|------------------|----------|-----------------------------------|----------|", - "| *(成稿依监测与评论归纳,可含口感/分量/价格信任等)* | *(动词句)* | *(可执行)* | *(指标或抽样)* |", - "| | | | |", + "| 类目/细类(本决策适用) | 用户痛点(简述) | 策略动作 | 具体怎么做(触点/话术/规格/渠道) | 如何验证 |", + "|--------------------------|------------------|----------|-----------------------------------|----------|", + "| *(如:饼干线 / 西式糕点 / 全池仅当可解释)* | *(口感/分量/价格信任等)* | *(动词句)* | *(可执行)* | *(指标或抽样)* |", + "| | | | | |", "", ] ) diff --git a/backend/pipeline/tests/test_strategy_draft.py b/backend/pipeline/tests/test_strategy_draft.py index 9b19b7b..37cca8e 100644 --- a/backend/pipeline/tests/test_strategy_draft.py +++ b/backend/pipeline/tests/test_strategy_draft.py @@ -28,6 +28,7 @@ class StrategyDraftTests(SimpleTestCase): self.assertIn("重点:华东", md) self.assertIn("## 摘要", md) self.assertIn("针对痛点要怎么做", md) + self.assertIn("类目/细类", md) self.assertIn("全局禁止编造", md) self.assertNotIn("### 3.2 转化障碍与应对", md) self.assertIn("## 一、顾客是谁", md) diff --git a/docs/demo/市场策略稿-示例-20260413_104252_低GI.md b/docs/demo/市场策略稿-示例-20260413_104252_低GI.md index efd7280..c0beb84 100644 --- a/docs/demo/市场策略稿-示例-20260413_104252_低GI.md +++ b/docs/demo/市场策略稿-示例-20260413_104252_低GI.md @@ -45,12 +45,12 @@ ### 2.1 针对痛点要怎么做 -| 用户痛点(简述) | 策略动作 | 具体怎么做(触点/话术/规格/渠道) | 如何验证 | -|------------------|----------|-----------------------------------|----------| -| 分量/规格与场景预期不符 | 主推款参数与视觉诚实 | 商详首屏与参数表写清净含量、包数、建议一次食用量;主图避免「看起来很大包」 | 差评中「量小」占比、问大家置顶答复 | -| 口感适配(干、噎、松软;按饼干/面包分线) | 分线承接 | 饼干线强化酥脆/饱腹;面包线补充复热、切片、搭配(牛奶)说明 | 细类差评抽样、复购与晒图 | -| 比价与促销不透明 | 到手价与规则可核对 | 标价、券、榜单与后台一致;未监测到的满减/满折上架前与运营对齐后再宣称 | 大促期客诉、价差投诉 | -| 健康与信任 | 配料与 GI 叙事可验证 | 配料表、营养成分与商详一致;禁用无依据疗效 | 抽检与法务审核记录 | +| 类目/细类(本决策适用) | 用户痛点(简述) | 策略动作 | 具体怎么做(触点/话术/规格/渠道) | 如何验证 | +|--------------------------|------------------|----------|-----------------------------------|----------| +| 饼干/粗粮饼干 | 分量与场景预期 | 参数与视觉诚实 | 商详写清净含量、包数;主图避免「看起来很大包」 | 差评「量小」、问大家 | +| 西式糕点/面包 | 口感适配(干、噎、松软) | 分线承接松软+搭配 | 复热、切片、牛奶搭配说明;与糕点评论高频一致 | 细类差评抽样、晒图 | +| 全检索池(价盘共性) | 比价与促销不透明 | 到手价与规则可核对 | 标价、券、榜单与后台一致;满减未监测到的上架前对齐运营 | 大促客诉、价差投诉 | +| 本品全线(若仅一条 SKU 可写「主推款」) | 健康与信任 | 配料与 GI 可验证 | 配料表、营养成分与商详一致;禁用无依据疗效 | 抽检、法务记录 | *说明:成稿时 §1.2 宜压缩为结论句,避免复述报告词频;负向主题归纳详见同任务《竞品分析报告》第八章。* diff --git a/docs/demo/市场策略稿-示例-基于brief-schema样例.md b/docs/demo/市场策略稿-示例-基于brief-schema样例.md index df4b51c..e26dd19 100644 --- a/docs/demo/市场策略稿-示例-基于brief-schema样例.md +++ b/docs/demo/市场策略稿-示例-基于brief-schema样例.md @@ -47,11 +47,11 @@ ### 2.1 针对痛点要怎么做 -| 用户痛点(简述) | 策略动作 | 具体怎么做(触点/话术/规格/渠道) | 如何验证 | -|------------------|----------|-----------------------------------|----------| -| 担心「低GI」名不副实、配料与体验不可感知 | 配料与 GI 叙事可验证 | 商详配料表、营养成分与监测/检测一致;口感 QA 与问大家 | 抽检、差评主题 | -| 价格带宽、促销复杂,难比「真实到手价」 | 到手价与规则透明 | 卡位接近样本中位 **16.9**;促销表述与 `notes`、价盘一致 | 大促期客诉 | -| 品牌与店铺分散,信任成本高 | 证据链与价位锚点 | 与同任务报告价盘一致;不夸大未在简报出现的销量表述 | 商详与报告对照 | +| 类目/细类(本决策适用) | 用户痛点(简述) | 策略动作 | 具体怎么做(触点/话术/规格/渠道) | 如何验证 | +|--------------------------|------------------|----------|-----------------------------------|----------| +| 饼干(`matrix_by_group` 饼干组) | 担心「低GI」名不副实、配料与体验不可感知 | 配料与 GI 叙事可验证 | 商详配料表、营养成分与监测/检测一致;口感 QA 与问大家 | 抽检、差评主题 | +| 饼干(同上) | 价格带宽、促销复杂,难比「真实到手价」 | 到手价与规则透明 | 卡位接近样本中位 **16.9**;促销表述与 `notes`、价盘一致 | 大促期客诉 | +| 全池共性(列表侧) | 品牌与店铺分散,信任成本高 | 证据链与价位锚点 | 与同任务报告价盘一致;不夸大未在简报出现的销量表述 | 商详与报告对照 | **依据**:简报 `price_stats`、`concentration`、`comment_focus_keywords`、`notes`。 diff --git a/docs/planning/策略生成-框架确定.md b/docs/planning/策略生成-框架确定.md index 6da0736..3a6ae3c 100644 --- a/docs/planning/策略生成-框架确定.md +++ b/docs/planning/策略生成-框架确定.md @@ -78,7 +78,7 @@ |------|------|------------------------| | 0 | **摘要** | 除范围样本外,**阶段重点**须含 1~2 条**可感知动作**(如「主推款商详标明规格与克重」),而非仅「加强运营」 | | 1 | **一、顾客是谁** | 1.1 人群与路径 · 1.2 细类/评论侧归纳 · 1.3 本品聚焦(表单:角色、客群、对标) | -| 2 | **二、产品价值与用户痛点** | **仅 §2.1 针对痛点要怎么做**(一张表:痛点简述 → 动作 → 落地 → 验证) | +| 2 | **二、产品价值与用户痛点** | **仅 §2.1** 表:「类目/细类 → 痛点简述 → 动作 → 落地 → 验证」;多细类**分行**,不确定则「待业务定类」+ 假设 | | 3 | **三、为什么要买「这款产品」** | **仅 §3.1** 品类与时机、购买理由;**无 §3.2**(与 §二 不重复写障碍与应对) | | 4 | **四、为什么要选「这个品牌」** | 承诺与调性 · 信任与证据 · 主定位(表单勾选) | | 5 | **五、与其它品牌有何不同** | 对比对象 · 差异化 · **竞争应对须写可执行应对**(不主动价格战 / 跟价时如何说明等) | @@ -93,9 +93,9 @@ **§2.1 针对痛点要怎么做(推荐列)**: -| 用户痛点(简述) | 策略动作 | 具体怎么做(触点/话术/规格/渠道) | 如何验证 | -|------------------|----------|-----------------------------------|----------| -| | | | | +| 类目/细类(本决策适用) | 用户痛点(简述) | 策略动作 | 具体怎么做(触点/话术/规格/渠道) | 如何验证 | +|--------------------------|------------------|----------|-----------------------------------|----------| +| | | | | | **全文各章「怎么做」补充(除 §2.1 外,摘要与一、三~五、九、十亦须落地)** @@ -152,7 +152,7 @@ LLM 路径下:**A** 经 `compact_brief_for_llm` 压缩进 payload;**B** 原 |----------|----------| | 六主轴 + 品牌四线、摘要→一~十→附录 | `build_strategy_draft_markdown`、`STRATEGY_SYSTEM` | | 与竞品报告分工、不重复统计展开 | `STRATEGY_DATA_RULES`、底稿骨架说明 | -| 痛点 → 怎么做、仅 §2.1 表 | 底稿 §2.1;`STRATEGY_SYSTEM` 全书分节要求 | +| 痛点 → 怎么做、仅 §2.1 表(含类目/细类列) | 底稿 §2.1;`STRATEGY_DATA_RULES` + `STRATEGY_SYSTEM` §二 | | 除 §2 外各章须带可执行句 | `STRATEGY_SYSTEM` 分节要求;规划 §1.1 表 | | 语气:少内部缩写、少反复「对齐第几章」 | `STRATEGY_SYSTEM` **语气**段 | | 分量/规格/克重痛点 | `STRATEGY_SYSTEM` §二;底稿 §2.1 提示 | diff --git a/docs/templates/市场策略稿-目录模板-六主轴与品牌四线.md b/docs/templates/市场策略稿-目录模板-六主轴与品牌四线.md index 021c473..eac8871 100644 --- a/docs/templates/市场策略稿-目录模板-六主轴与品牌四线.md +++ b/docs/templates/市场策略稿-目录模板-六主轴与品牌四线.md @@ -45,9 +45,9 @@ ### 2.1 针对痛点要怎么做 -| 用户痛点(简述) | 策略动作 | 具体怎么做(触点/话术/规格/渠道) | 如何验证 | -|------------------|----------|-----------------------------------|----------| -| | | | | +| 类目/细类(本决策适用) | 用户痛点(简述) | 策略动作 | 具体怎么做(触点/话术/规格/渠道) | 如何验证 | +|--------------------------|------------------|----------|-----------------------------------|----------| +| | | | | | **依据**:监测摘要 / 报告节选 / 业务备注(可溯源)________