refactor(报告): 全文大模型补充改为嵌入第八章末而非篇首

Made-with: Cursor
This commit is contained in:
hub-gif 2026-04-13 10:54:43 +08:00
parent bac71c00be
commit ed2738953f
2 changed files with 47 additions and 22 deletions

View File

@ -20,8 +20,8 @@ def merge_llm_supplement_with_rules_report(llm_md: str, rules_md: str) -> str:
"""
**以规则引擎全文为正文** §5 完整竞品矩阵各章内嵌统计图与表格
大模型稿仅作为开篇速读/策略补充插入在## 一、」之前,**不得**再用纯 LLM 稿
覆盖规则正文否则会丢失矩阵与章节结构
大模型稿作为 **§8.5** 嵌入在 **第八章末第九章策略** 之前 §8.28.4 等具体分析同卷连贯
**不再**插在篇首## 一、」之前
"""
body = (rules_md or "").strip()
sup = (llm_md or "").strip()
@ -29,17 +29,39 @@ def merge_llm_supplement_with_rules_report(llm_md: str, rules_md: str) -> str:
return body
if not body:
return sup
block = (
"---\n\n"
"## 大模型速读与策略要点(补充)\n\n"
"> **说明**:以下由大模型依据结构化摘要生成,便于速览;**完整竞品对比矩阵、全部表格、"
"统计图与定量口径以正文各章(尤其 §5为准**,请勿仅依据本段理解 SKU 明细。\n\n"
f"{sup}\n"
marker = "\n---\n\n## 九、策略与机会提示(假设清单,待验证)"
insert = (
"\n\n---\n\n"
"### 8.5 大模型深度补充(与 §2§8.4 定量内容互补)\n\n"
"> **说明**:本段位于**第八章末****竞品矩阵、价盘表、统计图与 §8.28.4 词频等以正文各节为准**"
"此处为跨小节语义整合,便于衔接第九章。\n\n"
f"{sup.strip()}\n"
"\n---\n\n## 九、策略与机会提示(假设清单,待验证)"
)
marker = "\n---\n\n## 一、研究范围、数据来源与局限"
if marker in body:
return body.replace(marker, "\n" + block + marker, 1)
return block + "\n---\n\n" + body
return body.replace(marker, insert, 1)
# 旧版报告标题或语言差异时的回退
for alt in (
"\n## 九、策略与机会提示(假设清单,待验证)",
"\n## 九、策略与机会提示",
):
if alt in body and marker not in body:
return body.replace(
alt,
"\n\n---\n\n### 8.5 大模型深度补充(与 §2§8.4 定量内容互补)\n\n"
"> **说明**:位于第八章末;**矩阵与图表以正文为准**。\n\n"
f"{sup.strip()}\n"
+ alt,
1,
)
app = "\n## 附录 A数据留存说明"
if app in body:
tail = (
"\n\n---\n\n### 8.5 大模型深度补充(与 §2§8.4 定量内容互补)\n\n"
f"{sup.strip()}\n"
)
return body.replace(app, tail + app, 1)
return body + "\n\n---\n\n### 8.5 大模型深度补充\n\n" + sup.strip() + "\n"
def merge_llm_report_with_rules_charts(llm_md: str, rules_md: str) -> str:

View File

@ -35,24 +35,27 @@ def _call_llm(system_prompt: str, user_prompt: str) -> str:
return ac.strip_outer_markdown_fence(raw)
REPORT_SYSTEM = """你撰写一段**短小的「速读与策略补充」**,插在完整规则报告**之前**供读者扫读。读者为业务与产品。
REPORT_SYSTEM = """你是业务与产品读者顾问。输入 JSON 含 `keyword`、`competitor_brief`(可能经裁剪)、
`matrix_overview_for_llm`按细分类目的 SKU 数与品牌样本
你的输出将**嵌入在规则报告第八章末**作为### 8.5 …」的正文,系统已加小节标题与说明),**紧接在**
消费者反馈 §8.18.4 **之后**第九章策略**之前**因此写的是**具体分析型补充**不是篇首速读块
**输入**JSON `keyword``competitor_brief`可能经裁剪`matrix_overview_for_llm`按细分类目的 SKU 数与品牌样本
所有数字占比条数品牌名价格区间等**必须严格来自输入 JSON**禁止编造未在输入中出现的定量结论
**硬性禁止**
- **不要**输出完整报告目录或重复研究范围与方法等长章结构
- **不要**撰写 Markdown 表格版竞品对比矩阵或罗列 SKU 明细**正文报告已含完整矩阵**此处仅可概括分组级结论细类名SKU 主要品牌来自 `matrix_overview_for_llm` / brief
- **不要**matrix_by_group 已省略仅保留代表性品牌等免责声明也不要引导读者认为明细缺失
- **不要**使用## 一」「## 八」等会打乱宿主文档的顶级章节号;请使用 ``####`` 或必要时 ``###`` 作为本段内小节标题
- **不要**输出完整报告目录或复述研究范围与方法长章
- **不要**撰写 Markdown 表格版竞品对比矩阵或罗列 SKU 明细**正文已含矩阵**此处只做分组级语义归纳
- **不要使用** CR1CR3 等英文缩写集中度请用第一大品牌份额前三品牌合计份额
**请输出**仅输出正文不要前言后语
- 使用 **Markdown**控制在**8001500 **
- 建议小节标题二级**执行摘要要点****竞争与价盘速读****用户声量与关注点****策略提示与数据边界**
- 若有 `comment_sentiment_lexicon`概括正/负向粗判局限非深度学习**负向**须点出用户在抱怨的**具体事由类型**口感价格物流避免只复述词频
- 语气专业中文缺失项写摘要未提供该项而非猜测"""
**请输出**仅输出将置于 §8.5 下的正文不要自造### 8.5」标题行)
- **Markdown****8001500 **
- 建议``####`` 组织:**执行摘要级要点**、**竞争与价盘**、**用户声量与负向事由**(须归纳用户在抱怨什么类型的问题,而非只堆关键词)、**与第九章衔接的策略边界**
- 若有 `comment_sentiment_lexicon`概括正/负向粗判局限**负向**写清事由类型口感价格物流
- 语气专业中文缺失项写未提供该项而非猜测"""
REPORT_USER_PREFIX = """请根据以下 JSON 撰写完整竞品分析报告Markdown 正文)。\n\n"""
REPORT_USER_PREFIX = """请根据以下 JSON 撰写上文所述 §8.5 嵌入段落Markdown 正文,勿加 ### 8.5 标题)。\n\n"""
def generate_competitor_report_markdown_llm(brief: dict[str, Any], keyword: str) -> str: