超新星已售每日报告_20260817.md 5.6 KB

超新星 SuperVault · 已售每日报告 文档

生成日期:2026/08/17 运行环境:Python 3.12.10 涉及:新增 stats/super_vault_nova_daily_report.py;旧脚本 super_vault_daily_report.py 改名为 super_vault_his_report.py

1. 目标信息

  • 数据源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

2. 统计口径

  • 统计范围sold_time ∈ [昨天 00:00, 今天 00:00),用服务器 CURDATE() - INTERVAL 1 DAYCURDATE() 卡窗,文件名日期=统计日(前一天),与时间窗同源、不受本机时区影响。
  • 不再叠加 status/sold_count 过滤:有 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 去重(中卡近似,平台跨全部商品去重、主播按各自商品去重,故各主播相加 ≥ 平台);均拼单价 = 销售额/成团数;人均消费 = 销售额/参与人数。

3. 报告结构(单 Sheet 分区)

  1. 一、平台汇总(自营·当日成交累计):主播数 + 5 项指标(竖排)。
  2. 二、各主播汇总:每主播一行,按销售额倒序。
  3. 三、各主播每条组队明细:按主播销售额倒序分块,块内按总金额倒序。明细列(13 列):序号 / 团名 / 编号 / 卡种 / 规格 / 单价 / 总份数 / 进度% / 总金额 / 参与人数(本团) / 开售时间 / 成交时间 / 售卖时长。

实现方式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_clausefetch_*。两脚本互不影响。

4. 与累计报告(his_report)的区别

维度 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

5. 运行方式

# 从项目根目录运行(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.pySEND_WECHAT 开关扩展)。

6. 脚本改名说明

旧脚本 super_vault_daily_report.py 名字带 "daily" 但实际默认是 all 累计口径,与新的真·每日报告放一起易混,故改名 super_vault_his_report.py(his = history,历史/累计)。

已同步的全部引用(无遗漏):

  • stats/super_vault_nova_daily_report.pyimport super_vault_his_report as basefrom 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 不依赖报告脚本,无需改动。

7. 本次结果概览(统计日 2026-08-16)

  • 平台:成团 7 · 主播 3 · 销售额 ¥2,168,951.30 · 参与 349 人。
  • 主播销售额排序:郑宇航(3 团 / 176.1 万)> 金豆豆(2 团 / 36.4 万)> Jerry(2 团 / 4.4 万)。
  • 明细成交时间全部落在 8-16,进度 100%,售卖时长按 sold_time − sell_time 计。

8. 注意事项

  • 数据质量依赖 sold_time 已采齐:每日报告完全以 sold_time 为准,而该字段靠 super_vault_daily_spider.pybackfill_sold_time / update_stale_productsdetail.soldTime 补采。若常驻爬虫进程 start_cxx_spider.py 未运行,最新团的 sold_time 可能滞后,导致当日成交被少统计——务必保证爬虫常驻进程正常运行
  • 昨天成交团可能尚无拆卡报告:多为 status=8 待发货、还没开播拆卡,故「参与人数」可能偏低甚至为 0,属正常(中卡近似口径)。
  • 时间字段写入 Excel 前统一 strftime 转文本,避免日期序列/格式错乱(复用自累计报告)。