Ship Steam login, D1 player sync, and cached「我」dashboard.

Players get a fast TTL-backed homepage (local profile / Cloudflare D1) with dense UI polish; login unlocks /home without blocking on every OpenDota refresh.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
voson
2026-08-01 01:24:30 +08:00
co-authored by Cursor
parent 4a61aeeb26
commit f5b7011c45
65 changed files with 7304 additions and 552 deletions
+41
View File
@@ -0,0 +1,41 @@
"""Launch serve_relations with STEAM_API_KEY / SESSION_SECRET from keyzoo env.
Maps KEYZOO_ASSET_SECRET_WEB_API_KEY / KEYZOO_ASSET_SECRET_SESSION_SECRET
when the plain names are unset. Does not print secret values.
"""
from __future__ import annotations
import os
import subprocess
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
def _map_env() -> None:
if not (os.environ.get("STEAM_API_KEY") or "").strip():
alt = (os.environ.get("KEYZOO_ASSET_SECRET_WEB_API_KEY") or "").strip()
if alt:
os.environ["STEAM_API_KEY"] = alt
if not (os.environ.get("SESSION_SECRET") or "").strip():
alt = (os.environ.get("KEYZOO_ASSET_SECRET_SESSION_SECRET") or "").strip()
if alt:
os.environ["SESSION_SECRET"] = alt
def main() -> int:
_map_env()
steam_ok = bool((os.environ.get("STEAM_API_KEY") or "").strip())
sess_ok = bool((os.environ.get("SESSION_SECRET") or "").strip())
print(f"steam_auth configured: steam={steam_ok} session={sess_ok}", flush=True)
if not steam_ok or not sess_ok:
print("missing STEAM_API_KEY or SESSION_SECRET", file=sys.stderr)
return 2
cmd = [sys.executable, "-u", str(ROOT / "web" / "serve_relations.py"), *sys.argv[1:]]
return subprocess.call(cmd, cwd=str(ROOT))
if __name__ == "__main__":
raise SystemExit(main())