Skip to content

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: 上位区分は存在分のみ適用