平台管理

本章分为两部分:平台管理(租户 owner/admin 的系统配置,路径 /platform)与平台管理员专区(平台运营方,路径 /admin)。

租户侧平台管理

路径:/platform

平台管理为租户管理角色(owner/admin)提供系统配置功能。

🔒 仅 owner 和 admin 可访问平台管理菜单。member 不显示该菜单分组;直接输入 URL 由路由守卫拦截显示"无权访问"页;后端每个端点另有 require_role 硬门 403 终裁——三防线独立生效,绕过前端也无法越权。

LLM 模型管理

路径:/platform/llm

管理租户可用的 LLM 模型配置。

操作步骤:

  1. 查看已配置的 LLM 提供商列表
  2. 点击 添加模型 新增配置
  3. 填写模型信息:提供商、模型名称、API Key、端点 URL
  4. 点击 测试连接 验证配置有效性
  5. 设置默认模型和参数(温度、最大 Token 等)

健康状态与自动容灾:

  • 提供商列表新增 健康状态 列:正常(绿色)/ 异常(红色)/ 未知(灰色)
  • 鼠标悬停 异常 标签,可查看最近一次探测的失败原因与探测时间
  • 系统每 5 分钟在后台自动探测各提供商可用性(探测不消耗 Token;连续 2 次失败才标记 异常;Azure 类型不参与探测,显示 未知)
  • LLM 调用失败或平台服务商未向当前套餐开放时,系统自动按候选顺序切换下一个可用提供商(无权限切换为静默切换),正常情况下无需人工干预

连接器配置

路径:/platform/connectors

管理外部系统连接器(企业微信、钉钉、飞书、微信、Telegram、邮件、Webhook、通用 REST)。

操作步骤:

  1. 查看已配置的连接器列表(名称/模式/状态/上次测试)
  2. 点击 添加连接器 新增
  3. 选择连接器类型与接收模式
  4. 填写连接参数(凭据加密存储;编辑时凭据留空 = 保持原值)
  5. 点击 测试连接 验证连通性(微信连接器未绑定时会提示先扫码绑定)
  6. 启用/禁用连接器;展开行查看运行详情与绑定状态

微信连接器(ClawBot):

  • 添加类型为 微信 的连接器并启用后,展开行出现绑定卡片
  • 点击生成按钮显示绑定二维码(前端本地渲染),用需要接入的个人微信扫码完成绑定;同一时间仅支持绑定一个微信账号,重新绑定会使旧账号失效
  • 绑定成功后,在该微信中发消息即可与 AI 双向对话;消息以 clawbot 渠道记录在会话管理
  • 解绑后凭据清空,可重新扫码绑定

Telegram 连接器:

  • 在 Telegram 中通过 @BotFather 创建 Bot 并获取 Bot Token
  • 添加类型为 Telegram 的连接器,选择接收模式:
    • 长轮询(默认):服务器主动拉取消息,无需公网回调,开箱即用
    • Webhook:Telegram 主动推送,需后端具备 HTTPS 域名(Telegram 仅接受 443/80/88/8443 端口);保存后在展开行填入回调根地址并点击 注册;更换 Token 后需重新注册
  • 可选配置:API 地址(使用自建 Telegram Bot API 服务或反向代理时填写)、代理地址(网络受限环境)
  • 首个向 Bot 发消息的会话自动绑定为接收目标;AI 回复会引用原消息
  • 凭据编辑时留空保存 = 保持原 Token 不变

💡 个人消息通道(member 亦可用)参见 AI 工作台 · 我的消息通道。

租户管理

路径:/platform/tenants

查看和编辑租户信息:租户名称、租户 Slug、成员数量、创建时间、租户设置(货币偏好等)。

用户权限管理

路径:/platform/users(菜单:用户与角色)

管理租户内的用户与角色(三角色 owner/admin/member)。

操作与所需角色:

操作 owner admin
查看成员列表(姓名/邮箱/角色/状态) ✅ 邮箱明文 ✅ 邮箱明文
邀请新成员(角色仅 admin/member) ✅ ✅
重发邀请(未激活成员) ✅ ✅
修改用户角色 ✅(仅可改为 admin/member) ❌ 只读角色列
移除成员 ✅ ❌

操作步骤:

  1. 查看用户列表(姓名、邮箱、角色、状态)
  2. 邀请新成员:填写邮箱与角色(admin/member),系统发送含初始密码的邀请邮件(邮件发送失败时,初始密码会直接显示在页面上,请注意留存)
  3. 对未激活成员 重发邀请
  4. 修改用户角色(owner 专属;角色下拉可选 admin/member;owner 自身不可被改角色)
  5. 移除成员(owner 专属)

🔒 角色变更与移除收敛为 owner 专属(所有权级操作):防止 admin 自我提权或提权他人——admin 不能造 admin。后端 require_role("owner") 硬门,admin 调用直接 403。

🔒 member 可在协作场景看到成员列表,但其视角下邮箱脱敏显示(仅首字符 + *** + @域名);完整邮箱仅 owner/admin 可见。

邀请码管理(推荐码)

路径:/platform/invitations

管理本租户的推荐码。推荐码 不是成员邀请:被推荐人用码注册后,会以 owner 身份创建一个全新的入门版(starter)租户,不会加入本租户;系统自动记录推荐归属关系。

操作步骤:

  1. 查看推荐码列表(代码、已用/剩余次数、有效期、备注)
  2. 生成新的推荐码(每租户有生成数量配额)
  3. 复制推荐码分享给新用户
  4. 撤销(停用)不再使用的推荐码

💡 如需让成员 加入本租户,请使用「用户与角色」的邮件邀请功能,不要使用推荐码。

系统设置

路径:/platform/settings

设置分类:

  • 货币设置(✅ 保存生效):选择显示货币(CNY/USD),汇率默认 7.2
  • 安全设置:密码策略、会话超时(⚠️ 界面占位,保存不持久化)
  • 邮件设置:由平台管理员统一配置(见下方邮件设置与邮件模板),租户无需自配 SMTP
  • AI 设置:默认模型、Token 限制(⚠️ 界面占位,保存不持久化)

💡 货币设置存储在 tenants.settings JSONB 中,无需 schema 迁移。内部存储始终为 USD,仅显示层转换。

订阅管理

路径:/platform/subscription(菜单:订阅管理)

查看与升级租户订阅套餐:

  • 套餐卡片:展示各可购套餐,支持月付/年付切换(未定价的周期不提供在线购买)
  • 当前订阅:显示当前套餐、订阅状态与到期时间(永久套餐无到期时间)
  • 在线升级(仅 owner):选择套餐与周期 → 下单 → 微信扫码 / 支付宝跳转支付 → 支付成功后套餐即时顺延生效
  • 订单记录:仅展示本租户订单(待支付/已支付/已关闭);owner/admin 均可查看

🔒 下单与升级操作为 owner 专属(订阅是租户资产的所有权级操作);admin 仅可查看套餐与订单列表。

💡 支付成功后订阅状态即时更新;订阅到期后套餐权益回落 starter,可随时再次订阅恢复。

审计日志

路径:/platform/audit

查看租户所有操作的审计记录:操作人、操作类型、操作对象、操作时间、操作详情。

平台管理员专区

路径:/admin

平台管理员登录后自动进入管理员专区,菜单与租户用户完全不同。

管理员仪表盘

路径:/admin/dashboard

展示平台级统计:租户总数、用户总数、AI 交互总量、系统资源使用。

租户管理

路径:/admin/tenants

管理平台所有租户:

  1. 查看租户列表
  2. 点击租户进入详情
  3. 查看/编辑租户信息
  4. 分配/变更租户套餐(下拉仅列启用中的套餐)
  5. 启用/禁用租户

套餐管理(四层权益模型)

路径:/admin/plans(菜单:套餐管理)

统一管理租户套餐注册表——套餐决定该租户的四层权益(L1 中心授权 / L2 高级功能 / L3 额度 / L4 企业策略):

  • 套餐列表:代码(starter 带「默认」标签)/名称/权益矩阵摘要(中心 x/8 · 高级 y/31 · 渠道 z/7)/静态额度/邀请码配额/租户计数/启用状态
  • 新建/编辑(注册表驱动,码表权威 GET /admin/plans/registry):
    • L1 中心与独立能力授权(8 开关):评估/决策/规划/交付/知识/运营六中心 + AI 副驾驶(copilot.chat)+ 工单支持(support.tickets)
    • 渠道授权(7 开关):邮件/Telegram/企业微信/微信(ClawBot)/钉钉/飞书/通用 REST——关闭后不可创建对应类型连接器
    • L2 高级功能(31 开关,按中心分组):如评估中心下的 AI 评分与裁判、AI 访谈、AI 报告生成等;所属中心关闭时该组同步失效
    • L3 额度:静态 7 项(用户数/转型项目数/知识库数/AI 应用数/渠道连接数/知识库存储 MB/邀请码配额)+ 月度 4 项(AI 调用次数/AI Token 用量/AI 费用 USD/评测次数)——留空=不限;月度 AI 费用(monthly_ai_cost_usd)存储与执法恒 USD,编辑弹窗与展开行按平台记账汇率附 ≈¥ 参考值(仅参考,不改变存储值)
    • L4 企业策略(5 项,预留):SSO/审计导出/数据保留/私有化部署/SLA——仅建模展示,当前版本不强制执行
    • 模型策略:允许档位(free/standard/premium 多选)+ 模型白名单/黑名单(例外放行/拒绝,标签输入;键入时提示已添加服务商的模型候选并标注来源服务商,防错名——黑名单错名=该模型静默放行且无提示,亦可自由输入);三者均空 = 不限
  • 删除:仅无租户使用、且无待支付订单的套餐可删除;starter 为新租户默认套餐,不可删除。有租户在用或存在待支付(pending)订单时删除被拒,需先改派租户、等待订单支付或过期(订单 15 分钟超时)。删除套餐时同步清理平台 LLM 服务商「套餐访问」映射中的该套餐键——LLM 配置页对应开关随之消失,不产生指向已删套餐的悬空开关
  • 停用:停用后不可分配给新租户,存量租户不受影响
  • 展开行:月度额度 + L4 策略 + 模型策略 + LLM 访问汇总(按平台服务商显示该套餐是否允许访问:可用=已开放 / 不可用=已关闭,只读;编辑请前往「LLM 提供商管理」)

内置四套餐种子矩阵(free/starter(默认)/pro/enterprise):

  • L1:六中心 + copilot.chat + support.tickets 四套餐全开
  • L2:pro/enterprise 开 21 项高级功能(AI 评分/访谈/报告生成、ROI 分析、AI 规划产物、RAG、AI 知识治理等);enterprise 独有 10 项(评估/规划/知识治理、组合分析、审批会签、PMO、知识图谱、经验复用、实验灰度、运营治理)
  • 渠道:邮件=starter+;Telegram/企业微信/REST=pro+;微信(ClawBot)/钉钉/飞书=enterprise 专属
  • L3 额度:
额度 free starter pro enterprise
用户数上限 3 10 50 不限
转型项目数上限 1 3 20 不限
知识库数上限 1 2 10 不限
AI 应用数上限 1 2 10 不限
渠道连接数上限 0 1 5 不限
知识库存储(MB) 512 5,120 51,200 不限
邀请码配额 0 10 50 200
月度 AI 调用次数 100 500 5,000 不限
月度 Token 用量 500,000 2,000,000 20,000,000 不限
月度 AI 费用(USD) 1 10 100 不限
月度评测次数 5 20 200 不限

门控语义(关闭某权益后,对该套餐下的租户生效):

  • 前端:对应菜单入口自动隐藏;直接访问路由显示「功能未开通」提示页
  • 后端:L1 模块 API 返回 403(plan_feature_disabled),前端统一 toast 提示;L2 端点级强制(165 个高级功能端点挂 require_plan_feature)
  • Agent 回落:意图路由命中的 Agent 若其所属中心未开通,自动回落 chat_agent,SSE metadata 携带 entitlement_fallback
  • 渠道会话:渠道入站消息要求租户已开通 copilot.chat,未开通事件丢弃并记录日志(软执行);存量连接器不回溯删除
  • AI 运营复评/经验回放等事件型入口为软执行(记录 warning 后跳过,不中断主流程)
  • 额度强制:静态额度(7 项)超出时新增被拦截(403);月度额度超限统一返回 429(plan_limit_exceeded),前端统一 toast;月度额度按自然月重置——其中 monthly_ai_calls/tokens/cost_usd(3 项)在 LLM 网关入口预检(含缓存命中),monthly_eval_runs 在评测创建入口按当月 run 计数拦截;额度值留空 = 不限(全码统一,含 invite_quota)
  • 软执行:存量超额数据保留,仅拦截新增

模型策略:套餐可配置可用模型范围,仅约束平台服务商的模型(租户自建服务商不受限):

  • 判定优先级:黑名单(denied_models)> 白名单(allowed_models)> 档位(allowed_tiers);三者均空 = 不限(存量套餐零行为变化)
  • 档位在「LLM 提供商管理-模型价格目录」维护(free/standard/premium);未收录进价格目录的模型视为 standard 档
  • 生效面:LLM 网关调用入口(含缓存命中补检——受限模型命中缓存按未命中处理,最终拒绝)、租户可见模型/服务商列表按策略过滤
  • 指定受限模型的调用返回 403(model_not_allowed),主对话流(SSE)以错误帧提示;未指定模型的调用自动改选首个允许的模型
  • 套餐月度 AI 费用额度(monthly_ai_cost_usd)不受影响,仍按平台实际成本记账(详见 LLM 提供商管理计价链);租户侧「组织设置」中该额度按租户货币设置展示(与用量页同口径),额度本身仍以 USD 执法

租户级覆盖(overrides):超管可在租户详情为单个租户配置 entitlement_overrides(三 map 同构),优先级高于套餐值(部署后生效,用于临时扩容/收窄而不新建套餐)。

邀请配额迁移:原「品牌设置」页的邀请码配额已迁移至本页按套餐配置(品牌设置页保留跳转提示);free 档邀请配额从此可配置(历史版本不可配)。

品牌设置

路径:/admin/brand

配置平台品牌信息:平台名称、Logo、登录页文案、主题颜色。

邀请码管理

路径:/admin/invitations

平台级邀请码管理,可创建两类邀请码供新租户注册:

  • PLATFORM 码:可指定目标套餐(target_plan),注册的新租户直接开通对应套餐(未指定或套餐不可用时回落入门版)
  • TENANT 码:推荐码语义,注册后创建新的入门版租户(平台创建的码无推荐归属)

⚠️ 页面为 TENANT 码提供的附加选项(如目标租户、成员类型)在当前注册流程中不生效——注册一律创建全新租户,不会加入指定租户。

用户管理

路径:/admin/users

管理平台所有用户:查看用户列表(跨租户)、查看用户详情、调整用户角色、禁用/启用用户。

LLM 提供商管理

路径:/admin/llm

管理平台级 LLM 提供商配置:

  • 添加/编辑/删除 LLM 提供商
  • 配置 API Key 和端点
  • 设置全局默认模型
  • 监控 API 调用量和成本
  • 配置 套餐访问开关:逐套餐控制是否允许该套餐租户使用此平台服务商(新建服务商默认仅开放 enterprise);未开放的套餐调用时自动切换其他有权限的服务商,租户自建服务商不受影响
  • 服务商级不再单独设置月度 Token 限额——套餐月度 AI 用量(调用次数/Token/费用)统一由「套餐管理」的月度额度控制
  • 模型价格目录:维护模型目录价(输入/输出/缓存命中,按行计价币种 USD 或 CNY,每百万 tokens)与档位(free/standard/premium):
    • 计价链(成本核算口径):价格目录行(输入+输出价均设置时激活)→ litellm 内置价目 → 网关兜底价 → 0;目录仅存例外(litellm 不认识的自定义模型/价目修正/缓存差价),未收录模型直接走 litellm
    • 计价币种(每行 USD/CNY):国内服务商人民币牌价可直接录入 CNY 行(表格价格列显示 ¥ 前缀、价格弹窗单位标签随币种切换);记账层恒 USD——CNY 行计价时按平台记账汇率换算成 USD 后进入记账链路(llm_calls.cost、月度账本、额度执法),USD 行原样入账
    • 平台记账汇率(1 USD = X CNY,默认 7.2):价格目录卡片右上角「记账汇率」按钮查看,点击进入编辑(限 0.5–25,保存需超管权限并记审计日志);仅影响后续计价时点,不回写历史调用成本、月度账本或已存套餐额度
    • 模型关联:新增价格时「模型」输入框自动提示已添加服务商的模型(选项标注来源服务商名,支持输入过滤),选中即可避免手输错模型名(错名永不命中目录、静默回退 litellm 价目);也可自由输入未配置的模型名前瞻定价
    • 缓存感知:OpenAI 系 prompt_tokens_details.cached_tokens / Anthropic 系 cache_read_input_tokens 自动提取并记录到用量(llm_calls.cached_tokens);计价时命中部分按缓存价计(未设置按输入价)
    • 档位供「套餐管理-模型策略」按档位圈定可用模型;未收录模型视为 standard 档;删除目录行后该模型成本回退 litellm 价目
  • 查看各提供商 健康状态(正常/异常/未知;悬停 异常 标签显示失败原因与最近探测时间)

健康探测与容灾机制:

  • 后台每 5 分钟自动健康探测(零 Token 成本;连续 2 次失败才标记 异常;Azure 类型不探测,保持 未知)
  • 异常 提供商不会停用,仍作为末位候选参与调用(软降级);探测恢复后自动回归优先
  • 调用失败时网关按候选序列自动切换:同模型其他提供商 → 默认提供商 → 回退模型
  • 提供商级失败进入 60 秒冷却(冷却期内跳过,不占用尝试名额);套餐无访问权限不进入冷却(该状态为套餐级,避免影响其他租户)

工单管理

路径:/admin/tickets(菜单:工单管理,图标为客服耳机)

跨租户处理租户提交的工单反馈:

  • 列表:全部租户工单(编号/租户/提交人/类型/标题/状态/提交时间),支持按状态、类型筛选
  • 处理:点击「处理」打开详情抽屉——完整描述、截图放大预览、租户与提交人信息
  • 流转:设置处理状态(已提交 → 处理中 → 已解决 / 已关闭)+ 填写处理回复(租户可见)
  • 邮件通知:租户每提交一张新工单,所有活跃平台管理员自动收到邮件提醒(需平台管理员在「邮件设置」配置 SMTP;未配置时仅记录日志,不影响租户提交;文案可在「邮件模板」中定制 ticket_notify)

工单处理建议:收到邮件提醒后尽快将状态置为「处理中」;处理完成后填入结论回复并置「已解决」,租户可在其"我的工单"中实时看到处理结果。

支付管理

路径:/admin/payments(菜单:支付管理)

配置支付渠道并管理跨租户订阅订单:

  • 支付设置:微信支付 V3(appid/商户号/APIv3 密钥/证书序列号/私钥/回调地址)与支付宝当面付(应用 ID/应用私钥/支付宝公钥/回调地址);密钥加密存储、回显脱敏;启用在线支付总开关(关闭后租户无法在线下单,套餐变更仅由超管手动执行)
  • 订单管理:跨租户订单列表(租户/套餐/周期/金额/状态/创建时间),按状态筛选
  • 人工核销:线下收款等未走渠道回调的订单,点击「人工核销」填写备注后标记已支付——操作者与备注随订单持久化(审计留痕),租户套餐即时生效

💡 渠道回调核销自动进行;人工核销用于银行转账/线下收款等场景,备注作为对账依据长期保留。

邮件设置

路径:/admin/email(菜单:邮件设置)

平台级 SMTP 运行时配置(无需修改服务器 .env):

  • SMTP 配置:服务器地址 / 端口(默认 465)/ 账号 / 密码(加密存储,回显脱敏)/ 发件人 / 是否 TLS
  • 前端地址:邀请邮件中登录链接的前缀(留空使用服务器默认 FRONTEND_URL)
  • 发送测试邮件:配置后可直接向管理员邮箱发送测试邮件验证连通性
  • 优先级:此处(平台设置)配置后整组生效;未配置时回退服务器 .env SMTP_*;发信失败不影响业务(best-effort)

邮件模板

路径:/admin/email-templates(菜单:邮件模板)

编辑系统邮件文案(自定义内容优先,恢复默认即回退内置模板):

模板 用途 必填变量
member_invite 成员邀请邮件(含登录地址与初始密码) email、password
ticket_notify 新工单提醒邮件(发给全部活跃平台管理员) 无(变量均可选)
  • 语法:{{变量}} 占位符 + {{#if 变量}}...{{/if}} 条件块(变量为空时整块隐藏);点击变量标签可插入正文光标处
  • 校验:必填变量缺失无法保存(防止邀请邮件丢失密码等静默失效);变量值由系统预先转义
  • 恢复默认:删除自定义内容即回退内置模板