Ajoute l Elo et les statistiques de parties
This commit is contained in:
@@ -217,6 +217,108 @@ Erreurs frequentes :
|
||||
- `400 Bad Request` si une longueur maximale est depassee.
|
||||
- `401 Unauthorized` sans session.
|
||||
|
||||
### GET /api/users/me/stats
|
||||
|
||||
Retourne les statistiques du compte courant et ses derniers matchs enregistres.
|
||||
|
||||
Reponse `200 OK` :
|
||||
|
||||
```json
|
||||
{
|
||||
"subject": "2f7d0f1d-3ef6-4b5f-aab5-4cf6b61c0a28",
|
||||
"currentElo": 1216,
|
||||
"rankedGames": 1,
|
||||
"casualGames": 2,
|
||||
"wins": 2,
|
||||
"losses": 1,
|
||||
"stoppedGames": 0,
|
||||
"whiteWins": 1,
|
||||
"blackWins": 1,
|
||||
"whiteLosses": 1,
|
||||
"blackLosses": 0,
|
||||
"totalMoves": 34,
|
||||
"totalCubeRounds": 6,
|
||||
"bestCubeTimeMs": 8420,
|
||||
"averageCubeTimeMs": 11530,
|
||||
"lastMatchUtc": "2026-04-15T11:00:00.0000000Z",
|
||||
"recentMatches": [
|
||||
{
|
||||
"matchId": "c1f4e44f5f5f4fe4b8f2bf1f8a634f9e",
|
||||
"completedUtc": "2026-04-15T11:00:00.0000000Z",
|
||||
"result": "white",
|
||||
"mode": "twice",
|
||||
"preset": "fast",
|
||||
"matchLabel": "Rencontre ChessCubing",
|
||||
"playerColor": "white",
|
||||
"playerName": "Christophe JEANNEROT",
|
||||
"opponentName": "Alex Martin",
|
||||
"opponentSubject": "sub-ami-1",
|
||||
"isRanked": true,
|
||||
"isWin": true,
|
||||
"isLoss": false,
|
||||
"playerMoves": 6,
|
||||
"opponentMoves": 6,
|
||||
"cubeRounds": 2,
|
||||
"playerBestCubeTimeMs": 8420,
|
||||
"playerAverageCubeTimeMs": 10120,
|
||||
"eloBefore": 1200,
|
||||
"eloAfter": 1216,
|
||||
"eloDelta": 16
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### POST /api/users/me/stats/matches
|
||||
|
||||
Enregistre la fin d'une partie pour les statistiques joueur.
|
||||
|
||||
Important :
|
||||
|
||||
- le compte connecte doit correspondre a l'un des deux joueurs identifies dans le payload
|
||||
- l'Elo n'est mis a jour que si `whiteSubject` et `blackSubject` sont tous les deux renseignes, distincts, et que le resultat est `white` ou `black`
|
||||
- si une meme partie est envoyee deux fois avec le meme `matchId`, l'enregistrement reste idempotent
|
||||
|
||||
Requete :
|
||||
|
||||
```json
|
||||
{
|
||||
"matchId": "c1f4e44f5f5f4fe4b8f2bf1f8a634f9e",
|
||||
"collaborationSessionId": "play-session-123",
|
||||
"whiteSubject": "2f7d0f1d-3ef6-4b5f-aab5-4cf6b61c0a28",
|
||||
"whiteName": "Christophe JEANNEROT",
|
||||
"blackSubject": "sub-ami-1",
|
||||
"blackName": "Alex Martin",
|
||||
"result": "white",
|
||||
"mode": "twice",
|
||||
"preset": "fast",
|
||||
"matchLabel": "Rencontre ChessCubing",
|
||||
"blockNumber": 2,
|
||||
"whiteMoves": 6,
|
||||
"blackMoves": 6,
|
||||
"cubeRounds": [
|
||||
{
|
||||
"blockNumber": 1,
|
||||
"number": 4,
|
||||
"white": 8420,
|
||||
"black": 11030
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Reponse `200 OK` :
|
||||
|
||||
```json
|
||||
{
|
||||
"recorded": true,
|
||||
"isDuplicate": false,
|
||||
"isRanked": true,
|
||||
"whiteEloAfter": 1216,
|
||||
"blackEloAfter": 1184
|
||||
}
|
||||
```
|
||||
|
||||
## Recherche de joueurs et relations sociales
|
||||
|
||||
Ces routes necessitent toutes une session authentifiee.
|
||||
|
||||
Reference in New Issue
Block a user