開発者コンソール
対象読者:ローカル Alpha のコンソールでプロジェクト作成、メンバー招待、プレイヤーフィードバック確認を行う開発者。
開発者コンソールは http://localhost:4173 で動作し、既定では http://localhost:4100 の admin API に接続します。公開ルートは product Landing page、ログイン後の route は運用 console です。
組織とプロジェクトへのアクセスにはメール確認が必要です。JWTは実際のサーバーセッションに結び付きます。通常のログアウトは現在のセッションを、全ログアウト・パスワード変更/再設定・無効化・退会は対象の全セッションを失効させます。旧Alphaのアカウントとデータは移行しません。詳細はアカウントとセキュリティを参照してください。
最小例
cd ../echo-nebula-infra
./scripts/e2e-all.sh
open http://localhost:4173
Developer A で登録・メール確認をしてログインし、組織、プロジェクト、project key を作成します。チーム領域で Developer B を招待し、招待 token をコピーして、Developer B としてログインして受諾します。Developer C は A のプロジェクトやフィードバックを見られない必要があります。
organization owner は organization panel で member role を変更または member を削除できます。admin が管理できるのは owner 以外の member だけです。UI は最後の owner を保護し、server confirmation 後にだけ role badge を更新し、inline の 2 段階 confirmation で削除します。organization membership を削除しても direct project access は取り消されません。
組織詳細設定
/orgs/{organization_id} を開くと organization identity を確認し、表示名を変更できます。owner または admin role の member は name を編集できます。developer、qa、viewer member には編集 form を出さず、同じ server-confirmed value を read-only settings summary で表示します。system_admin account 自体に tenant 編集権限はなく、明示的な owner または admin membership が別途必要です。organization ID、現在の role、slug は常に read-only で、name を変更しても ID と slug は変わりません。
Console は raw draft を 120 Unicode code point の上限と照合してから前後の whitespace を除去し、正規化後に空の name を拒否します。正規化済み draft に変更がなければ Save は無効です。Save は { "name": ... } だけを送り、Discard は最後の server-confirmed organization に戻します。page は summary を optimistic update せず、同じ immutable identity field を含む有効で完全な Organization response を API が返した場合だけ変更を受け入れます。別の organization と同じ name も使用できます。
プロジェクト詳細設定
/projects/{project_id} を開くと project identity と設定を確認できます。organization owner/admin または direct project admin は、project name、SDK default locale、default environment、5 つの SDK feature gate を変更できます。developer、QA、viewer には同じ server-confirmed value が read-only で表示されます。Project ID、現在の role、slug は常に read-only で、name を変更しても slug は変わりません。
Console は name と environment draft の前後空白を除去し、正確な zh-CN、en、ja locale を検証します。正規化後の draft に変更がなければ Save は無効です。request は変更された top-level field だけを送ります。feature toggle が 1 つでも変わった場合は、screenshot、recent_logs、breadcrumbs、offline_queue、contact の完全な object を送ります。Discard は最後の server-confirmed project に戻します。Save 後の summary は API が有効で完全な Project response を返した場合だけ更新されます。SDK default locale は SDK/player panel content に作用し、Console UI language は変更しません。
Project feature gate は project で提供可能な機能を定義するだけで、player consent ではありません。screenshot、recent logs、contact を有効にしても、consent は事前選択も記録もされません。新しい feedback panel を開くたびに screenshot、recent logs、privacy confirmation は未選択で始まり、contact は player がその送信で明示的に入力した場合だけ含まれます。各 report は独自の consent snapshot を保存します。breadcrumbs と offline_queue は project capability であり、追加の consent field ではありません。
リストのページング
feedback list は実 API を 50 件ずつ request し、total に対する現在の範囲を表示します。前へ/次へは offset と has_more に基づいて有効になり、project、status、category、search を変更すると offset=0 に戻ります。同時更新または filter 変更で現在の offset が結果範囲を超えた場合、Console は空 page を固定表示せず、最後の有効 page を request します。
現在の management UI が完全な context を必要とする他の collection は、has_more に従って全 page を自動集約します。対象は organization member/invitation、project member/invitation/key、feedback detail の attachment/comment です。各 page は引き続き正確な { items, offset, limit, total, has_more } envelope である必要があり、page 間で total が一致しなければなりません。malformed または drift した response は有効 data として merge しません。organization/project navigation は pagination されない Developer Graph から取得するため、最初の 50 件を完全な navigation graph と誤認しません。
よくある間違い
http://localhost:9001/loginを製品 UI として開かないでください。これは MinIO コンソールです。- project key を admin 認証情報として使わないでください。コンソールは開発者 JWT bearer auth を使います。
- ローカル fallback データを E2E 証拠として扱わないでください。API-backed 検証には
./scripts/e2e-all.shを使います。 - 平文の project key をローカルテスト以外で共有しないでください。
- 有効な project feature を player の今回の送信 consent として扱わないでください。
- organization name の変更で ID や slug も変わると想定せず、developer、QA、viewer role に編集可能な form が表示されると想定しないでください。
- project name の変更で slug も変わると想定しないでください。
- 1 page の
itemsを完全な management collection として扱ったり、削除済み cursor field に依存したりしないでください。
次のステップ
Admin API の例を実行し、コンソールの流れと照合してください。