Skip to content

管理平面 admin app:apps/admin 跨租户运营控制台(对接 control-plane) #3

@JIAQIA

Description

@JIAQIA

背景

引入多租户控制平面control-plane)后,平台前端确立为同仓双 app

App 平面 受众 / 身份 对接后端 拓扑
apps/console 使用平面 · 租户控制台 租户用户(JWT 带 tenant,org 作用域) governance/security/tools-bi/privacy/data-foundation per-tenant / 按 org 多租户
apps/admin 管理平面 · 运营控制台(本 Issue) 平台运营方(跨租户 superadmin,不绑 org) 主要 control-plane 跨租户单例,独立域名

为何拆两个 app:受众/拓扑不同,且 admin 含「开通/销毁租户、改配额、看全租户」高权限操作——其 bundle 绝不能与租户用户同包(安全爆炸半径)。两 app 各自构建产物、独立域名、互不可达。
为何同仓不拆仓:设计系统 / 白标 / SDK / i18n 经 packages/* 共享,避免复制、保一致、维护成本最低。

选型与目录见仓内 docs/00-前端初始化-spec.md(§0 双平面、§5 目录、§6 执行项 11–14)。

依赖

验收清单(DoD)

  • 1. 以 apps/console 为模板新增 apps/admin(独立入口 index.html / vite.config.ts / 构建产物),复用 packages/*(ui / brand / theme / i18n / sdk),不复制白标与设计系统
  • 2. 将 前端工程初始化:脚手架 + 白标引擎 + i18n/主题 + 画布 demo + Storybook/E2E #1 中 console 内的共享逻辑上提到 packages/*(ui / brand / theme / i18n / sdk),两 app 共用
  • 3. admin 鉴权:Keycloak OIDC 切到跨租户 superadmin 角色(不绑 org),路由守卫与 console 区分;非授权用户不可达
  • 4. admin 首屏(对接 control-plane,先 msw mock 后接真实 API):
    • 租户目录(列表 / 详情)
    • 注册审批(待审 / 通过 / 驳回)
    • 开通状态(provision 进度 / 结果)
    • 配额查看与调整
    • 生命周期(启用 / 停用 / 注销)
  • 5. 白标:admin 复用同一套部署级 config.js(SaaS=我们品牌 / 私有化=客户品牌),不按租户换肤
  • 6. Storybook + Playwright(基于 Storybook) 覆盖 admin 关键页面,msw 自含数据
  • 7. deploy/ 增加 admin 独立 Dockerfile + nginx + config.js 模板;CI 矩阵覆盖 console + admin 两 app
  • 8. 更新 README / spec 状态

边界(务必遵守)

  • 「租户自管理」不属于本 Issue:一个租户管自己的成员/配额视图,是 apps/console 内按角色门控区段;本 Issue 只做跨租户运营台
  • admin 只对接 control-plane(及必要的 Keycloak Admin 视图代理),不写各分系统业务逻辑
  • 🔴 信息红线:公开开源仓,禁止任何甲方/客户可识别信息与项目机密;示例租户一律脱敏(tenant-acme / tenant-demo)。详见 CLAUDE.md

如需调整结构,请在本 Issue 讨论后更新 docs/00-前端初始化-spec.md,保持 spec 为单一事实源。

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions