paper-dynasty-database/app/routers_v2
Cal Corum a2d2aa3d31 feat(WP-13): post-game callback endpoints for season stats and evolution
Implements two new API endpoints the bot calls after a game completes:

  POST /api/v2/season-stats/update-game/{game_id}
    Delegates to update_season_stats() service (WP-05). Returns
    {"updated": N, "skipped": bool} with idempotency via ProcessedGame ledger.

  POST /api/v2/evolution/evaluate-game/{game_id}
    Finds all (player_id, team_id) pairs from the game's StratPlay rows,
    calls evaluate_card() for each pair that has an EvolutionCardState,
    and returns {"evaluated": N, "tier_ups": [...]} with full tier-up detail.

New files:
  app/services/evolution_evaluator.py — evaluate_card() service (WP-08)
  tests/test_postgame_evolution.py    — 10 integration tests (all pass)

Modified files:
  app/routers_v2/season_stats.py — rewritten to delegate to the service
  app/routers_v2/evolution.py    — evaluate-game endpoint added
  app/main.py                    — season_stats router registered

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 16:05:21 -05:00
..
__init__.py Initial Commit with /current 2023-09-13 14:44:26 -05:00
admin.py fix: remove plaintext bearer token from warning logs (#7) 2026-03-05 03:43:27 +00:00
awards.py fix: replace broad except Exception blocks with DoesNotExist (#15) 2026-03-05 15:32:53 -06:00
batstats.py fix: replace broad except Exception blocks with DoesNotExist (#15) 2026-03-05 15:32:53 -06:00
battingcardratings.py fix: remove plaintext bearer token from warning logs (#7) 2026-03-05 03:43:27 +00:00
battingcards.py fix: remove plaintext bearer token from warning logs (#7) 2026-03-05 03:43:27 +00:00
cardpositions.py fix: remove plaintext bearer token from warning logs (#7) 2026-03-05 03:43:27 +00:00
cards.py feat(WP-10): pack opening hook — evolution_card_state initialization 2026-03-18 13:41:05 -05:00
cardsets.py fix: replace broad except Exception blocks with DoesNotExist (#15) 2026-03-05 15:32:53 -06:00
current.py fix: replace broad except Exception blocks with DoesNotExist (#15) 2026-03-05 15:32:53 -06:00
decisions.py fix: remove plaintext bearer token from warning logs (#7) 2026-03-05 03:43:27 +00:00
events.py fix: replace broad except Exception blocks with DoesNotExist (#15) 2026-03-05 15:32:53 -06:00
evolution.py feat(WP-13): post-game callback endpoints for season stats and evolution 2026-03-18 16:05:21 -05:00
gamerewards.py fix: replace broad except Exception blocks with DoesNotExist (#15) 2026-03-05 15:32:53 -06:00
gauntletrewards.py fix: replace broad except Exception blocks with DoesNotExist (#15) 2026-03-05 15:32:53 -06:00
gauntletruns.py fix: replace broad except Exception blocks with DoesNotExist (#15) 2026-03-05 15:32:53 -06:00
mlbplayers.py fix: remove plaintext bearer token from warning logs (#7) 2026-03-05 03:43:27 +00:00
notifications.py fix: replace broad except Exception blocks with DoesNotExist (#15) 2026-03-05 15:32:53 -06:00
packs.py fix: replace broad except Exception blocks with DoesNotExist (#15) 2026-03-05 15:32:53 -06:00
packtypes.py fix: replace broad except Exception blocks with DoesNotExist (#15) 2026-03-05 15:32:53 -06:00
paperdex.py fix: replace broad except Exception blocks with DoesNotExist (#15) 2026-03-05 15:32:53 -06:00
pitchingcardratings.py fix: remove plaintext bearer token from warning logs (#7) 2026-03-05 03:43:27 +00:00
pitchingcards.py fix: remove plaintext bearer token from warning logs (#7) 2026-03-05 03:43:27 +00:00
pitstats.py fix: replace broad except Exception blocks with DoesNotExist (#15) 2026-03-05 15:32:53 -06:00
players.py feat: persistent browser instance for card rendering (#89) 2026-03-16 11:20:42 -05:00
rarity.py fix: replace broad except Exception blocks with DoesNotExist (#15) 2026-03-05 15:32:53 -06:00
results.py fix: replace broad except Exception blocks with DoesNotExist (#15) 2026-03-05 15:32:53 -06:00
rewards.py fix: replace broad except Exception blocks with DoesNotExist (#15) 2026-03-05 15:32:53 -06:00
scout_claims.py feat: add scout_opportunities and scout_claims tables and API endpoints (#44) 2026-03-05 03:45:38 +00:00
scout_opportunities.py feat: add scout_opportunities and scout_claims tables and API endpoints (#44) 2026-03-05 03:45:38 +00:00
scouting.py fix: remove stub live_update_pitching endpoint (#11) 2026-03-07 01:37:52 -06:00
season_stats.py feat(WP-13): post-game callback endpoints for season stats and evolution 2026-03-18 16:05:21 -05:00
stratgame.py fix: remove plaintext bearer token from warning logs (#7) 2026-03-05 03:43:27 +00:00
stratplays.py fix: remove plaintext bearer token from warning logs (#7) 2026-03-05 03:43:27 +00:00
teams.py feat(WP-07): card state API endpoints — closes #72 2026-03-18 15:33:02 -05:00