1
0
Files
nex/openspec/specs/model-management/spec.md
lanyuanxiaoyao f18904af1e feat: 实现分层架构,包含 domain、service、repository 和 pkg 层
- 新增 domain 层:model、provider、route、stats 实体
- 新增 service 层:models、providers、routing、stats 业务逻辑
- 新增 repository 层:models、providers、stats 数据访问
- 新增 pkg 工具包:errors、logger、validator
- 新增中间件:CORS、logging、recovery、request ID
- 新增数据库迁移:初始 schema 和索引
- 新增单元测试和集成测试
- 新增规范文档:config-management、database-migration、error-handling、layered-architecture、middleware-system、request-validation、structured-logging、test-coverage
- 移除 config 子包和 model_router(已迁移至分层架构)
2026-04-16 00:47:20 +08:00

3.6 KiB
Raw Blame History

Model Management

MODIFIED Requirements

Requirement: 创建模型配置

网关 SHALL 允许为供应商创建新的模型配置。

Scenario: 使用有效数据创建模型

  • WHEN/api/models 发送 POST 请求携带有效的模型数据id, provider_id, model_name
  • THEN 网关 SHALL 在数据库中创建新的模型记录
  • THEN 网关 SHALL 返回创建的模型,状态码为 201
  • THEN 模型 SHALL 默认启用

Scenario: 使用不存在的供应商创建模型

  • WHEN/api/models 发送 POST 请求,携带不存在的 provider_id
  • THEN 网关 SHALL 返回错误,状态码为 400 (Bad Request)
  • THEN 错误 SHALL 指示供应商不存在

变更说明: handler 通过 ModelService 调用,数据访问通过 ModelRepository 和 ProviderRepository。API 接口保持不变。

Requirement: 列出所有模型

网关 SHALL 允许获取所有模型配置。

Scenario: 成功列出模型

  • WHEN/api/models 发送 GET 请求
  • THEN 网关 SHALL 返回所有模型的列表
  • THEN 每个模型 SHALL 包含 id, provider_id, model_name, enabled, created_at

变更说明: 数据访问从 config 包迁移到 ModelRepository。API 接口保持不变。

Requirement: 按供应商列出模型

网关 SHALL 允许获取特定供应商的模型。

Scenario: 列出存在供应商的模型

  • WHEN/api/models?provider_id=<provider_id> 发送 GET 请求
  • THEN 网关 SHALL 返回指定供应商的模型列表

变更说明: 通过 ModelService 和 ModelRepository 实现。API 接口保持不变。

Requirement: 更新模型配置

网关 SHALL 允许更新现有模型配置。

Scenario: 使用有效数据更新模型

  • WHEN/api/models/:id 发送 PUT 请求,携带有效的模型数据
  • THEN 网关 SHALL 更新数据库中的模型记录
  • THEN 网关 SHALL 返回更新后的模型

Scenario: 更新模型供应商

  • WHEN/api/models/:id 发送 PUT 请求,携带新的 provider_id
  • THEN 网关 SHALL 验证新供应商是否存在
  • THEN 网关 SHALL 更新模型的供应商关联

变更说明: 通过 ModelService、ModelRepository 和 ProviderRepository 实现。API 接口保持不变。

Requirement: 删除模型配置

网关 SHALL 允许删除模型配置。

Scenario: 删除存在的模型

  • WHEN/api/models/:id 发送 DELETE 请求,携带有效的模型 ID
  • THEN 网关 SHALL 删除模型记录
  • THEN 网关 SHALL 返回状态码 204 (No Content)

变更说明: 通过 ModelService 和 ModelRepository 实现。API 接口保持不变。

ADDED Requirements

Requirement: 使用 service 层处理业务逻辑

Handler SHALL 通过 ModelService 处理业务逻辑。

Scenario: 调用 service 方法

  • WHEN handler 收到请求
  • THEN SHALL 调用对应的 ModelService 方法Create、Get、List、Update、Delete
  • THEN SHALL 使用 domain.Model 类型

Scenario: 供应商验证

  • WHEN 创建或更新模型
  • THEN SHALL 在 service 层验证供应商存在
  • THEN SHALL 通过 ProviderRepository 查询供应商

Requirement: 使用 repository 层访问数据

Service SHALL 通过 ModelRepository 访问数据。

Scenario: 调用 repository 方法

  • WHEN service 处理业务逻辑
  • THEN SHALL 调用对应的 ModelRepository 方法
  • THEN SHALL 使用 domain.Model 类型

Scenario: 数据验证

  • WHEN 创建或更新模型
  • THEN SHALL 在 service 层验证业务规则
  • THEN SHALL 在 repository 层执行数据库操作