# Admin Portal

Admin Portal

# 把新增模型与导入帐号收进同一套入口

这个入口不再把“新增模型供应商”和“导入供应商帐号”拆散在不同地址。当前版本统一从 `/portal/admin/` 进入：一边看 pack/provider 目录、做 preview/import，一边继续保留 item 级 `reused / reactivated / replaced` 的 batch-import 结果面板。

- 默认同域走 `/portal-admin-api/`
- 静态页与 CRM API 解耦
- 保留旧地址兼容，不打断现有操作

统一入口
/portal/admin/
Logical Group
/logical-groups
Provider 目录
/providers
Route Health
/route-health
Accounts
/accounts
Batch Import
/batch-import

## 逻辑分组 / 路由

这页给插件前置路由使用，负责维护 `logical_group`、`public_model`、 `route` 与 `shadow_host_id / shadow_group_id` 的关系。当前首版已经能直接调 `/api/logical-groups` 系列接口，适合先把 canonical shadow route 收进统一管理面。

打开逻辑分组页

- 适用动作 创建 logical group、绑定 public model、维护 route 与 shadow group 映射。
- 默认 API Base `https://sub.tksea.top/portal-admin-api`

## 新增模型 / 供应商目录

这页负责浏览已安装 pack、选择 provider、调用 `preview-import` / `import`，同时提供 provider manifest 草稿生成与发布。当前版本已经支持先保存草稿，再经由 CRM 服务端写入 pack/provider 文件并自动提交到仓库。

打开供应商页 跳到 manifest 草稿

- 适用动作 查看 pack 与 provider、输入 keys 做 preview/import、生成 provider 草稿，并一键发布到仓库。
- 默认 API Base `https://sub.tksea.top/portal-admin-api`

## Route 健康视图

这页专门给运营看 route 当前运行状态，聚合 `routefail`、`routecool`、 最近一次选路与 failover 事件。首版只做只读健康视图，不在这里直接改 route。

打开健康页

- 适用动作 查看 `healthy / cooldown / failing / disabled`，确认 sticky、failover 与最近错误是否一致。
- 默认 API Base `https://sub.tksea.top/portal-admin-api`

## 帐号资产

这页把导入结果收成插件侧 `provider_accounts` 库存，直接展示帐号属于哪个 `logical_group / route / shadow_group / shadow_host`，并提供人工 `enable / disable / retire` 动作。

打开帐号资产页

- 适用动作 查看帐号库存、筛选 route 归属、执行人工启停与退役。
- 当前边界 启停动作当前只修改插件库存状态，不直接改宿主 account 记录。

## 导入供应商帐号

这页继续负责 live batch-import：创建 run、拉取 run summary、查看 item 级别的 `matched_account_state` 与 `account_resolution`。

打开导入页 旧地址兼容入口

- 适用动作 批量导入第三方 key，验证 `reused / created / reactivated / replaced`。
- 默认 API Base `https://sub.tksea.top/portal-admin-api`

可立即使用
逻辑分组 + Provider 导入

依赖现有 `/api/logical-groups`、`/api/packs`、`/api/providers/*`、`/api/batch-import/*` 即可完成。

当前边界
浏览器提交到 CRM，再由 CRM 写仓库

页面不会直接拼 Git 命令；所有写 pack/provider 与提交仓库的动作，都统一走 CRM 服务端的发布接口。

安全前提
仍需 Admin Token

CRM 的 API 权限仍由 Bearer token 控制，同域反代只解决浏览器可达性，不降低鉴权门槛。