docs(strategy): 全局禁止编造贯穿底稿与规划

规则底稿骨架增加全局约束说明;规划与 alignment 文档对照表更新;测试断言骨架含「全局禁止编造」。generate_strategy 中全局条款与用户前缀若未提交则一并纳入。

Made-with: Cursor
This commit is contained in:
hub-gif 2026-04-20 16:48:25 +08:00
parent 71395d217c
commit 812cc1dac7
5 changed files with 26 additions and 6 deletions

View File

@ -13,7 +13,15 @@ from ..reporting.strategy_draft import (
)
from .llm_client import call_llm, estimate_chat_input_tokens, llm_context_window_size
STRATEGY_DATA_RULES = """**与竞品分析报告的分工(硬性)**
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.1 痛点表证据信号
- **促销与活动****禁止**编造活动名具体规则补贴比例细则见下文促销与第八章探针相关条款
- **策略动作与落地结果**可写建议假设待验证的动作方向**不得**编造已执行已上线数据显示转化率/复购提升**无输入依据**的结果
- **信息不足**须写输入未体现待核对假设待验证**禁止**用确定语气掩盖缺失依据
**与竞品分析报告的分工硬性**
- 宿主报告已含样本量价带分布词频/共现矩阵第八章文本挖掘等**统计分析**策略稿**不得**重复展开同类内容不重写词频表细类评论条数罗列统计方法说明与报告图表逐条复述
- **允许**用一两句**结论性**话概括用户侧/评论侧要点必要时写详见同任务竞品分析报告§× / 附录
- **必须**把篇幅放在**策略**痛点归纳§2.5 动作表怎么做与验证后文章节
@ -38,6 +46,8 @@ STRATEGY_SYSTEM = f"""你是市场策略顾问,根据**结构化监测摘要**
{STRATEGY_DATA_RULES}
**落实范围**上文全局禁止编造适用于**摘要一至十附录**的每一句话与表格每一格**不得**因章节不同而放宽
**决策边界硬性**
- **业务已在 `strategy_decisions` 中填写的项**角色时间成功标准战场一句话定位勾选竞争倾向四柱目标客群/对标/资源备注**营销策略****总体策略**视为**已定决策**成稿须**落实为具体执行句****不得**改写成相反结论或再要求用户请选择
- **表单中为空或占位 *待填**骨架占位*的项**结合 `structured_brief`节选与数据摘录**补全为可执行表述**补全须与数据方向一致
@ -77,7 +87,10 @@ STRATEGY_SYSTEM = f"""你是市场策略顾问,根据**结构化监测摘要**
**输出** Markdown 正文不要 ``` 围栏须收束各小节与全文勿中途截断"""
STRATEGY_USER_PREFIX = """请基于以下 JSON 输出最终策略稿Markdown\n\n"""
STRATEGY_USER_PREFIX = (
"请基于以下 JSON 输出最终策略稿Markdown"
"输出前自检:全文不得包含输入 JSON 中未出现的具体数字、品牌/店铺名、用户引语与活动规则;不确定处须写「假设」「输入未体现」或「待核对」。\n\n"
)
def generate_strategy_draft_markdown_llm(
@ -218,6 +231,8 @@ STRATEGY_OPPORTUNITIES_SYSTEM = (
**与独立下载策略稿的关系**独立策略稿使用摘要附录的六主轴结构本节**不是**完整策略稿仅输出下列 ``####`` 主题块,避免与宿主第九章标题重复。
**全局禁止编造**见上文 `STRATEGY_DATA_RULES` 段首**本节每个 ``####`` 块**均须遵守(含不得虚构用户引语、未在 ``competitor_brief`` 出现的品牌名与数字)。
**与前文分析严格对齐硬性优先于自由发挥**
- **定性主题**各细类讨论焦点正负向体验场景与关注词归纳配料/卖点叙事促销形态描述等须与 ``prior_chapter_llm_narratives`` 中已出现的表述**方向一致****禁止**另写一套与节选**明显矛盾**的品类判断品牌举例或用户痛点主题
- **定量与可核验事实**价带分位数店铺/品牌占比条数评论统计字段等**** ``competitor_brief`` **为准**若节选与 brief 数字冲突**采纳 brief**且勿复述与数字冲突的节选句
@ -244,7 +259,8 @@ STRATEGY_OPPORTUNITIES_SYSTEM = (
STRATEGY_OPPORTUNITIES_USER_PREFIX = (
"请根据以下 JSON 撰写策略归纳正文Markdown"
"``competitor_brief`` 为结构化摘要;若含 ``prior_chapter_llm_narratives``,则为 第五至第八章 大模型归纳节选,须与策略正文对齐。"
"宿主报告已含章节标题,**勿在输出中写第九章或「策略与机会」类标题**。\n\n"
"宿主报告已含章节标题,**勿在输出中写第九章或「策略与机会」类标题**。"
"输出前自检:不得编造 brief 与节选未出现的数字、品牌/店铺名、用户引语与活动规则;不确定须用「假设:」「待验证:」「输入未体现」。\n\n"
)

View File

@ -173,7 +173,8 @@ def build_strategy_draft_markdown(
"",
"> **骨架说明**:本页为**规则骨架**(占位与少量摘录)。大模型成稿时须写成**短、可执行**的完整策略稿,结构与 [`docs/demo` 市场策略稿示例](docs/demo) 一致:**摘要 → 一~十 → 附录**。"
"**不与《竞品分析报告》重复**:统计表、词频/共现、细类样本量、文本挖掘方法等以报告为准;策略稿只写**结论要点 + 怎么做**,可写「详见报告 §×」。"
"**决策在策略生成表单完成**;未填项由模型结合本任务摘要与可选节选补全,**成稿不再写「请再选 / 请决策」式套话**。",
"**决策在策略生成表单完成**;未填项由模型结合本任务摘要与可选节选补全,**成稿不再写「请再选 / 请决策」式套话**。"
"**全局禁止编造**:数字、品牌/店铺名、用户引语、活动规则等须能在 `structured_brief` / 报告节选 / 业务备注中核对;无依据处写「假设」「待核对」「输入未体现」(见 `generate_strategy.py` 中 `STRATEGY_DATA_RULES`)。",
"",
]
if generated_at_iso:

View File

@ -28,6 +28,7 @@ class StrategyDraftTests(SimpleTestCase):
self.assertIn("重点:华东", md)
self.assertIn("## 摘要", md)
self.assertIn("「证据信号」须与", md)
self.assertIn("全局禁止编造", md)
self.assertIn("## 一、顾客是谁", md)
self.assertIn("## 七、品牌四线", md)
self.assertIn("市场策略制定草稿", md)

View File

@ -21,7 +21,7 @@
| 维度 | 要求 |
|------|------|
| **事实源** | 仅允许来自:同任务 `build_competitor_brief` 产物、已落盘的 `competitor_analysis.md` 中与策略相关的既定小节、各章 LLM 节选 JSON、`strategy_hints`、第九章策略相关落盘(如 `strategy_opportunities_llm.json`)。 |
| **策略稿** | 以规则底稿为骨架LLM 仅做可读性润色与衔接,**不得新增** brief/底稿中不存在的数字、品牌、销量、价格。 |
| **策略稿** | 以规则底稿为骨架LLM 仅做可读性润色与衔接,**不得新增** brief/底稿中不存在的数字、品牌、销量、价格。全文还须遵守 `generate_strategy.py``STRATEGY_DATA_RULES` 段首「**全局禁止编造**」(用户引语、活动规则、无依据的落地结果等)。 |
| **报告第九章** | 继续遵守 `STRATEGY_OPPORTUNITIES_SYSTEM``generate_strategy.py`中的硬性条款brief 优先、与 `prior_chapter_llm_narratives` 不矛盾、假设性表述等。 |
| **营销内容** | 视为**表达层**:不新增事实;把同一批证据改写成面向某类受众的叙事;可核验结论须能指回 brief 或报告节选。 |

View File

@ -131,7 +131,7 @@ LLM 路径下:**A** 经 `compact_brief_for_llm` 压缩进 payload**B** 原
| 模式 | 输出 | 最低验收 |
|------|------|----------|
| `generator=rules` | 带占位符的 Markdown | 章节齐全;含 **§2.5** 表头;数字仅来自 brief 摘录;与 `chapter8_text_mining_probe` 时无关注词条形图口径冲突 |
| `generator=llm` | 可读成稿 | 章节与骨架一致;无编造数字;已填表单项落实为执行句;节选非空时与第九章方向不矛盾;**全书**能体现「痛点→动作→怎么做」(含摘要、一、三~十);**禁止**仅复述市场描述而无 actionable 句 |
| `generator=llm` | 可读成稿 | 章节与骨架一致;**全书**遵守 `STRATEGY_DATA_RULES` 段首「全局禁止编造」(数字、品牌名、用户引语、活动规则、落地结果等);已填表单项落实为执行句;节选非空时与第九章方向不矛盾;**全书**能体现「痛点→动作→怎么做」(含摘要、一、三~十);**禁止**仅复述市场描述而无 actionable 句 |
---
@ -153,7 +153,9 @@ LLM 路径下:**A** 经 `compact_brief_for_llm` 压缩进 payload**B** 原
| 除 §2 外各章须带可执行句 | `STRATEGY_SYSTEM` 分节要求;规划 §1.1 表 |
| 语气:少内部缩写、少反复「对齐第几章」 | `STRATEGY_SYSTEM` **语气**段 |
| 分量/规格/克重痛点 | `STRATEGY_SYSTEM` §二;底稿 §2.1 提示 |
| 全文禁止编造(各节、各表) | `STRATEGY_DATA_RULES` 段首「全局禁止编造」;`STRATEGY_SYSTEM`「落实范围」;用户消息前缀自检句 |
| §2.1「证据信号」可溯源、禁编造用户引语 | `STRATEGY_DATA_RULES` §2.1 证据列硬性条款 |
| 报告第九章策略归纳不编造 | `STRATEGY_OPPORTUNITIES_SYSTEM` 引用同一 `STRATEGY_DATA_RULES` + `####` 块说明 |
| 负向归因(主题级,可举 brief 已有例证) | `STRATEGY_SYSTEM` §二;底稿 §2.4 |
| 口感按细类:酥脆 vs 松软分线,禁止一词盖全站 | `STRATEGY_SYSTEM` **口感/质地与细类** |
| 促销:满减/满折/券/跨店,不编造门槛、不全节留空 | `STRATEGY_SYSTEM` **促销**;底稿 §八.3 |