71 Commits

Author SHA1 Message Date
hub-gif
614d631261 feat(pipeline): 竞品简报与策略管线、报告导出及 JD 前端联动
补充策略决策键、fixture 与相关单测;分析/营销包本地存储与任务状态;竞品简报 schema 与 LLM 章节生成、促销与导出调整;并纳入 Cursor 工程规则 user-dev-style。

Made-with: Cursor
2026-04-27 15:48:09 +08:00
hub-gif
34e448728f fix(llm): 剥除混在 content 里的思考标签,保留正文
normalize_message_content 经 strip_thinking_leaks;支持 MA_LLM_PRESERVE_THINKING_IN_OUTPUT;修复 text 凭据单测在含 .env 时的干扰。

Made-with: Cursor
2026-04-27 14:04:19 +08:00
hub-gif
be05dd3577 feat(openai_gateway): 纯文本可单独使用 OPENAI_TEXT_* 凭据
chat_completion_text 经 resolve_text_channel_credentials;与配料/多模 OPENAI_* 可不同 Key 或不同 BASE_URL;单测与 .env.example 更新。

Made-with: Cursor
2026-04-27 11:33:14 +08:00
hub-gif
7823e8d6f8 feat(llm): DeepSeek 适配器默认开启思考模式
请求体含 thinking+reasoning_effort,思考时不下发 temperature;未指定模型时开思考用 deepseek-v4-pro。DEEPSEEK_THINKING=0 可关。

Made-with: Cursor
2026-04-27 11:14:38 +08:00
hub-gif
e60e8170f9 feat(llm): 增加 DeepSeek 纯文本适配器与 DEEPSEEK_*
MA_LLM_TEXT_PROVIDER=deepseek|deep_seek;.env.example 增加 ②-D;单测与 Kimi 同形。

Made-with: Cursor
2026-04-27 11:12:05 +08:00
hub-gif
2b595f794e feat(llm): 增加 Kimi 文本适配器与 KIMI_* 环境变量
纯文本可选 MA_LLM_TEXT_PROVIDER=kimi,与 OPENAI_* 配料/视觉分离;.env.example 与测试补充。

Made-with: Cursor
2026-04-27 10:47:58 +08:00
hub-gif
33bf73e3ba feat(pipeline/llm): OpenAI 官方 ChatGPT 适配器并整理 providers 目录
新增 providers/adapters/openai_official_chatgpt、shared 抽离归一化与 token 启发式;MA_LLM_TEXT_PROVIDER 支持 openai_official/openai_chatgpt/chatgpt。补充单测与 try_openai_official_llm 试跑脚本、.env.example 说明。

Made-with: Cursor
2026-04-27 10:09:26 +08:00
hub-gif
37870901ee fix(copy): 阶段目标示例改为白话,去掉心智占位等行话
占位与底稿提示改为拉新、销量转化、守复购、新品试水等可读表述;单测同步。

Made-with: Cursor
2026-04-23 10:52:31 +08:00
hub-gif
6faef2180e feat(strategy): 表单可填本阶段策略目标类型 stage_goal_type
接入 StrategyDraftRequestSerializer、规则底稿表与 1.3 要点、strategy_decisions_substantive 与 STRATEGY_SYSTEM 决策边界;前端策略生成页增加输入框。

Made-with: Cursor
2026-04-23 10:49:59 +08:00
hub-gif
6c37a2def2 fix(pipeline): 策略节选纳入 8.3 情感归纳嵌套四级标题
load_report_matrix_group_evidence 先剔除 8.3 再按 #### 细类抽取,避免嵌套 #### 正向体验主题等导致正文为空;单独解析 8.3 并拼入摘录。补充单测。

Made-with: Cursor
2026-04-23 09:57:05 +08:00
hub-gif
3dac5b95de test(pipeline): 真实 run_dir 上矩阵/促销 LLM 分块载荷统计与可选冒烟
通过 MA_TEST_REAL_RUN_DIR 本地复现每细类请求规模;MA_TEST_REAL_LLM=1 可对首组发真实调用。不改动流水线。

Made-with: Cursor
2026-04-22 16:35:03 +08:00
hub-gif
48dc40dfa7 fix(pipeline): report_config 布尔 null 时恢复默认 LLM 开关
JSON null 曾使 llm_matrix_group_summaries 等键存在但值为 None,合并默认配置时不被覆盖,bool(None) 关闭第五章矩阵与第六章促销归纳。校验阶段剥离 null,runner 侧统一 merge_report_config_with_defaults;简报构建同步。补充单测。

Made-with: Cursor
2026-04-22 16:22:27 +08:00
hub-gif
31e8482442 feat(marketing): 扩展营销内容条数与中长文案(仍禁止编造)
第二步提高标题/卖点/FAQ 等上限;新增详情中段叙事、食用搭配、短图文变体、直播要点提纲;提示词强调更丰富≠编造;normalize 与导出、策略预览 JSON 分区同步;alignment 留痕更新。

Made-with: Cursor
2026-04-22 15:56:30 +08:00
hub-gif
6470d0d56c feat(marketing): 营销内容命名、文生图/视频提示词与结果规范化
两步 LLM 增加可复制文生图/文生视频提示词并强化卖点可视化;normalize_detail_page_pack 补全键;产品用语由商详包改为营销内容;前端导出 Markdown 与策略预览区展示一致;营销包落盘模块入库。

Made-with: Cursor
2026-04-22 15:35:35 +08:00
hub-gif
7b9009bd90 feat(marketing): 策略稿两步生成商详包 API 与预览页入口
Made-with: Cursor
2026-04-22 10:25:08 +08:00
hub-gif
bf2ad14d23 fix(strategy): LLM 用策略骨架去掉小节标题(占位)与待填表行
Made-with: Cursor
2026-04-22 09:41:44 +08:00
hub-gif
3f6c750ac4 fix(strategy): 矩阵收窄时 §5.1 集中度注明非列表行口径
strategy_scope_applied 下 concentration 来自分组内合并 SKU;修正店铺/品牌叙事措辞并加口径说明,避免与全关键词列表行混淆。

Made-with: Cursor
2026-04-21 17:25:57 +08:00
hub-gif
44fa291eb3 fix(strategy): 价位阵地归入第八章,与「为什么选品牌」解耦
底稿第四章仅保留承诺与信任;贴顶/卡腰等勾选移至 §8.2。前端表单项并入战术支柱分组;补充测试与 OpenAPI、规划表说明。

Made-with: Cursor
2026-04-21 17:16:14 +08:00
hub-gif
b7056fe627 fix(strategy): LLM 底稿去掉写作说明并禁止成稿出现章节对齐套话
Made-with: Cursor
2026-04-21 17:09:58 +08:00
hub-gif
4cf73e7602 feat(strategy): 无表单决策时由大模型推断草案并净化对外成稿约束
新增 strategy_decisions_substantive 与 JSON 载荷字段;STRATEGY_SYSTEM/USER_PREFIX 要求实质成稿、禁止技术泄露;build_strategy_draft_markdown(for_llm_input=True) 供归纳用弱化路径与字段名。规则下载稿默认行为不变。

Made-with: Cursor
2026-04-21 17:03:55 +08:00
hub-gif
805e9b4de4 fix(report): 默认关闭第九章策略大模型并改为读者说明
默认 report_config.llm_strategy_opportunities 为 false;第九章无大模型正文时输出固定说明并指向按细类「策略制定」。strategy 节选仅在 strategy_opportunities_llm.json 含 markdown 时返回,避免固定说明进入策略稿对齐。同步调整单测与 strategy_hints 占位文案。

Made-with: Cursor
2026-04-21 16:59:07 +08:00
hub-gif
50a9867d02 fix(pipeline): 8.3情感子标题降为五级以便细类报告摘录命中
strategy 侧 load_report_matrix_group_evidence 按 #### 细类 抽取时在下一行 #### 即截断,导致正/负向主题正文丢失;在 matrix_group_focus 成稿后对四个固定小节做 ####→##### 后处理,并补充单测。

Made-with: Cursor
2026-04-21 11:43:50 +08:00
hub-gif
d3dec53a8f feat(pipeline): 按细类生成评价正/负向主题并写入报告8.3
开启 llm_comment_sentiment 时对每个矩阵细类单独构建情感载荷并调用模型;报告新增 8.3 小节,与探针及细类评论要点归纳并列。补充 jd_report 对 build_comment_sentiment_llm_payload 的导出、comment_sentiment_llm.json schema_version 2 与 groups 记录。前端表单说明与演示脚本注释同步更新。

Made-with: Cursor
2026-04-21 11:07:03 +08:00
hub-gif
396ccd941a fix(llm): 评论细类归纳载荷移除 focus_hit_lines 并对齐系统提示
build_comment_groups_llm_payload 不再传入关注词或生成子串命中摘要;COMMENT_GROUPS_SYSTEM 仅依据 effective_text_lines 与 sample_text_snippets。探针合并与 PROBE 提示词去掉 focus_hit_lines 表述;runner/演示脚本去掉无效的 comment_focus_words 装配。

Made-with: Cursor
2026-04-21 10:35:52 +08:00
hub-gif
30ea9783b3 docs: 对齐竞品报告第八章新节号与情感 LLM 说明
第三节/§8.3 改为第二节/§8.2(关注词与场景路径);策略规划表区分报告章与策略稿 §8.x;快照 omission_note 与 brief 无 lexicon 一致;generate_sections/comment_sentiment 注释反映报告不再发图。

Made-with: Cursor
2026-04-21 10:32:06 +08:00
hub-gif
23ddf115ee feat(报告): 移除第八章预设口语短语情感小节并重编号
删除评价正负面粗判(扇形图、口语短语条形图、摘要及同口径 LLM 块);文本挖掘/关注词路径统一为新的 8.2;brief 不再含 comment_sentiment_lexicon;默认关闭 llm_comment_sentiment;清理旧插图文件名;同步策略与全稿提示。

Made-with: Cursor
2026-04-21 10:29:26 +08:00
hub-gif
7506f9795c fix(strategy): 探针模式下从 structured_brief 再移除策略提示与情感词表
与第八章条形图同源的策略提示句和规则情感词表不再传入策略大模型;导出脚本与快照已同步,单测覆盖省略字段。

Made-with: Cursor
2026-04-21 09:51:28 +08:00
hub-gif
ce4cef3235 fix(strategy): 探针模式下从 structured_brief 移除按细类关注词/场景子串
补充 _omit_ch8_probe_wordchart_fields:删除 consumer_feedback 内 focus_keyword_hits 与 scenarios_top;与文本挖掘主口径一致。导出脚本与 omission 说明同步;更新全量输入快照。

Made-with: Cursor
2026-04-21 09:42:46 +08:00
hub-gif
36ad21de6e feat(pipeline): 策略 LLM 并入宿主报告按细类的大模型归纳节选
从 competitor_analysis.md 抽取 #### 细类名 下正文;收窄矩阵分组时传入 report_matrix_group_evidence_md,并在系统提示中约定与 structured_brief 及第九章节选的分工。

Made-with: Cursor
2026-04-20 17:55:50 +08:00
hub-gif
6143ad6180 feat(pipeline): 策略生成按矩阵分组收窄 brief 输入
新增 strategy_matrix_group / strategy_matrix_group_index 请求参数;收窄后价盘与集中度按分组内 SKU 重算;摘要 GET 与策略 POST 响应附带 matrix_groups。

Made-with: Cursor
2026-04-20 17:45:15 +08:00
hub-gif
911ad203db feat(strategy): 策略范围与前提 + 启动前目标选项 A~E
底稿在摘要前增加立项表;规划文档写清业务应对齐项与选项;LLM 须先写清针对什么、空字段列待确认与选项。

Made-with: Cursor
2026-04-20 17:39:23 +08:00
hub-gif
186ba9bf42 feat(strategy): §2.1 表增加类目列并支持分策与待定类
底稿与 STRATEGY_DATA_RULES 明确多细类须分行;不确定可写待业务定类。恢复标题下骨架说明含全局禁止编造。示例与目录模板同步。

Made-with: Cursor
2026-04-20 17:23:56 +08:00
hub-gif
6b33e5ecf3 refactor(strategy): §二合并为针对痛点怎么做表并移除 §3.2
规则底稿仅保留 §2.1;价带摘录并入 §3.1;同步 STRATEGY_SYSTEM、规划文档、目录模板与示例稿。

Made-with: Cursor
2026-04-20 17:05:29 +08:00
hub-gif
cd4a4dea0e fix(strategy): 区分 §2.1 痛点与 §2.4 负向归因避免重复
提示词与底稿明确:痛点表为策略优先级;负向节为评论侧主题归因,重叠时互见一两句即可。

Made-with: Cursor
2026-04-20 16:57:42 +08:00
hub-gif
812cc1dac7 docs(strategy): 全局禁止编造贯穿底稿与规划
规则底稿骨架增加全局约束说明;规划与 alignment 文档对照表更新;测试断言骨架含「全局禁止编造」。generate_strategy 中全局条款与用户前缀若未提交则一并纳入。

Made-with: Cursor
2026-04-20 16:48:25 +08:00
hub-gif
71395d217c fix(strategy): 禁止 §2.1 编造用户引语与无依据痛点
在 STRATEGY_DATA_RULES 明确证据信号列须可溯源;无原话时写主题归纳或待抽样,禁止伪装成已监测结论。底稿与测试同步。

Made-with: Cursor
2026-04-20 16:45:04 +08:00
hub-gif
99bd2ef40d fix(strategy): 探针模式下剔除词频类 hints 并强制与报告促销/第九章对齐
- 规则底稿:过滤 strategy_hints 中与关注词/预设场景条形图同源的句子;§7 增加促销与活动对齐说明(price_promotion_signals、§6/§9)。
- LLM:payload 增加 chapter8_text_mining_probe;structured_brief 同步过滤 hints;系统提示与 omission_note 明确禁止用词频为据、须承接第九章与促销信号。

Made-with: Cursor
2026-04-17 17:42:20 +08:00
hub-gif
1a569ce727 fix(strategy): 规则底稿补充列表店铺去重SKU口径与摘要一致
竞争结构节在 shops_from_list.unique_sku_basis 存在时输出对照行,便于策略 LLM 与人工复核;新增单测。

Made-with: Cursor
2026-04-17 17:33:18 +08:00
hub-gif
f09a46a79e feat(pipeline): 策略表单增加营销与总体策略并顺延规则稿章节
- API:marketing_strategy、general_strategy;规则骨架新增「二、营销策略与总体方向」,原 §2–§9 顺延为 §3–§10。
- LLM 提示与探针说明用语同步;OpenAPI、单测与策略生成页字段集「五」已对齐。

Made-with: Cursor
2026-04-17 17:08:25 +08:00
hub-gif
16d64565a3 feat(pipeline): 策略骨架缩短并强化策略生成决策边界
- 规则稿:章节重排为短骨架,去重复假设套话;探针模式三条占位,传统模式改为统计摘录句式。
- LLM:STRATEGY_SYSTEM 明确表单已定项不可反写,空项由数据补全,成稿禁止二次决策话术。
- API/前端:新增目标客群、主要对标、资源备注字段并传入 strategy_decisions。
- OpenAPI 与单测同步。

Made-with: Cursor
2026-04-17 17:04:24 +08:00
hub-gif
932c3d6aeb fix(strategy): 文本挖掘开启时策略稿不再依赖关注词/场景计数
报告配置 chapter8_text_mining_probe 为 True(默认)时,规则底稿第五节改为说明口径并去掉子串命中列表;LLM 请求从 structured_brief 剔除相关字段并附 omission_note。关闭探针时保留旧版第五节。任务 API 传入 report_config。

Made-with: Cursor
2026-04-17 16:56:08 +08:00
hub-gif
1229e49dbe refactor(frontend): 策略生成默认大模型,仅保留「本次规则稿」选项
移除「使用大模型」与保存策略偏好;buildPayload 默认 generator=llm;勾选本次仅规则稿时走 rules。后端默认 use_llm_default 改为 true。

Made-with: Cursor
2026-04-17 16:44:15 +08:00
hub-gif
7d219feb3c feat(pipeline): 策略页独立 strategy_config 与仅规则稿选项
新增 PipelineJob.strategy_config(默认 use_llm_default);GET /api/strategy-config-defaults/;PATCH 任务可保存策略偏好。策略生成页:本次仅规则稿复选框(默认关)、保存策略偏好、任务下拉去掉目录;第九章对齐仍由服务端默认处理。迁移 0021。

Made-with: Cursor
2026-04-17 16:41:20 +08:00
hub-gif
6e113bbdfe feat(pipeline): S1 策略稿与第九章对齐(report_strategy_excerpt)
新增 load_report_strategy_excerpt:优先 strategy_opportunities_llm.json 的 markdown,否则从 competitor_analysis.md 截取第九章;runner 成功时落盘 markdown 字段。STRATEGY_SYSTEM 收紧与 report_strategy_excerpt 一致及业务冲突标注。策略稿 API 返回节选来源与字符数;补充单测与 OpenAPI、规划文档。

Made-with: Cursor
2026-04-17 16:26:00 +08:00
hub-gif
6a308179ad test(pipeline): 在 tests/conftest 中 django.setup 以修复收集阶段 AppRegistryNotReady
pytest 收集含 pipeline.jd.runner 的测试时须先加载 Django;全量 pipeline/tests 现可一次跑通。

Made-with: Cursor
2026-04-17 14:56:35 +08:00
hub-gif
e4a05f3ce6 refactor(pipeline): 移除 csv_schema 等根目录中转,统一从 pipeline.csv 子包导入
- 删除 csv_schema.py、csv_header_rewrite.py、matrix_group_label.py(无引用)

- 全库改为 from pipeline.csv.schema / pipeline.csv.header_rewrite;文档字符串同步

- 与此前 jd_competitor_report 去中转同一策略

Made-with: Cursor
2026-04-17 14:48:32 +08:00
hub-gif
0e224c6a6c refactor(pipeline): 移除 jd_competitor_report 中转,统一导入 competitor_report.jd_report
- 删除 backend/pipeline/jd_competitor_report.py;runner/测试与演示改为 from pipeline.competitor_report import jd_report

- 爬虫目录 jd_competitor_report.py 仅调用 jd_report.main;文档与 OpenAPI 同步更新

- 命令行推荐:python -m pipeline.competitor_report.jd_report

Made-with: Cursor
2026-04-17 14:46:21 +08:00
hub-gif
0d8e1962d7 refactor: 竞品报告迁入 pipeline,爬虫目录仅保留采集与兼容入口
competitor_report 子包与 jd_competitor_report 主模块移至 backend/pipeline;runner 与测试改为 from pipeline import jd_competitor_report;crawler_copy 下 jd_competitor_report 为转发 shim;jd_keyword_pipeline 文档更新。

Made-with: Cursor
2026-04-17 13:47:34 +08:00
hub-gif
2a27a611ca refactor(pipeline): 拆分 llm/generate 为网关与各场景子模块
- 新增 llm_client(路径与 chat 调用、token/上下文估算)。

- 按职责分为 generate_competitor_full、generate_sections、generate_strategy、generate_group_summaries。

- generate.py 保留聚合导出与 _call_llm 别名;测试 patch 路径改为指向子模块。

- 同步导出 _join_chunked_group_markdown。

Made-with: Cursor
2026-04-17 11:24:43 +08:00
hub-gif
0e353318e1 feat(report): §8.2 先按评分分桶再统计口语短语
Made-with: Cursor
2026-04-16 14:57:58 +08:00