Skip to content

Phase 8: Roblox API Enrichment#43

Merged
nullEFFORT merged 1 commit intomainfrom
phase8-enrichment
Mar 5, 2026
Merged

Phase 8: Roblox API Enrichment#43
nullEFFORT merged 1 commit intomainfrom
phase8-enrichment

Conversation

@nullEFFORT
Copy link
Owner

Summary

  • SubjectEnrichment model + Alembic migration for subject_enrichments table (one enrichment per subject, CASCADE delete)
  • Roblox API client (roblox_api.py) — async httpx client with semaphore-based rate limiter for 6 public endpoints: users, friends, groups, games, badges, thumbnails
  • RobloxEnricher orchestrator — parallel API calls via asyncio.gather, upserts enrichment records, backfills Subject.account_age_days/friend_count, creates enrichment_flag alerts
  • REST endpoints: POST /api/enrichment/{subject_id} (trigger), GET /api/enrichment/{subject_id} (read)
  • Alert conditions: banned user (critical), new account + grooming activity (high), 50+ groups (medium) — with duplicate prevention
  • LE summary reports include ROBLOX PROFILE section when enrichment data exists
  • Dashboard enrichment panel on SubjectDetailPage: avatar thumbnail, bio, collapsible groups/games/badges lists, Refresh button, error indicators
  • 24 tests — all passing (API client: 8, enricher orchestrator: 10, integration: 6)

Test plan

  • pytest tests/test_enrichment/ tests/test_api/test_enrichment.py -v — 24/24 passing
  • npx tsc --noEmit — clean TypeScript compile
  • Full test suite: 89 passed (5 pre-existing errors unrelated to this PR)
  • Manual: POST enrichment endpoint with a real Roblox user ID
  • Manual: Verify dashboard panel renders enrichment data
  • Manual: Verify LE summary includes ROBLOX PROFILE section

Closes #35 #36 #37 #38 #39 #40 #41 #42

🤖 Generated with Claude Code

Adds automated Roblox profile enrichment for flagged subjects:

- SubjectEnrichment model + Alembic migration (subject_enrichments table)
- Async Roblox API client with rate limiter (users, friends, groups, games, badges, thumbnails)
- RobloxEnricher orchestrator: parallel API calls, upsert, alert generation
- REST endpoints: POST/GET /api/enrichment/{subject_id}
- enrichment_flag AlertType for banned users, new accounts, high group counts
- LE summary reports include ROBLOX PROFILE section
- Dashboard enrichment panel with avatar, bio, collapsible lists, refresh
- 24 tests (API client: 8, enricher: 10, integration: 6) — all passing

Closes #35 #36 #37 #38 #39 #40 #41 #42

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@nullEFFORT nullEFFORT merged commit 8de2f1e into main Mar 5, 2026
4 checks passed
@nullEFFORT nullEFFORT deleted the phase8-enrichment branch March 7, 2026 04:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

SubjectEnrichment model + Alembic migration

1 participant