Feature 1.38.0: BGG mechanics and best-with-N data with backfill (game roulette, phase 1) #94
No reviewers
Labels
No labels
audit
bug
cleanup
docs
duplicate
enhancement
help wanted
invalid
new feature
P0
P1
P2
P3
question
roadmap
security
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
pyaniz/Thursday!94
Loading…
Reference in a new issue
No description provided.
Delete branch "staging"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Type: Feature (minor) - VERSION 1.37.3 -> 1.38.0. Phase 1 of
.gsd/proposals/game-roulette.md(not committed): the data the roulette needs. No visible roulette yet.What
games.mechanics TEXT[],best_players INT[],recommended_players INT[].NULL= not fetched yet, empty = BGG has none.shared/game_details.py(pure, tested): mechanics from theboardgamemechaniclinks; the suggested_numplayers poll ->recommended(Best + Recommended votes outnumber Not Recommended, Best counts always included) andbest(most Best votes, ties keep all); polls under 5 votes ignored;8+= 8. The existing category/type helpers moved here (router imports them under the old names)./thingpayload they already fetch. A sync's "known games" shortcut now also requiresmechanics IS NOT NULL, so syncing refreshes games that lack them (a natural backfill for each user's collection).features/games/backfill.py: next ~40 games with a BGG id andmechanics IS NULL, fetched through the existingget_game_details_many(batches of 20, backoff), stored together with missing categories/types. If BGG answers nothing the chunk is left untouched; a game BGG no longer returns is stored as 'none' so it is not retried forever.GET /api/admin/game-data-status,POST /api/admin/backfill-game-data?limit=40(global admin).backend/scripts/backfill_game_data.pyfor the Docker deployment.docs/features/Collections.md.Testing
tests/test_game_details.py) and 4 backfill tests with a fake DB and fake BGG (tests/test_backfill_game_data.py) pass; ratings and permission tests still pass;npm run buildpasses.poll name=suggested_numplayers,results numplayers,result value/numvotes). On staging please: apply V59, open Administration > Game data, run the refresh, and confirm the remaining count goes to 0.🤖 Generated with Claude Code