Refactor series handling in backend to include player context in Toss, Ban, Pick, and Record actions. Update service methods to accept player parameters, enhancing authorization checks and ensuring proper team actions. Modify integration tests to reflect new method signatures and improve tournament hydration logic in the store. Enhance frontend components to support new series features and improve user experience with live match navigation.
Some checks failed
CI / backend (push) Has been cancelled
CI / frontend (push) Has been cancelled
CI / compose (push) Has been cancelled

This commit is contained in:
2026-07-19 03:22:32 +03:00
parent 4b8218ec14
commit 5d3e66d2f1
16 changed files with 449 additions and 62 deletions

View File

@@ -236,6 +236,16 @@ paths:
responses:
"200": { description: Event cancelled, content: { application/json: { schema: { $ref: "#/components/schemas/Event" } } } }
"409": { $ref: "#/components/responses/Conflict" }
/api/events/{eventId}/tournament:
get:
tags: [Tournaments]
operationId: getEventTournament
description: Returns the tournament bracket hydrated with the latest state of every persisted series.
parameters:
- $ref: "#/components/parameters/EventId"
responses:
"200": { description: Live tournament bracket, content: { application/json: { schema: { $ref: "#/components/schemas/Tournament" } } } }
"404": { $ref: "#/components/responses/NotFound" }
/api/events/{eventId}/rsvps:
get:
tags: [Events]
@@ -982,6 +992,7 @@ components:
registrationDeadline:
type: string
format: date-time
description: Synchronized by the server to startsAt.
Event:
allOf:
- $ref: "#/components/schemas/EventInput"
@@ -1160,7 +1171,7 @@ components:
type: integer
Series:
type: object
required: [id, eventId, tournamentId, teamAId, teamBId, winnerTeamId, bestOf, rulesetId, phase, playedMaps, maps, audit, results, version]
required: [id, eventId, tournamentId, teamAId, teamBId, winnerTeamId, bestOf, rulesetId, phase, playedMaps, seriesBans, maps, audit, results, version]
properties:
id:
type: string
@@ -1187,7 +1198,30 @@ components:
playedMaps: { type: array, items: { type: string } }
nextMapPickerId: { type: string }
availableMaps: { type: array, items: { type: string } }
maps: { type: array, items: { type: object } }
seriesBans:
type: object
additionalProperties:
type: array
items: { type: string }
maps:
type: array
items:
type: object
required: [number, name, heroBans]
properties:
number: { type: integer }
name: { type: string }
heroBans:
type: array
items:
type: object
required: [teamId, value, actorAccountId, at]
properties:
teamId: { type: string }
value: { type: string }
actorAccountId: { type: string }
at: { type: string, format: date-time }
result: { type: [object, "null"] }
audit: { type: array, items: { type: object } }
results:
type: array