生成日期:2026/08/17 运行环境:Python 3.12.10 涉及:新增
stats/super_vault_nova_daily_report.py;旧脚本super_vault_daily_report.py改名为super_vault_his_report.py
super_vault_product_record(已售拼团商品)/ super_vault_report_record(拆卡报告)crawler @ 100.64.0.25:3306(读运行目录 application.yml)sold_time(售罄成交时刻)统计昨天全天成交的拼团,产出「超新星已售每日报告」Excel(单 Sheet 分区)。stats/super_vault_nova_daily_report.py —— 每日报告脚本stats/超新星已售每日报告_{统计日}.xlsx —— 产物(如 超新星已售每日报告_20260816.xlsx)sold_time ∈ [昨天 00:00, 今天 00:00),用服务器 CURDATE() - INTERVAL 1 DAY 与 CURDATE() 卡窗,文件名日期=统计日(前一天),与时间窗同源、不受本机时区影响。sold_time 即代表该团已售罄成交,天然满足有效成交条件。sold_time 为准(售卖时长 = sold_time − sell_time);这是与累计报告最核心的口径差异(后者用 COALESCE(completion_time, sold_time, sell_time) 兜底锚点)。SUM(sign_price * count)(单价 × 总份数);主播按 anchor_username 分组(同名不同 anchor_id 合并);参与人数 = 拆卡报告 user_name 去重(中卡近似,平台跨全部商品去重、主播按各自商品去重,故各主播相加 ≥ 平台);均拼单价 = 销售额/成团数;人均消费 = 销售额/参与人数。实现方式:
super_vault_nova_daily_report.py通过import super_vault_his_report as base复用累计报告脚本的 Excel 渲染/样式组件(_write_summary_block/_write_anchor_table/_write_details/ 样式常量 /_fmt_dt等),只重写口径相关的win_clause与fetch_*。两脚本互不影响。
| 维度 | super_vault_his_report.py(累计) |
super_vault_nova_daily_report.py(每日) |
|---|---|---|
| 定位 | 历史 / 多口径统计报告 | 每日成交报告 |
| 统计窗 | all(全表累计)/ daily / range 可切 |
固定「昨天全天」 |
| 成交锚点 | COALESCE(completion_time, sold_time, sell_time) |
纯 sold_time |
| 过滤 | sold_count>0 且 status NOT IN(0,1,2,3) |
仅 sold_time 落在昨天(无需再过滤) |
| 产物前缀 | 超级仓库已售统计报告 | 超新星已售每日报告 |
| 文件名后缀 | 时间跨度(如 _20251230-20260814) |
统计日(如 _20260816) |
# 从项目根目录运行(cwd=根目录,mysql_pool 读根目录 application.yml)
cd D:\work\2026-01-28(cxx_spider)
python stats/super_vault_nova_daily_report.py
# 产物落在 stats/ 目录:超新星已售每日报告_{昨天}.xlsx
schedule_task() 已设每天 09:30 生成前一天报告(需常驻进程;当前 __main__ 走一次性 main())。super_vault_his_report.py 的 SEND_WECHAT 开关扩展)。旧脚本 super_vault_daily_report.py 名字带 "daily" 但实际默认是 all 累计口径,与新的真·每日报告放一起易混,故改名 super_vault_his_report.py(his = history,历史/累计)。
已同步的全部引用(无遗漏):
stats/super_vault_nova_daily_report.py:import super_vault_his_report as base、from super_vault_his_report import (...)、docstring。stats/super_vault_his_report.py:自身 docstring 的运行命令。docs/统计报告_超级仓库已售_20260814.md:两处路径引用。__pycache__ 下旧的 super_vault_daily_report.*.pyc。start_cxx_spider.py 不依赖报告脚本,无需改动。sold_time − sell_time 计。sold_time 已采齐:每日报告完全以 sold_time 为准,而该字段靠 super_vault_daily_spider.py 的 backfill_sold_time / update_stale_products 从 detail.soldTime 补采。若常驻爬虫进程 start_cxx_spider.py 未运行,最新团的 sold_time 可能滞后,导致当日成交被少统计——务必保证爬虫常驻进程正常运行。strftime 转文本,避免日期序列/格式错乱(复用自累计报告)。