Files
funman300 0afce0dd59 feat: Phase 2 — game feel complete
Chemistry & squads:
- Chemistry calculation on GET /squad (club/league/nation links, max 100)
- Formation validation on POST /squad (exactly 11 starters, exactly 1 GK)

Objectives:
- Weekly objectives JSON (4 objectives: warrior, goals, dedicated, SBC)
- Daily objectives auto-reset at midnight UTC (background task)

SBC validation expanded:
- max_overall per-player enforcement
- required_clubs validation
- min_players_from_same_nation validation
- min_players_from_same_club validation

Market:
- GET /market?min_overall=X&position=Y filtering
- Expiry cleanup runs before every NPC refresh
- NPC market auto-refresh every 24h (background task, runs at startup)

Matches:
- GET /matches/opponent?difficulty=beginner|professional|world_class|legendary
  generates a random AI opponent squad from the card pool

Statistics:
- win_streak and best_win_streak tracking (migration 0002)
- GET /statistics/history?limit=N — last N matches with summary stats

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 15:33:09 -07:00

47 lines
1.1 KiB
JSON

[
{
"id": "weekly_win_3",
"title": "Weekly Warrior",
"description": "Win 3 matches this week.",
"objective_type": "weekly",
"metric": "matcheswon",
"target": 3,
"reward_coins": 2000,
"reward_pack_id": "silver_pack",
"reward_xp": 500
},
{
"id": "weekly_goals_10",
"title": "Goal Machine",
"description": "Score 10 goals this week.",
"objective_type": "weekly",
"metric": "goalsscored",
"target": 10,
"reward_coins": 1500,
"reward_pack_id": null,
"reward_xp": 400
},
{
"id": "weekly_play_5",
"title": "Dedicated Player",
"description": "Play 5 matches this week.",
"objective_type": "weekly",
"metric": "matchesplayed",
"target": 5,
"reward_coins": 1000,
"reward_pack_id": null,
"reward_xp": 300
},
{
"id": "weekly_sbc_2",
"title": "SBC Specialist",
"description": "Complete 2 SBCs this week.",
"objective_type": "weekly",
"metric": "sbcscompleted",
"target": 2,
"reward_coins": 2500,
"reward_pack_id": "gold_pack",
"reward_xp": 600
}
]