feat: 前端适配后端新接口
适配后端统一模型 ID、协议字段、UUID 自动生成和结构化错误响应: - 类型定义:Provider 新增 protocol 字段,Model 新增 unifiedId,CreateModelInput 移除 id - API 客户端:提取结构化错误响应中的错误码 - 供应商管理:添加协议选择下拉框和表格列 - 模型管理:移除 ID 输入,显示统一模型 ID(只读) - Hooks:错误码映射为友好中文消息 - 测试:所有组件测试通过,mock 数据适配新字段 - 文档:更新 README 说明协议字段和统一模型 ID
This commit is contained in:
@@ -80,6 +80,7 @@ TBD - 提供供应商、模型配置和用量统计的前端管理界面
|
||||
- **THEN** 前端 SHALL 显示 TDesign Dialog + Form
|
||||
- **THEN** provider_id SHALL 自动关联当前供应商
|
||||
- **THEN** 供应商选择 SHALL 使用 `options` 属性
|
||||
- **THEN** 创建表单 SHALL NOT 包含 ID 输入框(后端自动生成 UUID)
|
||||
- **WHEN** 用户提交表单
|
||||
- **THEN** 前端 SHALL 通过 useMutation 调用创建 API
|
||||
- **THEN** 成功后 SHALL 刷新模型列表
|
||||
@@ -88,6 +89,8 @@ TBD - 提供供应商、模型配置和用量统计的前端管理界面
|
||||
|
||||
- **WHEN** 用户点击模型的"编辑"
|
||||
- **THEN** 前端 SHALL 显示编辑表单
|
||||
- **THEN** 编辑表单 SHALL 显示统一模型 ID(只读)
|
||||
- **THEN** ID 字段 SHALL 为禁用状态
|
||||
- **WHEN** 用户提交表单
|
||||
- **THEN** 前端 SHALL 通过 useMutation 调用更新 API
|
||||
- **THEN** 成功后 SHALL 刷新模型列表
|
||||
@@ -100,6 +103,71 @@ TBD - 提供供应商、模型配置和用量统计的前端管理界面
|
||||
- **THEN** 前端 SHALL 通过 useMutation 调用删除 API
|
||||
- **THEN** 成功后 SHALL 刷新模型列表
|
||||
|
||||
### Requirement: 显示协议字段
|
||||
|
||||
前端 SHALL 在供应商管理界面显示协议字段。
|
||||
|
||||
#### Scenario: 供应商表格显示协议列
|
||||
|
||||
- **WHEN** 渲染供应商表格
|
||||
- **THEN** 表格 SHALL 包含协议列
|
||||
- **THEN** 协议列 SHALL 显示 "OpenAI" 或 "Anthropic" 标签
|
||||
- **THEN** OpenAI 协议 SHALL 使用主题色标签
|
||||
- **THEN** Anthropic 协议 SHALL 使用成功色标签
|
||||
|
||||
#### Scenario: 供应商表单选择协议
|
||||
|
||||
- **WHEN** 创建或编辑供应商
|
||||
- **THEN** 表单 SHALL 包含协议选择下拉框
|
||||
- **THEN** 下拉框 SHALL 提供 "OpenAI" 和 "Anthropic" 选项
|
||||
- **THEN** 协议字段 SHALL 为必填项
|
||||
|
||||
### Requirement: 显示统一模型 ID
|
||||
|
||||
前端 SHALL 在所有显示模型的地方使用统一模型 ID。
|
||||
|
||||
#### Scenario: 模型表格显示统一 ID 列
|
||||
|
||||
- **WHEN** 渲染模型表格
|
||||
- **THEN** 表格 SHALL 包含统一模型 ID 列
|
||||
- **THEN** 统一模型 ID 列 SHALL 显示 `provider_id/model_name` 格式
|
||||
- **THEN** 统一模型 ID 列 SHALL 启用 ellipsis(超长文本显示省略号,hover 显示 Tooltip)
|
||||
- **THEN** 统一模型 ID 列 SHALL 固定宽度 250px
|
||||
|
||||
#### Scenario: 编辑模型显示统一 ID
|
||||
|
||||
- **WHEN** 编辑模型表单
|
||||
- **THEN** 表单 SHALL 显示统一模型 ID 字段
|
||||
- **THEN** 统一模型 ID 字段 SHALL 为只读(disabled)
|
||||
- **THEN** 统一模型 ID 字段 SHALL 显示格式说明 "格式:provider_id/model_name"
|
||||
|
||||
#### Scenario: 统一模型 ID 降级显示
|
||||
|
||||
- **WHEN** 后端未返回 unified_id 字段
|
||||
- **THEN** 前端 SHALL 拼接 providerId 和 modelName 显示
|
||||
- **THEN** 拼接格式 SHALL 为 `{providerId}/{modelName}`
|
||||
|
||||
### Requirement: 提取并映射错误码
|
||||
|
||||
前端 SHALL 提取后端结构化错误响应中的错误码并映射为友好消息。
|
||||
|
||||
#### Scenario: API 客户端提取错误码
|
||||
|
||||
- **WHEN** 后端返回结构化错误响应 `{error: string, code: string}`
|
||||
- **THEN** API 客户端 SHALL 提取 code 字段
|
||||
- **THEN** ApiError 对象 SHALL 包含 code 字段
|
||||
- **THEN** code 字段 SHALL 为可选(兼容旧错误格式)
|
||||
|
||||
#### Scenario: Hooks 映射错误码为中文消息
|
||||
|
||||
- **WHEN** 处理 API 错误
|
||||
- **THEN** Hooks SHALL 使用错误码映射表
|
||||
- **THEN** 映射表 SHALL 包含以下错误码:
|
||||
- `duplicate_model` → "同一供应商下模型名称已存在"
|
||||
- `invalid_provider_id` → "供应商 ID 仅允许字母、数字、下划线,长度 1-64"
|
||||
- `immutable_field` → "供应商 ID 不允许修改"
|
||||
- **THEN** 未定义的错误码 SHALL 降级使用原始错误消息
|
||||
|
||||
### Requirement: 提供统计查看页面
|
||||
|
||||
前端 SHALL 使用 TDesign 组件提供统计仪表盘页面。
|
||||
|
||||
Reference in New Issue
Block a user