Application - bianchiidentity/isucon12 GitHub Wiki

アプリの仕組み

← 練習ガイド · ベンチと改善時の制約 →

「団体に参加者が所属し、団体内で大会を開く」と考えると全体を把握しやすい。 参加者として登録されていても、必ずスコアを持つとは限りません。

誰が何をするか

役割 操作できる範囲 主な操作
SaaS管理者 admin テナントを横断 テナント追加、支払い情報の確認
テナント管理者 organizer 自分のテナント 参加者追加・失格、大会開催・終了、スコアCSV入稿、支払い情報の確認
参加者 player 自分のテナント スコア・ランキング・大会一覧の閲覧

「テナント」は利用団体、「大会」はその団体内で開催する競技です。支払い情報はテナントごとに計算されます。具体的な料金計算やランキングの詳細は、この2本のマニュアルだけでは定義されていません。

大会の流れと、変わること

flowchart LR
    A[大会を作成] --> B[参加者とスコアのCSVを入稿]
    B --> C[参加者がスコア・ランキングを見る]
    C --> D[大会を終了]
    D --> E[以降のCSV入稿は不可]
Loading
状態の変更 守るべき挙動
大会を終了する その大会への結果CSV入稿ができなくなる
参加者を失格にする その参加者からの参加者向けAPIへのアクセスがすべて403になる

大会終了と参加者失格は別の操作です。失格はテナント内の参加者の状態です。反映までに許される猶予は、ベンチの条件を参照してください。

認証はブラウザとベンチで入口が違う

flowchart LR
    U[ブラウザ] --> B[blackauthがJWTを発行]
    B --> C[Cookie内のJWTでISUPORTSにアクセス]
    T[ベンチマーカー] --> S[自分でJWTを発行]
    S --> C
Loading

ISUPORTS自身にはJWTの発行機能がありません。ベンチが利用しなくても、ブラウザの動作確認に必要なため blackauthを停止しない ことが当時の条件です。

ブラウザで確認する

接続先とログイン用アカウントは Homeの接続URL一覧 を参照してください。

役割 URLの例 画面での操作
SaaS管理者 https://admin.t.isucon.dev アカウント名を変えず「認証する」
テナント管理者 https://isucon.t.isucon.dev 「テナント管理者モードに切り替える」
参加者 https://isucon.t.isucon.dev アカウントID 0001 で「認証する」

初期データのもう1つの例は kayac / 0002。通常のパスワード入力は不要です。これらは原文の初期データに対する例です。

APIからログインするときのエンドポイント

すべて POST。参加者とテナント管理者は所属テナントのホスト名を使います。

役割 URL
参加者 https://<tenant name>.t.isucon.dev/auth/login/player?id=<player id>
テナント管理者 https://<tenant name>.t.isucon.dev/auth/login/organizer
SaaS管理者 https://admin.t.isucon.dev/auth/login/admin

出典:アプリケーションマニュアル、予選当日マニュアルの動作確認・認証の説明。

⚠️ **GitHub.com Fallback** ⚠️