テーマ
Requirements: 候補者ランキング画面
概要
全候補者を得票数の降順でランキング表示する画面。上位3位は他と区別される表現で強調し、得票数の差を視覚的に把握できる手段を提供する。本画面は閲覧専用とし、投票操作の起点は提供しない(投票は候補者詳細画面から行う)。
機能仕様
Feature 1: ページ表示
Purpose: 候補者を得票数の降順でランキング表示し、ユーザーが戦況を俯瞰できるようにする。 Scope: ランキング画面のレンダリング全体。
Acceptance Criteria (EARS)
- WHEN ユーザーがランキング画面を表示した THEN システムは候補者を得票数の降順でソートして表示する
- THE SYSTEM SHALL 候補者一覧画面へ戻る導線をページ上部に表示する
Feature 2: 各順位の表示内容
Purpose: 各順位の行で順位・候補者・得票をワンセットで提示し、ユーザーが順位ごとの情報を即把握できるようにする。 Scope: ランキング画面の各順位行。
Acceptance Criteria (EARS)
- THE SYSTEM SHALL 各候補者について以下の情報を表示する:
- 順位(1始まりの数値)
- 候補者画像
- 候補者名
- 得票数(3桁区切り)
- 候補者詳細への遷移手段
Feature 3: 順位による区別
Purpose: 上位3位を他と区別し、トップ3候補をユーザーが直感的に識別できるようにする。 Scope: ランキング画面の順位ごとのビジュアル強度制御(具体表現は ui-design.md)。
Acceptance Criteria (EARS)
- THE SYSTEM SHALL 1位、2位、3位、4位以降の4区分でビジュアル的な強度を変える
- WHERE ビジュアル表現の詳細は
ui-design.mdで定義する
Feature 4: 候補者詳細への遷移
Purpose: ランキングから個別候補者のプロフィールへ単一操作で遷移できるようにする。 Scope: ランキング各行の候補者遷移トリガー。
Acceptance Criteria (EARS)
- WHEN ユーザーが候補者の詳細表示を要求した THEN システムは該当候補者の詳細ページへ遷移する
Feature 5: 同得票時のソート
Purpose: 同得票時のタイブレーク規則を一貫させ、ページ間で順位値が揺れないようにする。 Scope: ランキング画面のソートロジック。
Acceptance Criteria (EARS)
- IF 複数の候補者が同じ得票数を持つ THEN システムは ID 昇順で順位を確定する
依存仕様
data-model/requirements.md(候補者・得票数の集計元)
エッジケース
- 同点: 複数候補が同得票の場合、ID昇順で表示順を確定する
- 得票数0: 得票率0%、テキストで「0票」と表示
- 候補者数 < 3: 上位区分は存在分のみ適用