Build a feature-flagged multi-session competition room
- 主要言語
- JavaScript
- スター
- 30
- フォーク
- 9
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
Part of #199.
## Goal
Prove the new Room/RaceSession model through a small user-visible competition-room flow without changing the simple normal-room experience.
## Vertical slice
- Create or seed one competition room associated with a competition.
- Give it at least two event RaceSessions.
- Allow an eligible user to enter the room, choose an event session, and race.
- Keep attempts, waiting state, and results independent between sessions.
- Allow switching sessions without leaving the room.
- Preserve completed results when a session ends or another session becomes active.
- Hide the feature behind a disabled-by-default configuration flag.
## UX requirements
- The ordinary home-page **Create room** action and copy-link flow remain unchanged.
- Normal rooms do not show competition/session-selection UI.
- Competition participants enter one room, then choose an event.
- The active session and event must always be obvious.
- Mobile layouts must not become a dashboard or require navigating a complex competition schedule.
- Unsupported or unavailable sessions show a clear, recoverable state.
## Acceptance criteria
- [ ] One competition room can contain and display at least two event sessions.
- [ ] Two users can race in one session while another session retains separate state.
- [ ] Switching sessions cannot submit a solve to the wrong attempt.
- [ ] Refresh and reconnect restore the selected room/session safely.
- [ ] Permissions prevent unauthorized session creation or control.
- [ ] Ended-session results remain available to authorized users.
- [ ] Normal-room Cypress coverage proves no added step or visible complexity.
- [ ] A competition-room Cypress flow covers join → select event → solve → switch event → solve.
- [ ] The feature can be disabled without affecting normal rooms.
## Deferred
- Automatic creation three days before every WCA competition.
- Complete competition discovery and registration syncing.
- Friends, invitations, notifications, rankings, and Discord integration.
コントリビューションガイド
調査の方向性
まず issue #199 と既存の Room/RaceSession モデルを読み、競技用ルームのフローを評価する前に、通常ルームの Cypress カバレッジを実行します。完了条件は、デフォルトで無効な機能が参加 → イベントを選択 → 解答 → イベントを切り替え → 解答をサポートし、セッションごとの結果を分離して保持し、更新または再接続後に状態を復元し、通常ルームを変更しないことです。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- cypress, javascript, mongodb, nodejs, react
- 領域
- full-stack, testing
- issue の種類
- 機能追加
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 活発さ
- 静か
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100