Files
sub2api-cn-relay-manager/docs/2026-06-04-PORTAL_KEY_EXPERIENCE.md
phamnazage-jpg 596a2a110c
Some checks failed
CI / Build & Test (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / Docker Build (push) Has been cancelled
CI / Release (push) Has been cancelled
feat(vnext2): add user key self-service skeleton
- PORTAL_KEY_EXPERIENCE.md: review from pending to approved
- KEY_SELF_SERVICE_API.md: review from pending to approved
- 0015_user_keys.sql: migration for key_records table
- user_keys_repo.go + test: SQLite repo (Create/ListByOwner/GetByID/UpdateStatus)
- key_self_service.go: HTTP handlers (POST/GET /api/keys, pause/resume/delete)
- key_self_service_svc.go: action wiring (buildUserKeyHandler)
- registered in ActionSet + NewAPIHandlerWithAuth

Note: full user auth requires host+CRM co-deployment.
Current skeleton accepts Bearer token for testing.
2026-06-05 11:45:17 +08:00

138 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Portal Key Experience
日期2026-06-05
状态:已审核通过
适用版本vNext.2
## 目的
定义用户 portal 中 key 自助申请与首次调用体验的状态机、信息架构与边界,避免页面承诺超过宿主真实能力。
## 信息架构
用户页最少展示:
1. 我的 key
2. key 当前状态
3. 该 key 可用模型 / 逻辑分组
4. base URL
5. curl 示例
6. 首次调用指引
7. 最近一次失败原因(如有)
禁止向用户直接暴露:
- shadow_group_id
- route_id
- host_account_id
- 内部 capability inventory 明细
- 实验性/内部调试字段
## 用户状态机
### S0 未登录
- 只显示登录入口
- 不展示任何 key 信息
### S1 已登录但无 key
- 显示“创建 key”入口
- 展示说明:创建后明文只显示一次
- 展示可申请的逻辑模型组(用户可见范围内)
### S2 key 创建成功(首次显示明文)
- 返回一次明文 key
- 强提示:刷新/关闭后无法再次查看明文
- 同屏展示:
- base URL
- model 示例
- curl 示例
- 复制按钮
### S3 已有 key明文不可再查看
- 只显示 masked preview
- 显示状态、分组、模型、最近使用时间
- 支持重置/重新生成(如产品允许)
### S4 key paused
- 明确显示:已暂停
- 显示原因
- 若用户无恢复权限,只显示联系管理员
### S5 key quota exhausted / limited
- 明确显示:已超限/受限
- 给出用户下一步动作:等待恢复 / 联系管理员 / 升级配额
### S6 route degraded / model unavailable
- 明确显示:当前模型线路不可用
- 不伪装成“key 无效”
- 给出推荐动作:稍后重试 / 切换模型 / 联系管理员
### S7 示例调用失败
- 保留最近失败摘要
- 指明是:
- auth failed
- quota exhausted
- model unavailable
- route degraded
- upstream blocked
## 首次调用闭环
用户拿到 key 后,页面必须最短路径支持:
1. 复制 key
2. 复制 base URL
3. 复制 curl 示例
4. 选择一个已验证通过的 public model
5. 看到明确成功标准:`POST /v1/chat/completions = 200`
## 文案约束
必须避免:
- 承诺“所有模型都可用”
- 承诺“稳定负载均衡”
-`/v1/models` 成功暗示真实可调
推荐文案:
- “以下模型基于当前已验证链路提供”
- “是否可进入默认链路以当前用户调用验证为准”
- “明文 key 仅首次显示一次”
## 页面块建议
1. 概览卡
2. key 列表卡
3. 创建 key / 重置 key 操作区
4. 使用示例区
5. 状态与故障说明区
6. 支持与说明区
## 验收要求
至少覆盖:
- 未登录
- 无 key
- 首次创建成功
- 已有 key 无明文
- paused
- quota exhausted
- model unavailable
- 示例调用成功
- 示例调用失败
## 与本轮范围关系
本文件属于 vNext.2 设计文档。
在当前 vNext.1 审核阶段,只作为后续设计真相源,不进入 UI 实现。