开发者控制台
目标读者:使用本地 Alpha 控制台创建项目、邀请成员、查看玩家反馈的开发者。
开发者控制台运行在 http://localhost:4173,默认连接 http://localhost:4100 的 admin API。公开根路由是产品 Landing 页面;登录后的路由提供真实操作台。
账号须先验证邮箱才能访问组织与项目。JWT 绑定真实服务端会话;普通退出撤销当前会话,全部退出、改密、重置、禁用和注销撤销对应的全部会话。旧 Alpha 身份和数据不迁移。恢复、注销、SMTP 和数据保留边界见账号与安全。
最小示例
cd ../echo-nebula-infra
./scripts/e2e-all.sh
open http://localhost:4173
使用 Developer A 注册、验证邮箱并登录,创建组织、项目和 project key。在团队区域邀请 Developer B,复制邀请 token,然后以 Developer B 登录并接受该 token。Developer C 不应看到 A 的项目或反馈。
组织 owner 可以在组织面板修改成员角色或移除成员;admin 只能管理非 owner 成员。界面会保护最后一名 owner,等待服务端确认后才更新角色 badge,并通过行内两步确认执行移除。移除组织成员关系不会撤销直接项目访问。
组织详情设置
打开 /orgs/{organization_id} 可以查看组织标识并修改显示名称。拥有 owner 或 admin 角色的成员可以编辑名称;developer、qa 与 viewer 成员通过只读设置摘要看到相同的服务端确认值,不会出现编辑表单。system_admin 账号本身不获得 tenant 编辑权限,除非它同时显式拥有 owner 或 admin membership。组织 ID、当前角色和 slug 始终只读,修改名称不会改变 ID 或 slug。
Console 会按原始草稿检查 120 个 Unicode code point 上限,再去除首尾空白并拒绝规范化后的空名称;规范化草稿没有变化时,保存按钮不可用。保存只发送 { "name": ... },放弃修改会恢复最后一次服务端确认的组织。页面不会乐观更新摘要,只有 API 返回包含相同不可变标识字段的有效完整 Organization 响应后才接受变更。名称可以与其他组织相同。
项目详情设置
打开 /projects/{project_id} 可以查看项目标识与设置。组织 owner/admin 或直接项目 admin 可以修改项目名称、SDK 默认语言、默认环境和五项 SDK feature gate;developer、QA 和 viewer 看到同一份服务端确认值,但只能读取。项目 ID、当前角色和 slug 始终只读,修改名称不会改变 slug。
Console 会去除名称和环境草稿的首尾空白,校验精确的 zh-CN、en 或 ja,并在规范化草稿没有变更时禁用保存。请求只发送有变化的顶层字段;只要任一 feature toggle 改变,就发送包含 screenshot、recent_logs、breadcrumbs、offline_queue 和 contact 的完整对象。放弃修改会恢复最后一次服务端确认的项目;保存后也只在 API 返回有效完整 Project 响应时更新摘要。SDK 默认语言影响 SDK/玩家反馈面板内容,不会改变 Console UI 语言。
项目 feature gate 只定义项目允许提供什么能力,不等于玩家同意。启用截图、最近日志或联系方式不会预选或记录 consent。每次新打开反馈面板时,截图、最近日志和隐私确认都保持未勾选;只有玩家在本次提交中明确填写联系方式时才会包含 contact。每条 report 都保存自己的 consent 快照。breadcrumbs 和 offline_queue 是项目能力,不是新增 consent 字段。
列表分页
反馈列表以每页 50 条请求真实 API,并显示当前范围与 total。上一页和下一页按钮根据 offset 与 has_more 启用;改变项目、状态、类别或搜索词时会回到 offset=0。如果并发数据或筛选变化使当前 offset 超出结果范围,Console 会请求最后一个有效页,而不是展示永久空白页。
其余当前管理界面需要完整上下文的集合会自动沿 has_more 聚合所有页,包括组织成员/邀请、项目成员/邀请/keys,以及反馈详情的附件/评论。每一页仍必须是精确的 { items, offset, limit, total, has_more },且所有页的 total 必须一致;畸形或漂移响应不会作为有效数据合并。组织与项目导航来自不分页的 Developer Graph,不会把第一批 50 条误当成完整导航图。
常见错误
- 不要把
http://localhost:9001/login当成业务前端;那是 MinIO 控制台。 - 不要把 project key 当作 admin 凭证。控制台使用开发者 JWT bearer auth。
- 不要把本地 fallback 数据当成 E2E 证据;API-backed 验证使用
./scripts/e2e-all.sh。 - 不要在本地测试之外传播明文 project key。
- 不要把已启用的项目 feature 当作玩家本次提交的 consent。
- 不要期待修改组织名称会重命名 ID 或 slug,也不要期待 developer、QA 或 viewer 角色看到可编辑表单。
- 不要期待修改项目名称会重命名 slug。
- 不要把单个分页响应的
items当成完整管理集合,也不要依赖已删除的 cursor 字段。
下一步
运行 Admin API 示例,并和控制台流程对照。