# 超新星 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 DAY` 与 `CURDATE()` 卡窗,文件名日期=统计日(前一天),与时间窗同源、不受本机时区影响。 - **不再叠加 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_clause` 与 `fetch_*`。两脚本互不影响。 ## 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. 运行方式 ```bash # 从项目根目录运行(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` 开关扩展)。 ## 6. 脚本改名说明 旧脚本 `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` 不依赖报告脚本,无需改动。 ## 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.py` 的 `backfill_sold_time` / `update_stale_products` 从 `detail.soldTime` 补采。若常驻爬虫进程 `start_cxx_spider.py` 未运行,最新团的 `sold_time` 可能滞后,导致当日成交被少统计——**务必保证爬虫常驻进程正常运行**。 - **昨天成交团可能尚无拆卡报告**:多为 status=8 待发货、还没开播拆卡,故「参与人数」可能偏低甚至为 0,属正常(中卡近似口径)。 - 时间字段写入 Excel 前统一 `strftime` 转文本,避免日期序列/格式错乱(复用自累计报告)。