テーマ
Requirements: 候補者ランキング画面
概要
全候補者を得票数の降順でランキング表示する画面。上位3位は他と区別される表現で強調し、得票数の差を視覚的に把握できる手段を提供する。本画面は閲覧専用とし、投票操作の起点は提供しない(投票は候補者詳細画面から行う)。
ファイル配置・レンダリング方式・ルート定義・技術設計は
design.md、ビジュアル仕様はui-design.mdを参照。
機能仕様
Feature 1: ページ表示
Purpose: 候補者を votes 降順でランキング表示し、ユーザーが戦況を俯瞰できるようにする。 Scope: ランキング画面のレンダリング全体。
Acceptance Criteria (EARS)
- WHEN ユーザーがランキング画面を表示した THEN システムは候補者を
votes降順でソートした配列をレンダリングする - THE SYSTEM SHALL 候補者一覧画面へ戻る導線をページ上部に表示する
Feature 2: 各順位の表示内容
Purpose: 各順位の行で順位・候補者・得票をワンセットで提示し、ユーザーが順位ごとの情報を即把握できるようにする。 Scope: ランキング画面の各順位行。
Acceptance Criteria (EARS)
- THE SYSTEM SHALL 各候補者について以下の情報を表示する:
- 順位(1始まりの数値)
- 候補者画像
- 候補者名
- 得票数(3桁区切り)
- 1位を基準とした得票率
- 候補者詳細への遷移手段
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 昇順で順位を確定する
非機能要件
- アクセシビリティ(個別): 順位は数値テキストでも提供し、視覚表現のみに依存しない(横断アクセシビリティ要件のランキング固有具体化)
全画面共通の非機能要件(アクセシビリティ/SEO/レスポンシブ/全画面共通UI要件=スクロール補助・フッター 等)は
steering/product.mdを、パフォーマンス/キャッシュ/セキュリティはsteering/tech.mdを参照。
依存仕様
data-model/requirements.md(候補者・得票数の集計元)
エッジケース
- 同点: 複数候補が同得票の場合、ID昇順で表示順を確定する
- 得票数0: 得票率0%、テキストで「0票」と表示
- 候補者数 < 3: 上位区分は存在分のみ適用