Provider Admin

# 在一个页面里看目录、预检导入、执行导入

这页把“新增模型供应商”和“导入供应商帐号”的前置动作收口在一起。当前版本会先列出 pack 里已经存在的 provider，允许直接做 `preview-import` 与 `import`。 如果你要新增 provider 模板，本页也支持把草稿保存到 CRM，再一键发布成 pack/provider 文件并自动提交到仓库。

- 默认 API Base：`/portal-admin-api`
- 支持管理员登录会话，也保留 Bearer admin token 兜底
- 支持 provider 草稿发布到 pack 仓库

API Root
-
当前 Pack
-
当前 Provider
-

## 连接与目录

先建立到 CRM 的连接，再拉取 pack 与 provider 目录。当前页面优先使用 `host_id` 驱动导入， 不再要求浏览器直接知道宿主 base URL。

API Base Admin Token（可选） 优先使用下方管理员登录；这里只保留给脚本联调或紧急兜底。
管理员用户名 管理员密码
尚未检查管理员会话。
Pack
Host ID
Pack Path preview/import 当前仍需显式带上 pack_path，默认按 remote43 的运行路径填写。
等待加载目录。
还没有 provider 目录。

## Provider 预检与导入

选择 pack/provider 后，可以先预检再执行导入。`preview-import` 侧重帐号本身与模型探测， `import` 会继续走 access closure。

Provider ID Mode
Access Mode
Probe API Key
Subscription Users Subscription Days
Keys 一行一个供应商帐号 key。导入页会自动拆成字符串数组传给 CRM。
打开 Batch Import
先从左侧目录选择 provider。

## Provider Manifest 草稿

这部分既能生成与保存 provider 草稿，也能从已保存草稿一键发布到 pack/provider 文件并提交到仓库。 页面本身不直接拼 Git 命令，所有写仓库动作都经由 CRM 服务端完成。

最近成功模板：暂无。首次可以先按一份已有 provider 作为参考修改。
Provider ID（自动生成，可手改） 根据 display name / base url / models 自动生成，并尽量避免与现有 provider_id 冲突。 Display Name
Provider ID 预览：等待填写模型信息。
同模型已存在：当前未发现冲突。
Platform Smoke Test Model
Base URL Placeholder Models
发布 Commit Message 留空时会按 provider_id 自动生成标准 commit message。
填写后生成 provider manifest 草稿。

## Preview 结果

这里直接展示 `POST /api/providers/{providerID}/preview-import` 的原始 JSON。

    {
      "hint": "还没有 preview 结果"
    }

## Import / Draft 结果

导入结果与 manifest 草稿都收在这里，便于直接复制或继续跳转到 batch-import 页面。

    {
      "hint": "还没有 import 或 draft 结果"
    }

## 服务端草稿

这里展示已经保存到 CRM SQLite 的 provider 草稿。点击条目会把内容回填到 manifest 表单，继续编辑或再次复制。

还没有服务端草稿。