mirror of
https://github.com/primedigitaltech/market-assistant.git
synced 2026-07-22 08:01:34 +08:00
补充策略决策键、fixture 与相关单测;分析/营销包本地存储与任务状态;竞品简报 schema 与 LLM 章节生成、促销与导出调整;并纳入 Cursor 工程规则 user-dev-style。 Made-with: Cursor
102 lines
3.6 KiB
Python
102 lines
3.6 KiB
Python
"""CSV 表头键、运行默认调参与关注词/场景配置(与 ``pipeline.competitor_report.jd_report`` 顶层一致)。"""
|
||
from __future__ import annotations
|
||
|
||
from pipeline.csv.schema import (
|
||
COMMENT_CSV_COLUMNS,
|
||
JD_SEARCH_CSV_HEADERS,
|
||
MERGED_FIELD_TO_CSV_HEADER,
|
||
)
|
||
|
||
_JD_LIST_PRICE_KEY = JD_SEARCH_CSV_HEADERS["price"]
|
||
_COUPON_SHOW_PRICE_KEY = JD_SEARCH_CSV_HEADERS["coupon_price"]
|
||
_ORIGINAL_LIST_PRICE_KEY = JD_SEARCH_CSV_HEADERS["original_price"]
|
||
_SELLING_POINT_KEY = JD_SEARCH_CSV_HEADERS["selling_point"]
|
||
_RANK_TAGLINE_KEY = JD_SEARCH_CSV_HEADERS["hot_list_rank"]
|
||
|
||
# 历史批次 CSV 表头(括号英文);新批次为纯中文,读取时新键优先
|
||
_LEGACY_JD_LIST_PRICE_KEY = "标价(jdPrice,jdPriceText,realPrice)"
|
||
_LEGACY_COUPON_SHOW_PRICE_KEY = (
|
||
"券后到手价(couponPrice,subsidyPrice,finalPrice.estimatedPrice,priceShow)"
|
||
)
|
||
_LEGACY_SHOP_NAME_KEY = "店铺名(shopName)"
|
||
_LEGACY_RANK_TAGLINE_KEY = "榜单类文案(标签/腰带/标题数组中的榜、TOP 等)"
|
||
_LEGACY_COMMENT_FUZZ_KEY = "评价量(commentFuzzy)"
|
||
_LEGACY_SELLING_POINT_KEY = "卖点(sellingPoint)"
|
||
_LIST_BRAND_TITLE_HEADER = "店铺信息标题"
|
||
_LEGACY_LIST_BRAND_TITLE_KEY = "店铺信息标题(shopInfoTitle,brandName)"
|
||
|
||
_DETAIL_PRICE_FINAL_CSV_KEYS: tuple[str, ...] = (
|
||
MERGED_FIELD_TO_CSV_HEADER["detail_price_final"],
|
||
"detail_price_final",
|
||
)
|
||
_LIST_PRICE_AND_COUPON_KEYS: tuple[str, ...] = (
|
||
*_DETAIL_PRICE_FINAL_CSV_KEYS,
|
||
_JD_LIST_PRICE_KEY,
|
||
_LEGACY_JD_LIST_PRICE_KEY,
|
||
_COUPON_SHOW_PRICE_KEY,
|
||
_LEGACY_COUPON_SHOW_PRICE_KEY,
|
||
)
|
||
|
||
# 报告摘录「标价」:列表标价优先,缺省时用商详到手价列兜底
|
||
_LIST_SHOW_PRICE_CELL_KEYS: tuple[str, ...] = (
|
||
_JD_LIST_PRICE_KEY,
|
||
_LEGACY_JD_LIST_PRICE_KEY,
|
||
MERGED_FIELD_TO_CSV_HEADER["detail_price_final"],
|
||
"detail_price_final",
|
||
)
|
||
|
||
_MERGED_SHOP_CELL_KEYS: tuple[str, ...] = (
|
||
MERGED_FIELD_TO_CSV_HEADER["detail_shop_name"],
|
||
"detail_shop_name",
|
||
JD_SEARCH_CSV_HEADERS["shop_name"],
|
||
_LEGACY_SHOP_NAME_KEY,
|
||
)
|
||
|
||
_COMMENT_FUZZ_KEYS: tuple[str, ...] = (
|
||
MERGED_FIELD_TO_CSV_HEADER["comment_fuzzy"],
|
||
_LEGACY_COMMENT_FUZZ_KEY,
|
||
)
|
||
|
||
_COMMENT_CSV_SKU = COMMENT_CSV_COLUMNS[0]
|
||
_COMMENT_CSV_BODY = COMMENT_CSV_COLUMNS[3]
|
||
_COMMENT_CSV_SCORE = COMMENT_CSV_COLUMNS[7] # 「评分」→ commentScore
|
||
|
||
# 评价星级分桶(comment_sentiment 模块):仍用于可选的情感 LLM 载荷;报告正文与 brief 已不再输出同口径图
|
||
_COMMENT_SCORE_NEG_MAX = 2 # 1~2 星 → 偏负向
|
||
_COMMENT_SCORE_POS_MIN = 4 # 4~5 星 → 偏正向(3 星为中评,归入中性)
|
||
|
||
_DETAIL_CATEGORY_PATH_KEY = MERGED_FIELD_TO_CSV_HEADER["detail_category_path"]
|
||
_K_CAT_COL = JD_SEARCH_CSV_HEADERS["leaf_category"]
|
||
_K_PROP_COL = JD_SEARCH_CSV_HEADERS["attributes"]
|
||
|
||
EXTERNAL_MARKET_TABLE_ROWS: tuple[tuple[str, str, str, str], ...] = ()
|
||
|
||
__all__ = [
|
||
"_COMMENT_CSV_BODY",
|
||
"_COMMENT_CSV_SCORE",
|
||
"_COMMENT_CSV_SKU",
|
||
"EXTERNAL_MARKET_TABLE_ROWS",
|
||
"_COMMENT_FUZZ_KEYS",
|
||
"_COMMENT_SCORE_NEG_MAX",
|
||
"_COMMENT_SCORE_POS_MIN",
|
||
"_COUPON_SHOW_PRICE_KEY",
|
||
"_DETAIL_CATEGORY_PATH_KEY",
|
||
"_DETAIL_PRICE_FINAL_CSV_KEYS",
|
||
"_JD_LIST_PRICE_KEY",
|
||
"_K_CAT_COL",
|
||
"_K_PROP_COL",
|
||
"_LEGACY_COUPON_SHOW_PRICE_KEY",
|
||
"_LEGACY_JD_LIST_PRICE_KEY",
|
||
"_LEGACY_LIST_BRAND_TITLE_KEY",
|
||
"_LEGACY_RANK_TAGLINE_KEY",
|
||
"_LEGACY_SELLING_POINT_KEY",
|
||
"_LEGACY_SHOP_NAME_KEY",
|
||
"_LIST_BRAND_TITLE_HEADER",
|
||
"_LIST_PRICE_AND_COUPON_KEYS",
|
||
"_LIST_SHOW_PRICE_CELL_KEYS",
|
||
"_MERGED_SHOP_CELL_KEYS",
|
||
"_ORIGINAL_LIST_PRICE_KEY",
|
||
"_RANK_TAGLINE_KEY",
|
||
"_SELLING_POINT_KEY",
|
||
]
|