Skip to content

fix: gérer winner_team_code (règle KO) dans submit_prediction - #1

Merged
t0m-car merged 1 commit into
mainfrom
fix/ko-winner-team-code
Jun 28, 2026
Merged

fix: gérer winner_team_code (règle KO) dans submit_prediction#1
t0m-car merged 1 commit into
mainfrom
fix/ko-winner-team-code

Conversation

@t0m-car

@t0m-car t0m-car commented Jun 28, 2026

Copy link
Copy Markdown
Member

Le bug (signalé par Grégory)

Sur un match à élimination directe, un prono nul posé via le web embarque un qualifié (winner_team_code, la nouvelle règle du +1). Quand le MCP modifie ce prono vers un score décisif (ex. 2-1), submitPredictionFor faisait un upsert qui mettait à jour home/away/joker mais ne touchait jamais winner_team_code → le qualifié périmé restait → home ≠ away + winner ≠ nullviolation du CHECK predictions_winner_implies_draw → l'écriture plantait. Le MCP n'avait pas suivi la nouvelle gestion KO.

Le correctif (parité avec l'app principale)

Normalisation de winner_team_code dans submitPredictionFor (lib/predictions.ts) :

  • hors nul KO (score décisif, ou phase de poules) → winner_team_code = null → efface tout qualifié périmé → plus de crash ;
  • nul prédit en KO → pose le qualifié fourni (validé : doit être l'une des 2 équipes), sinon PRÉSERVE celui déjà choisi (ex. via le web) pour ne pas le perdre en éditant juste le score.

L'outil submit_prediction (lib/tools.ts) expose désormais un param optionnel winnerTeamCode (avec la règle KO décrite : prono à la 90', nul → préciser le qualifié pour le +1) et renvoie un indice quand un nul KO n'a pas encore de qualifié, pour que le client (Claude) propose de le préciser.

C'est le seul outil d'écriture du MCP (les autres sont en lecture) → le correctif couvre tout le périmètre.

Vérif

tsc --noEmit 0 · next build OK.

Note (comportement LLM, hors code)

Le « Claude tente de remplacer le 1-1 » est une décision du modèle ; la description de l'outil rappelle déjà « Confirme toujours avec l'utilisateur avant d'écrire ». Ce correctif garantit surtout que toute écriture (modif ou nouvelle) ne plante plus et respecte la règle KO.

…mit_prediction

Le MCP n'avait pas suivi la nouvelle règle KO : submitPredictionFor faisait un upsert
sans jamais toucher winner_team_code. Modifier un prono nul-KO déjà qualifié (winner posé
via le web) vers un score décisif laissait le qualifié périmé → home ≠ away + winner ≠ null
→ violation du CHECK predictions_winner_implies_draw (le bug signalé par Grégory : le MCP
tentait de remplacer un 1-1 et plantait).

Correctif (parité avec submitPrediction de l'app principale) : normalisation de
winner_team_code dans l'upsert —
  • hors nul KO → null (efface tout qualifié périmé) → plus de crash sur un score décisif ;
  • nul KO → pose le qualifié fourni (validé ∈ {dom, ext}), sinon PRÉSERVE celui déjà choisi
    (web), pour ne pas le perdre en éditant juste le score.
L'outil submit_prediction expose désormais un param optionnel winnerTeamCode (+ description
de la règle KO) et renvoie un indice quand un nul KO n'a pas encore de qualifié (pour le +1).

tsc + build OK.
@vercel

vercel Bot commented Jun 28, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
footics-mcp-server Ready Ready Preview, Comment Jun 28, 2026 1:36pm

Request Review

@t0m-car
t0m-car merged commit 15084bf into main Jun 28, 2026
3 checks passed
@t0m-car
t0m-car deleted the fix/ko-winner-team-code branch June 28, 2026 14:09
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.

1 participant