115 Commits

Author SHA1 Message Date
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
f06fd12f1f fix(llm): 策略稿润色预留 completion 预算,缓解输出截断
generate_strategy_draft_markdown_llm 按摘要/第九章节选/规则底稿分级收紧,满足最小 completion token 后再调用;底稿与 JSON 超限仍截断并提示。系统提示补充收束全文要求。

Made-with: Cursor
2026-04-17 16:48:05 +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
224e7d0c16 docs(planning): 市场策略稿与营销内容对齐规划留痕
含事实源原则、S1~S4 实施顺序、关联代码路径与修订表,便于后续查阅。

Made-with: Cursor
2026-04-17 16:19:04 +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
5195aec2d7 fix(pipeline): 兼容入口全量同步 jd_report 符号含 _read_csv_rows
避免 import * 漏掉下划线辅助函数导致报告再生等接口 500。

Made-with: Cursor
2026-04-17 14:39:36 +08:00
hub-gif
ca6e71eb4b refactor(pipeline): 整理 csv、jd 细类标签与竞品报告子包
- 新增 pipeline.csv 与 pipeline.jd.matrix_group_label,根目录模块保留兼容转发

- 竞品报告主实现迁至 competitor_report.jd_report,兼容入口补全下划线辅助函数再导出

- 增加 pipeline/__init__.py 避免 Django 将 pipeline 识别为多路径命名空间包

Made-with: Cursor
2026-04-17 14:14:48 +08:00
hub-gif
179c9b2659 refactor(jd_pc_search): 拆分搜索与评论的解析/落盘与请求脚本
评论:新增 jd_item_comment_parse、jd_item_comment_export;jd_h5_item_comment_requests 仅保留 Node 与 Playwright 与 main。搜索:新增 jd_h5_search_parse;jd_h5_search_requests 精简并 re-export CSV_FIELDS 等以兼容流水线与 collect_pc_search_items。

Made-with: Cursor
2026-04-17 14:06:14 +08:00
hub-gif
1431ed3204 refactor(jd detail): 拆分 wareBusiness 解析与 Playwright 采集
新增 jd_detail_ware_parse(JSON 扁平、重试判定、落盘格式化)与 jd_detail_ware_fetch(拦截接口与 #detail-main 抽图);jd_detail_ware_business_requests 保留配置、main、写盘与薄封装 fetch_ware_business,并继续 re-export 解析符号以兼容旧导入。

Made-with: Cursor
2026-04-17 14:01:23 +08:00
hub-gif
b6a648af9c refactor(jd_pc_search): 将 CSV 落盘与采集流水线解耦
新增 jd_pipeline_export 模块承载合并表、PC 搜索导出、详情表与 run_meta 的列名规范化与写入;jd_keyword_pipeline 仅保留采集编排与调用。

Made-with: Cursor
2026-04-17 13:53:28 +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
b6a52c04d2 refactor(jd): 反馈分组、列表统计、矩阵行与报告片段拆至 competitor_report
新增 consumer_feedback、run_context、list_mix、matrix_md、report_md_helpers;jd_competitor_report 从配置块后直接进入 build_competitor_markdown;移除未再使用的 ingredients 直引。

Made-with: Cursor
2026-04-17 13:39:57 +08:00
hub-gif
8bbb921552 refactor(jd): 矩阵分组、价统与 LLM 分组载荷拆至 competitor_report
新增 matrix_group(复用 pipeline.matrix_group_label)、price_stats、ingredients、llm_group_payloads;jd_competitor_report 仅保留报告编排与 Markdown;更新 matrix_group_label 模块说明。

Made-with: Cursor
2026-04-17 11:46:35 +08:00
hub-gif
f2a2f50ded refactor(jd): 将评论情感与 build_comment_sentiment_llm_payload 拆至 competitor_report
从 jd_competitor_report 迁入关键词命中、lexicon 与 LLM payload 构建;入口显式导入;保留 _comment_lines 与 build_scenario_groups 于主文件。

Made-with: Cursor
2026-04-17 11:42:33 +08:00
hub-gif
64dd1b149d refactor(crawler): 价盘促销分析迁入 competitor_report.price_promo
- 抽出 _analyze_price_promotions 与 _markdown_price_promotion_section,依赖 constants 与 csv_io。

- jd_competitor_report 显式 import,对外行为不变。

Made-with: Cursor
2026-04-17 11:38:27 +08:00
hub-gif
4687bcb907 refactor(crawler): 抽取 competitor_report 常量与 CSV 辅助
- 新增 jd_pc_search/competitor_report:constants、config(resolve_report_tuning)、csv_io。

- jd_competitor_report 通过 import * 保持原有符号;KEYWORD/EXISTING_RUN_DIR/OVERRIDE 仍在本脚本修改。

- 修正 constants.__all__ 中评价列名为 _COMMENT_CSV_*,避免 star import 漏绑。

Made-with: Cursor
2026-04-17 11:37:27 +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
c57014a067 refactor(pipeline): 将 API 视图拆为按领域子模块
- 原单文件 views.py 改为包 pipeline/views/:公共辅助、任务生命周期、报告与导出、数据集、商品快照、入库。

- urls 仍使用 from . import views,对外符号通过 __init__.py 聚合导出,行为不变。

Made-with: Cursor
2026-04-17 11:20:47 +08:00
hub-gif
7ed160235b feat(pipeline): 报告文案通俗化与 Markdown 导出可读性优化
- 竞品报告与流水线模板:弱化技术表述,促销与策略相关说明同步调整。

- md_document_export:按标题层级解析 #~######,列表与引用去掉行首符号,PDF 使用表格组件与分级标题样式。

Made-with: Cursor
2026-04-17 10:55:51 +08:00
hub-gif
b7c74f942c fix(pipeline): 探针缺依赖时不 sys.exit,并锁定 jieba/sklearn 依赖
Made-with: Cursor
2026-04-16 17:56:01 +08:00
hub-gif
c729d718c4 fix(llm): 策略与机会按 token 上限收敛输入,避免提示词过长失败
Made-with: Cursor
2026-04-16 17:37:54 +08:00
hub-gif
b0f71f196a feat(pipeline): 默认启用第八章文本挖掘探针(report_config)
Made-with: Cursor
2026-04-16 17:35:37 +08:00
hub-gif
9f0f2ed181 feat(llm): 策略与机会输入各章大模型节选并与前文对齐
Made-with: Cursor
2026-04-16 17:09:44 +08:00
hub-gif
b8516662a8 fix(charts): 探针模式下跳过 §8.3 关注词场景条图并清理旧 PNG
Made-with: Cursor
2026-04-16 16:32:05 +08:00
hub-gif
31ac2f1ac7 feat(pipeline): 报告可启用第八章文本挖掘探针替代原 §8.3 关注词与场景
Made-with: Cursor
2026-04-16 16:22:12 +08:00
hub-gif
b19a987a06 feat(pipeline): 探针 LLM 从评论推断使用场景(不接场景分组)
Made-with: Cursor
2026-04-16 16:05:05 +08:00
hub-gif
872874b41e fix(pipeline): 探针 LLM 禁止逐条粘贴摘录并收紧上下文条数
Made-with: Cursor
2026-04-16 15:54:28 +08:00
hub-gif
f69e02a27a refactor(pipeline): 第八章文本挖掘探针独立 LLM 输入与提示词
Made-with: Cursor
2026-04-16 15:40:43 +08:00
hub-gif
fe39150d62 refactor(demo): 探针 LLM 改为细类归纳(与 comment_groups 同源)
Made-with: Cursor
2026-04-16 15:36:29 +08:00
hub-gif
a6f04c1f8d feat(demo): 探针脚本支持按细类生成词云图
Made-with: Cursor
2026-04-16 15:27:14 +08:00
hub-gif
e83cd68462 feat(demo): 第八章文本挖掘探针脚本(分词/TF-IDF/共现/LDA/可选LLM)
Made-with: Cursor
2026-04-16 15:20:34 +08:00
hub-gif
0e353318e1 feat(report): §8.2 先按评分分桶再统计口语短语
Made-with: Cursor
2026-04-16 14:57:58 +08:00
hub-gif
9d4881a01c fix(report): 扩充正向包装短语并澄清口语条形图口径
Made-with: Cursor
2026-04-16 14:21:32 +08:00
hub-gif
0cb54f679b feat(llm): 策略稿促销节须对齐 price_promotion_signals
策略大模型提示要求依据 brief 中活动话术命中与券后价差字段写满减/券/红包等假设;禁止编造面额;活动子串补充红包/京豆。

Made-with: Cursor
2026-04-16 14:13:33 +08:00
hub-gif
1495161850 fix(report): 负向归纳对齐分量类抱怨并约束质地表述
默认关注词与负向口语短语表补充分量/量少等;§8.2 情感大模型提示要求对照 negative_lexeme_hits 条数、勿将未命中的质地问题写成主诉;lexeme 说明补充预设表局限。

Made-with: Cursor
2026-04-16 14:03:24 +08:00
hub-gif
505352ecda feat(llm): 策略稿「转化与体验」须兼顾正负面
在 STRATEGY_OPPORTUNITIES_SYSTEM 中要求该节同时依据 brief 写正向体验线索与负向摩擦/抱怨,避免只写一侧。

Made-with: Cursor
2026-04-16 11:07:02 +08:00
hub-gif
b10d282980 test(pipeline): 单细类评论要点归纳 LLM 烟测(mock 网关)
构造仅「饼干」矩阵细类的 build_comment_groups_llm_payload,断言 generate_comment_group_summaries_llm 与 chunked 单组时各调用一次网关,且 user JSON 含 keyword 与 group。

Made-with: Cursor
2026-04-16 10:52:04 +08:00
hub-gif
0be4049860 docs(copy): 将「口径」改为计数规则、说明、价格来源等通俗表述
报告正文、简报、策略草稿、API 说明与 LLM 提示中避免「统计口径」等行话;列表 CSV 表头「销量口径」改为「销量展示」;日报目录未改。

Made-with: Cursor
2026-04-16 10:43:44 +08:00
hub-gif
a2523415d5 docs(copy): 用「归类」替换易误解的「桶」表述
报告说明、docstring 与情感分析 LLM 提示中的「分桶/乱桶」等改为归类、关键词规则等通俗说法;JSON 字段名 sentiment_bucket_method 未改。

Made-with: Cursor
2026-04-16 10:40:39 +08:00
hub-gif
30a6bc4405 fix(report): 细类扇图口径与版式统一
_category_mix 增加(其余细类)使简报与扇形图合计等于有效矩阵 SKU 数;§4.3 去掉易与图不一致的 Markdown 表格与规则摘要,仅保留扇形图;全部扇形图默认画布统一为 4.9×3.65 英寸。

Made-with: Cursor
2026-04-16 10:38:21 +08:00
hub-gif
99d1b23b63 feat(pipeline): 按矩阵细类拆分 group 归纳 LLM 请求
§5/§6/§8 等 payload 仍含全部细类,但默认对每个细类单独调用网关并拼接 Markdown,降低单次上下文并减少跨类干扰。report_config.llm_group_summaries_chunk_by_matrix 可关闭;环境变量 MA_LLM_GROUP_SUMMARIES_BULK=1 恢复单次打包调用。

Made-with: Cursor
2026-04-16 10:34:29 +08:00
hub-gif
a43e1f9b1d feat(dataset): 搜索/宽表支持按解析后销量与评价量排序
新增 sales_sort_value、comment_count_sort_value 与 volume_parse;入库与迁移回填;sort=total_sales|comment_count;前端排序下拉文案。

Made-with: Cursor
2026-04-16 10:15:24 +08:00
hub-gif
f21bfbe02b feat(dataset): 店铺改为下拉选择,接口 shop 精确匹配
摘要增加 shop_options;筛选参数由 shop_q 改为 shop;合并表匹配 shop_name 或 detail_shop_name。

Made-with: Cursor
2026-04-16 10:08:06 +08:00
hub-gif
5ea55233b1 feat(dataset): 类目文案统一并支持按店铺名筛选
摘要 category_options;列/导出「类目」;查询参数 shop_q 模糊匹配店铺(搜索 shop_name、商详 detail_shop_name、宽表双列)。

Made-with: Cursor
2026-04-16 10:04:18 +08:00
hub-gif
d95189723c refactor(dataset): 类目筛选改为报告矩阵细类名(report_group)
新增 matrix_group_label 与 jd_competitor_report 同源路径解析;API 使用 report_group 字符串;摘要返回 report_group_options;搜索行按 SKU 从合并表回填细类;导出含报告细类列;前端下拉展示饼干/米等名称。

Made-with: Cursor
2026-04-16 09:58:22 +08:00
hub-gif
f915653104 feat(dataset): 库内浏览支持跳转页、排序与类目价格筛选
新增 JdLeafCategoryNorm 与 price 解析字段;数据集 API 支持 sort/order、category_norm_id、price 区间与类目路径模糊;摘要返回类目选项;前端 JobDatasetModal 增加筛选与分页跳转。

Made-with: Cursor
2026-04-16 09:51:26 +08:00