Files
climperor/web/cloudflare
vosonandCursor cafd0651b1 Fix player sync empty overwrites and force CSS cache refresh.
Keep D1 recent/heroes/peers/rank when OpenDota is partial; bump site to 0.6.55 and shorten style.css cache so「我」layout is not stuck on stale CSS.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-01 01:46:13 +08:00
..

Climperor Cloudflare player data layer

Production multi-user storage for Steam-login player pages:

Resource Name Role
D1 climperor-users users, stats, heroes, match index, sync jobs
R2 climperor-player-data private full match JSON (matches/{id}.json)
Queue climperor-player-sync async OpenDota/Steam refresh
DLQ climperor-player-sync-dlq failed sync messages
Worker climperor-player-sync queue consumer

Provision

# via keyzoo refining/cloudflare asset
python web/cloudflare/provision.py

Then deploy the worker:

cd web/cloudflare/player-sync
npx wrangler@3 deploy
npx wrangler@3 secret put STEAM_API_KEY
# optional:
npx wrangler@3 secret put OPENDOTA_API_KEY

Pages project climperor-relations needs bindings DB, MATCHES, SYNC_QUEUE (see web/frontend/wrangler.toml). provision.py binds production and preview with matching fail_open. Auth secrets on Pages (prod+preview):

python web/cloudflare/_stage_steam_auth.py   # via keyzoo refining/steam
python web/cloudflare/put_pages_secrets.py   # via keyzoo refining/cloudflare

Optional PLAYER_PAGES_PUBLISH_SECRET. Worker also needs STEAM_API_KEY (python web/cloudflare/put_worker_secrets.py after _stage_steam_key.py).

R2: if create returns “enable R2”, open https://dash.cloudflare.com/?to=/:account/r2 once, then re-run provision.py and uncomment the [[r2_buckets]] block in player-sync/wrangler.toml, redeploy Worker. Until then, match list/stats still work via D1; full match JSON download is deferred.

Ids are recorded in .resources.json (no secrets).

Local

python web/serve_relations.py continues to use pc/player_pages/ JSON + enrich (GET /api/players/me runs enrich_profile_recent). Production /home uses GET /api/players/me (D1 + queue).

Tests

python -m unittest pc.tests.test_player_stats -v
node web/cloudflare/player-sync/test_stats.mjs