feat(strategy): 强化§1.1可执行表述与报告节选叙事对齐现行产线

STRATEGY_SYSTEM 增加规划核心§1.1硬性条款;STRATEGY_DATA_RULES 与细类节选主对齐、第九章长文默认弃用;底稿 for_llm 增加归纳用提示;report_strategy_excerpt 模块说明更新。

Made-with: Cursor
This commit is contained in:
hub-gif 2026-04-22 15:35:27 +08:00
parent a0868c0ba8
commit 5df82f7d80
3 changed files with 36 additions and 19 deletions

View File

@ -1,4 +1,4 @@
"""策略稿润色与第九章策略机会归纳"""
"""独立策略稿润色(`generate_strategy_draft_markdown_llm`)与可选的报告「策略与机会」块归纳(`generate_strategy_opportunities_llm`,默认产线关闭)"""
from __future__ import annotations
import json
@ -78,8 +78,8 @@ def _omit_ch8_probe_wordchart_fields(compact: dict[str, Any]) -> None:
compact["consumer_feedback_by_matrix_group"] = slim
STRATEGY_DATA_RULES = """**全局禁止编造(适用于输出全文各节、各表、各段;独立策略稿与报告第九章策略归纳**共用**本段,硬性)**
- **事实与数字**销量GMV占比价带条数份额券面额满减/满折门槛到手价店铺/品牌计数与排名SKU 接口返回量等**仅可**来自**本次调用输入 JSON** 中已给出的字段策略稿为 `structured_brief``rules_draft_markdown` 内摘录`report_strategy_excerpt`可选 **`report_matrix_group_evidence_md`**与同任务报告第五第八章细类大模型小节同源`strategy_decisions``business_notes`第九章嵌入为 `competitor_brief`可选 `prior_chapter_llm_narratives`**禁止**凭空新增改口径或写成已监测证实而无字段支撑
STRATEGY_DATA_RULES = """**全局禁止编造(硬性)**:下列条款**同时**适用于 ① **独立策略稿**全文;② 若任务仍生成的**宿主报告内** ``####`` 策略归纳块JSON 含 ``competitor_brief``)。**默认产线**下报告内第九章大模型长文已关闭,**独立策略稿不以该块为默认事实源**。
- **事实与数字**销量GMV占比价带条数份额券面额满减/满折门槛到手价店铺/品牌计数与排名SKU 接口返回量等**仅可**来自**本次调用输入 JSON** 已给出的字段**独立策略稿**侧为`structured_brief``rules_draft_markdown` 内摘录**可选** `report_strategy_excerpt`**默认多为空** ``load_report_strategy_excerpt``**可选** `report_matrix_group_evidence_md`与同任务报告第五第八章细类归纳同源`strategy_decisions``business_notes`**报告内嵌策略块**侧为 ``competitor_brief``可选 ``prior_chapter_llm_narratives``**禁止**凭空新增改口径或写成已监测证实而无字段支撑
- **主体与名称****禁止**引入上述输入中**未出现****具体**品牌名店铺名SKU 商品标题作为**事实陈述** `strategy_decisions`/备注/brief/节选已含则可写否则用头部/同类竞品等泛称或待业务指定对标
- **用户侧表述****禁止**虚构评价原文访谈引语带引号的用户说细则见下文§2 针对痛点要怎么做**痛点简述**
- **促销与活动****禁止**编造活动名具体规则补贴比例细则见下文促销与第八章探针相关条款
@ -104,20 +104,30 @@ STRATEGY_DATA_RULES = """**全局禁止编造(适用于输出全文各节、
- **矩阵** `structured_brief` 含矩阵相关字段**呼应**细分类目与竞品矩阵结论不得无故删光
- **第八章文本挖掘探针 JSON `chapter8_text_mining_probe` 为真时**
- **禁止**关注词子串命中次数预设场景分组条数/占比当作评论侧主论据
- 用户洞察负向归因须与 **§8 文本挖掘** 及可选节选一致促销与券价差须与 `price_promotion_signals`第六章/第九章已有归纳一致**禁止**编造满减门槛或补贴比例
- **可选 `report_strategy_excerpt`**非空时战略方向与该节选一致明显矛盾**不得**把节选与 `structured_brief` 均未出现的数字当作事实为空时仅依据底稿与摘要不得编造第九章结论"""
- 用户洞察负向归因须与 **§8 文本挖掘** 及可选节选一致促销与券价差须与 `price_promotion_signals`报告**第六章** brief 已给字段一致**默认**无宿主报告内长文策略节选时**禁止**第九章已写为凭据编造具体规则**禁止**编造满减门槛或补贴比例
- **可选 `report_strategy_excerpt`****默认多为空**非空时战略方向与该节选不明显矛盾**不得**把节选与 `structured_brief` 均未出现的数字当作事实**为空时** `structured_brief``report_matrix_group_evidence_md`若有与底稿/表单为准**禁止**编造宿主报告策略章已断言的具体结论或虚假背书"""
STRATEGY_SYSTEM = f"""你是市场策略顾问,根据**结构化监测摘要**与业务侧填写的**决策字段**,把「规则底稿」写成**短、可执行**的策略 Markdown **独立成稿**。
**输入**`rules_draft_markdown`规则骨架**六主轴 + 品牌四线**结构 `docs/demo` 市场策略稿示例同构`structured_brief``strategy_decisions``business_notes`可选 `report_strategy_excerpt`可选 **`report_matrix_group_evidence_md`**与所选细类对齐的宿主报告大模型归纳摘录
**输入**`rules_draft_markdown`规则骨架**六主轴 + 品牌四线**结构 `docs/demo` 市场策略稿示例同构`structured_brief``strategy_decisions``business_notes`**可选** `report_strategy_excerpt`**默认多为空**遗留或历史任务可能非空**可选** **`report_matrix_group_evidence_md`**与所选细类对齐的宿主报告第五八章归纳摘录**主对齐源之一**
**与细类收窄配套 JSON `report_matrix_group_evidence_md` 且非空时硬性**
- **定性主题**用户讨论焦点卖点/配料叙事负向体验类型场景与关注词归纳方向等须与该节选及 `structured_brief` **方向一致****禁止**另写一套与节选**明显矛盾**的品类判断
- **数字份额价带条数**仍以 **`structured_brief` 为准**节选与 brief 数字冲突时**采纳 brief**勿复述冲突数字句
- **`report_strategy_excerpt`第九章** **全关键词任务**下的策略归纳可能与仅选某细类并行存在**该细类**策略时以 `structured_brief` + `report_matrix_group_evidence_md` 为主第九章仅作检索池整体方向参考**不得**把全池结论套成该细类已证实事实
**与细类收窄及遗留节选硬性**
- JSON `report_matrix_group_evidence_md` 且非空时
- **定性主题**用户讨论焦点卖点/配料叙事负向体验类型场景与关注词归纳方向等须与该节选及 `structured_brief` **方向一致****禁止**另写一套与节选**明显矛盾**的品类判断
- **数字份额价带条数**仍以 **`structured_brief` 为准**节选与 brief 数字冲突时**采纳 brief**勿复述冲突数字句
- **`report_strategy_excerpt`****默认产线多为空**报告内全任务大模型策略长文已弃用非空时仅作**弱参考****收窄细类**策略时仍以 `structured_brief` + `report_matrix_group_evidence_md`若有为主**不得**把全关键词池结论套成该细类已证实事实**默认为空时禁止**报告第九章已归纳类虚假背书
{STRATEGY_DATA_RULES}
**规划核心 §1.1硬性策略要写怎么做不能只写是什么**
`docs/planning/策略生成-框架确定.md` §1.1 一致违反则成稿不合格
- **读者测试**业务读者读完**摘要**任一大节后应能回答至少一项**团队/渠道在何触点针对哪类用户或哪条痛点采取什么动作如何验收或待验证什么**若某段只能回答市场/品类/价带是什么样**没有**紧随或嵌入的故本阶段须优先**动词句**须改写或删并**禁止**以形势描述段作为该节主体
- **背景上限****顾客是谁** 1.1 1.2 **禁止**扩写成第二份分析报告合计**至多约五句**结论性背景谁搜关心什么分细类一句价带分位样本量拆解词频/方法一句带过或写详见同任务竞品分析报告**禁止**多段连续铺陈数据
- **摘要**范围与样本用户侧**一句**可接受后**阶段重点**必须是 **12 条完整执行句**每条须含**可识别动作**如统一商详第几屏表述主图试点规格命名客服首句跟价/不跟价说明等之一**禁止**单独使用加强运营把握机会提升体验深化心智等无主体无触点无痛点指向的套话
- **§2.1 **监测已支撑**多个**痛点或细类维度时**至少两行**有实质内容非空非整格待填**策略动作****具体怎么做**两列须以**动词短语或短句**开头**禁止**两列长期只有形容词名词标签或泛化口号
- **§§**每一 numbered 小节 §6.2§7.x§8.x须含**至少一条**可指回 §2.1 某一行的落地动作可口头合并叙述**禁止**仅用强化品牌/优化体验/夯实基础等名词堆叠而无**谁做在哪做做哪一步**
- **反例禁止作为节内主要篇幅**当前品类呈现市场整体用户日益注重健康**纯判断句串**而无后续因此我方本阶段若保留背景**一句**后必须接执行句
**落实范围**上文全局禁止编造适用于**摘要一至十附录**的每一句话与表格每一格**不得**因章节不同而放宽
**对外成稿与禁止技术泄露硬性**
@ -144,7 +154,7 @@ STRATEGY_SYSTEM = f"""你是市场策略顾问,根据**结构化监测摘要**
**语气**面向业务读者避免 CR1心智等内部缩写**勿在成稿中反复强调对齐某报告第几章**以策略表述为主
**策略表述硬性痛点 怎么做须覆盖全书不得只写 §2§8 部分章节**
- **总原则**成稿**不是**第二份分析报告**不是**市场形势说明书每条重要内容应能回答**针对哪条用户痛点在哪条类目/细类下** **§2.1** 表对应**我们采取什么动作****在具体触点怎么做**商详/主图/短视频/客服/规格/价格呈现等**如何验证**若适用
- **总原则**成稿**不是**第二份分析报告**不是**市场形势说明书每条重要内容应能回答**针对哪条用户痛点在哪条类目/细类下** **§2.1** 表对应**我们采取什么动作****在具体触点怎么做**商详/主图/短视频/客服/规格/价格呈现等**如何验证**若适用**是什么仅作每节不超过一两句的铺垫怎么做须占可策略论述篇幅的主体**
- **§2.1 针对痛点要怎么做**若底稿已有表头**填写实质内容**全稿**动作总锚** §2.1若无表须在 **§** **§** 用等价分条写清痛点动作落地验证
**分节要求与底稿章节一一对应勿省略**
@ -183,6 +193,7 @@ STRATEGY_SYSTEM = f"""你是市场策略顾问,根据**结构化监测摘要**
STRATEGY_USER_PREFIX = (
"请基于以下 JSON 输出最终策略稿Markdown正文须为对外可读正式文档不得泄露 JSON 键名、字段名、源码路径或底稿中的编写提示语。\n"
"输出前自检:全文不得包含输入中未出现的具体数字、品牌/店铺名、用户引语与活动规则;不确定处须写「假设」「监测未体现」或「待业务核对」。\n"
"输出前自检(规划 §1.1):摘要「阶段重点」是否为 12 条含动作+触点或时间窗口的执行句第一章是否未写成长篇市场白皮书§2.1 是否至少两行实质且「动作/怎么做」列为动词句;§六~§八 每节是否至少一条可落地的「谁在哪做什么」。若否,先改再输出。\n"
"若 JSON 中 `strategy_decisions_substantive` 为 false你须基于监测摘要与细类报告节选**主动推断**完整策略草案(含 §2.1 多行实质内容),"
"在「策略范围与前提」标明假设前提,并对阶段目标给出 AE 类型选项及**推荐倾向**;禁止全文停留在待填占位。\n"
"若 `strategy_decisions_substantive` 为 true已填表单项视为已定须落实空项结合数据补全并与后文一致。\n\n"
@ -202,8 +213,7 @@ def generate_strategy_draft_markdown_llm(
report_config: dict[str, Any] | None = None,
) -> str:
"""
``report_strategy_excerpt``与同任务宿主报告第九章策略与机会正文对齐的节选
``reporting.report_strategy_excerpt.load_report_strategy_excerpt``空字符串表示未生成或未重跑第九章大模型
``report_strategy_excerpt``可选 ``load_report_strategy_excerpt`` 加载 ``reporting.report_strategy_excerpt``**默认产线**下多为空非空多见于历史任务或曾显式开启报告内策略 LLM 的落盘
``report_matrix_group_evidence_md``按所选矩阵细类从 ``competitor_analysis.md`` 抽取的第五第八章大模型小节摘录
``reporting.report_matrix_group_evidence.load_report_matrix_group_evidence_markdown``用于与收窄后的 ``structured_brief`` 一并支撑策略叙事
@ -270,7 +280,7 @@ def generate_strategy_draft_markdown_llm(
payload["structured_brief_omission_note"] = (
"已启用第八章文本挖掘探针为主structured_brief 已省略「关注词/场景子串计数」、按细类 feedback 中的 focus_keyword_hits/scenarios_top、"
"``strategy_hints`` 等;报告已**不再**输出 ``comment_sentiment_lexicon``(星级子集预设口语短语)及同口径图。**不得**再以这类子串计数、短语条形图或预设场景占比作为论据。"
"用户与评论侧须依报告 §8 文本挖掘归纳及 `report_matrix_group_evidence_md`**促销、满减、券价差**须与报告第六章、`price_promotion_signals` 及下方 `report_strategy_excerpt`(第九章)对齐,不得省略报告已写明的活动建议"
"用户与评论侧须依报告 §8 文本挖掘归纳及 `report_matrix_group_evidence_md`**促销、满减、券价差**须与报告第六章、`price_promotion_signals` 及 brief 已给字段一致;若 `report_strategy_excerpt` 非空则勿与其明显矛盾。**默认**节选为空,勿编造「报告策略长文已写明的」具体活动规则"
)
raw = json.dumps(payload, ensure_ascii=False)
if len(raw) > 500_000:
@ -331,7 +341,7 @@ STRATEGY_OPPORTUNITIES_SYSTEM = (
请输出 **Markdown 正文**不要用 ``` 围栏包裹**直接嵌入**宿主文档中**已存在章节标题之下**的小节读者已知当前处于策略与机会相关章节
**与独立下载策略稿的关系**独立策略稿使用摘要附录的六主轴结构本节**不是**完整策略稿仅输出下列 ``####`` 主题块,避免与宿主第九章标题重复。
**与独立下载策略稿的关系**独立策略稿使用摘要附录的六主轴结构本节**不是**完整策略稿仅输出下列 ``####`` 主题块,避免与宿主「九、策略与机会提示」等**已存在标题**字面重复。
**全局禁止编造**见上文 `STRATEGY_DATA_RULES` 段首**本节每个 ``####`` 块**均须遵守(含不得虚构用户引语、未在 ``competitor_brief`` 出现的品牌名与数字)。
@ -342,7 +352,7 @@ STRATEGY_OPPORTUNITIES_SYSTEM = (
- **转化与体验**小节正负向体验线索须**优先呼应** **第八章第二节 **节选``sec8_3_comment_focus_summaries`` ``sec8_3_text_mining_probe``视何者存在内部键名仍沿用 ``sec8_3_*``**禁止**将节选未提及的具体抱怨/品类问题写成**主要结论**可写假设待结合业务验证
**标题与措辞硬性**
- **禁止**在正文开头或任何位置重复宿主已有章名/小节名包括但不限于九章9章策略与机会提示策略与机会建议策略与机会**不要**自造 ``##`` 一级标题;
- **禁止**在正文开头或任何位置重复宿主已有章名/小节名包括但不限于9章策略与机会提示策略与机会建议策略与机会勿与报告固定章节标题撞车**不要**自造 ``##`` 一级标题;
- 小节标题**仅允许**使用业务主题式 ``####``(如下所列),从第一句起就进入实质内容。
**必须遵守**
@ -361,7 +371,7 @@ STRATEGY_OPPORTUNITIES_SYSTEM = (
STRATEGY_OPPORTUNITIES_USER_PREFIX = (
"请根据以下 JSON 撰写策略归纳正文Markdown"
"``competitor_brief`` 为结构化摘要;若含 ``prior_chapter_llm_narratives``,则为 第五至第八章 大模型归纳节选,须与策略正文对齐。"
"宿主报告已含章节标题,**勿在输出中写第九章或「策略与机会」类标题**。"
"宿主报告已含「策略与机会」相关章节标题,**勿在输出中重复「九、」「策略与机会」类章名或小节名**。"
"输出前自检:不得编造 brief 与节选未出现的数字、品牌/店铺名、用户引语与活动规则;不确定须用「假设:」「待验证:」「输入未体现」。\n\n"
)

View File

@ -1,9 +1,12 @@
"""
从任务 run 目录加载报告第九章 · 策略与机会正文供策略稿 LLM 与宿主报告对齐阶段 S1
从任务 run 目录加载报告策略与机会提示下的正文片段供策略稿 LLM **可选**参考兼容 / 遗留
**默认产线**已弃用报告内第九章大模型长文新任务节选多为空 ``jd_report._strategy_opportunities_reader_fixed_lines`` 与规划
``docs/planning/strategy-marketing-content-alignment.md`` §2
优先顺序
1. ``strategy_opportunities_llm.json`` 中的 ``markdown``runner 落盘一致
1. ``strategy_opportunities_llm.json`` 中的 ``markdown``仅当非空空壳 json 不回退 md避免误载固定读者说明
2. 否则从 ``competitor_analysis.md`` 截取 ``## 九、策略与机会提示`` 至 ``## 附录`` 之前。
"""
from __future__ import annotations

View File

@ -196,6 +196,10 @@ def build_strategy_draft_markdown(
f"> **生成时间**{_esc(generated_at_iso)}(归纳用,**勿写入对外成稿正文**"
)
lines.append("")
lines.append(
"> **规划 §1.1(归纳用)**:成稿须以「怎么做」为主体,不以「是什么」铺陈代替策略;摘要「阶段重点」须 12 条执行句;第一章背景控制在少量结论句。**勿将本行写入对外正文。**"
)
lines.append("")
else:
lines = [
f"# 市场策略制定草稿 · 「{kw}",