Commit Graph
11 Commits
Author SHA1 Message Date
FANGKKandClaude Opus 5 de25c7d4cd Update data 9/11-9/13; switch roster to 投手List.xlsx
投手List.xlsx is a strict superset of the previous roster (19 added,
none removed or reassigned) and claims every previously unmatched
Adpingid, so the report has no unattributed spend.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 13:32:14 +08:00
FANGKKandClaude Opus 5 88084ce5ff Add period-over-period trend table at top of report
build_data.py now also computes each buyer's total for the preceding
3-day window under identical rules (exclusions, attribution), exposed as
prev_total plus meta.prev_range. index.html renders it as the first
panel, with green/red deltas and a total row; the panel stays hidden if
no prior period exists.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-07 23:42:03 +08:00
FANGKKandClaude Opus 5 442aaacc8a Switch roster to 武汉自投投放下单_AM&Media Buy.xlsx
New roster is a strict superset of 投手.xlsx (14 added, none removed, no
reassignments). build_data.py now picks the roster by an explicit
precedence list, so the old 投手.xlsx stays as a fallback.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 15:33:15 +08:00
FANGKKandClaude Opus 5 b36405b1ba Attribute Adpingid 11729927 to 黄政 via roster supplement
New roster_extra.json fills in Adpingids missing from 投手.xlsx. It only
applies when the roster has no entry for that id, so a future roster
always wins.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 13:36:47 +08:00
FANGKKandClaude Opus 5 55888a6aa4 Use standalone 投手.xlsx as the roster source
Monthly data files no longer carry a 投手 sheet, so build_data.py now
prefers a standalone 投手.xlsx and falls back to the newest embedded
sheet. This roster is content-identical to the 2608 embedded one, so
data.json is unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 13:34:01 +08:00
FANGKKandClaude Opus 5 e6061d1286 Support monthly source rollover; update data - 8/29-8/31
The 2609 file carries only 8/31 and has no 投手 sheet, so build_data.py
now globs every *每日数据-武汉萌奇熊.xlsx, merges 平台消耗统计 per date
(newer filename wins for a repeated date), and takes the roster from the
newest file that still has a 投手 sheet. Future month rollovers need no
code change.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 13:29:22 +08:00
FANGKKandClaude Opus 5 e6ec3e1d22 Change data source label to 萌奇熊日报
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-31 18:53:26 +08:00
FANGKKandClaude Opus 5 ef86d383f8 Add permanent Adpingid-level exclusions
exclude.json gains an "adpings" map (18 ids, value = package for
reference) alongside the existing package list. build_data.py drops those
Adpingids from both the 投手 ownership counts and the spend rows.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-31 10:43:53 +08:00
FANGKKandClaude Opus 5 fcf9a5c01b Add Geo suffix and Adpingid column to 投手明细
Package now renders as pkg_GEO, where GEO is the region with the highest
total spend for that package. The new Adpingid column shows the
top-spending Adping within that region, so label and id stay consistent.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-27 14:39:38 +08:00
FANGKKandClaude Opus 5 06f701699e Show Adpingid counts per buyer in 投手明细
build_data.py now emits active_ids (Adpingids with spend in the window)
and owned_ids (Adpingids assigned to the buyer, exclusions removed).
active_ids sums to the 覆盖 Adpingid 数 card.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-27 14:31:45 +08:00
FANGKKandClaude Opus 5 8d3716b726 Exclude specified packages from report
Add exclude.json (12 package names, permanent) and build_data.py so the
report is reproducible. Exclusion is exact-match on package name, applied
both to 平台消耗统计 rows and to Adpingids whose 投手 pkg is excluded.
Exact match avoids false positives (e.g. in.swiggy.android vs "igg").

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-26 19:06:30 +08:00