herodraft | connection | — | consumers.py | WS connect/disconnect, captain state, kicks |
herodraft | heartbeat | — | herodraft_tick.py | Heartbeat staleness checks, heartbeat-triggered pauses |
herodraft | timer | — | herodraft_tick.py | Tick loop lifecycle, tick broadcast, timeout auto-pick, resume |
websocket | heartbeat | — | consumers_base.py | Heartbeat receive, captain register/unregister (generic WS infra) |
websocket | connection | — | telemetry/websocket.py | Generic WS connect/disconnect/receive instrumentation |
herodraft | view | — | app/functions/herodraft_views.py | HeroDraft HTTP actions: create, roll, choice/pick submit, abandon, reset |
celery | task | — | telemetry/celery.py | Generic Celery task lifecycle bookends (started/completed/failed) |
events | discord | — | events/tasks.py (cron sync, non-interaction tasks like sync_discord_events) | Cron-driven event sync to Discord that isn't triggered by an interaction |
events | scheduling | — | events/tasks.py | Event generation, signup opening, repeaters |
tournament | discord | — | discordbot/tasks.py | Tournament DMs, bracket notifications |
avatars | endpoint | — | user/internal/avatar.py | Internal endpoints: list-linked-users, list-guild-ids, bulk-update + invalidate |
avatars | refresh | — | app/tasks/avatar_refresh.py::refresh_avatars_batched | Daily Celery beat: read guild-member cache, diff against DB, POST bulk-update |
avatars | single | — | app/tasks/avatar_refresh.py::refresh_single_user_avatar + helpers | Single-user refresh: Discord API fetch + per-user update_user_avatar |
avatars | legacy | — | app/tasks/avatar_refresh.py::refresh_discord_avatars / refresh_all_discord_data | Older per-user fanout tasks (predates the batched path) |
discord | lease | — | discordbot/tasks.py, app/views/internal.py | DiscordMessageLog stale-lease sweep (pending NULL >5min, failed >1h) |
discord | interaction | ["events","signup"] | discordbot/components.py, discordbot/signup_responses.py, discordbot/log_context.py | Discord-bot UI plumbing + response delivery: button/modal/select callbacks |
discord | dispatch | ["events","signup"] | events/discord/dispatch.py | notify_* dispatch visibility (queued vs skipped); threads interaction_id to Celery |
discord | celery | ["events","signup"] | events/tasks.py (Discord-dispatching tasks) | celery_task_started/finished/failed bookend logs |
cache | invalidate | — | app/cache_utils.py | Per-object cacheops invalidation fired from transaction.on_commit |
websocket | broadcast | — | app/broadcast.py | Draft / herodraft event + state broadcast to channel groups (kind field distinguishes draft/herodraft/herodraft_state) |
auth | internal | — | app/auth.py | Internal-service auth (X-Internal-Token): IP-allowlist rejects, invalid-token failures |
auth | social | — | app/pipelines.py | Discord OAuth social-auth pipeline: account reclaim/merge, username matching |
auth | merge | — | app/discord_accounts.py | Discord account de-dup / merge |
tournament | draft, registration, user | — | app/models.py, app/functions/tournament.py | Draft build/pick/rebuild, captain/team registration, per-user avatar refresh |
api | serializer, routing, main, csv_import, joke | — | app/serializers.py, app/views*.py, app/views/csv_import.py, backend/urls.py | DRF serializer mutations, view cache-miss, CSV import, env/routing |
user | functions | — | app/functions/user.py | Profile-update request/validate/apply |
app | signals | — | app/signals.py | Model signal handlers (org/league user create, herodraft cleanup) |
internal_client | http | — | app/internal_client/__init__.py | Internal HTTP client JSON-parse failures |
discord | bot, utils, views, channels, roles, users | — | discordbot/** | Bot lifecycle, message utils, slash views, channel/role/user services |
events | tasks, services, views, dispatch | — | events/** | Event task lifecycle, signup services, manual fire, tournament-link dispatch |
steam | api, game_linking, match, mmr, stats, model, league_sync, retry | — | steam/** | Steam API, account/game linking, match fetch/store, MMR/stats, league sync, retry |
bracket | generate, model | — | bracket/** | Bracket generation + model-level cache logging |
org | views | — | org/views.py | Org admin actions (user delete/merge) |
common | utils | — | common/utils.py | Shared utility warnings (CI/IP detection) |