- 新增 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(已迁移至分层架构)
124 lines
3.3 KiB
Markdown
124 lines
3.3 KiB
Markdown
# Config Management
|
||
|
||
## ADDED Requirements
|
||
|
||
### Requirement: 使用 YAML 配置文件
|
||
|
||
系统 SHALL 使用 YAML 格式的配置文件。
|
||
|
||
#### Scenario: 配置文件路径
|
||
|
||
- **WHEN** 应用启动
|
||
- **THEN** SHALL 从 `~/.nex/config.yaml` 加载配置
|
||
- **THEN** SHALL 解析 YAML 格式
|
||
|
||
#### Scenario: 配置文件结构
|
||
|
||
- **WHEN** 加载配置文件
|
||
- **THEN** SHALL 包含 server、database、log 等配置节
|
||
- **THEN** SHALL 支持嵌套配置结构
|
||
|
||
### Requirement: 自动生成默认配置
|
||
|
||
系统 SHALL 在首次使用时自动生成默认配置。
|
||
|
||
#### Scenario: 配置文件不存在
|
||
|
||
- **WHEN** 应用启动且 `~/.nex/config.yaml` 不存在
|
||
- **THEN** SHALL 自动创建配置文件
|
||
- **THEN** SHALL 写入默认配置值
|
||
- **THEN** SHALL 记录日志提示已创建
|
||
|
||
#### Scenario: 配置文件已存在
|
||
|
||
- **WHEN** 应用启动且 `~/.nex/config.yaml` 已存在
|
||
- **THEN** SHALL 直接加载配置文件
|
||
- **THEN** SHALL NOT 覆盖现有配置
|
||
|
||
### Requirement: 配置验证
|
||
|
||
系统 SHALL 验证配置的有效性。
|
||
|
||
#### Scenario: 必需字段验证
|
||
|
||
- **WHEN** 加载配置
|
||
- **THEN** SHALL 验证必需字段存在
|
||
- **THEN** SHALL 在字段缺失时返回错误
|
||
|
||
#### Scenario: 字段值验证
|
||
|
||
- **WHEN** 加载配置
|
||
- **THEN** SHALL 验证端口号范围(1-65535)
|
||
- **THEN** SHALL 验证日志级别有效性
|
||
- **THEN** SHALL 验证路径有效性
|
||
|
||
#### Scenario: 配置错误处理
|
||
|
||
- **WHEN** 配置验证失败
|
||
- **THEN** SHALL 返回详细的错误信息
|
||
- **THEN** SHALL 指示哪些字段无效
|
||
- **THEN** SHALL 应用 SHALL NOT 启动
|
||
|
||
### Requirement: 配置结构定义
|
||
|
||
系统 SHALL 定义清晰的配置结构。
|
||
|
||
#### Scenario: Server 配置
|
||
|
||
- **WHEN** 加载 server 配置
|
||
- **THEN** SHALL 包含 port、read_timeout、write_timeout 字段
|
||
- **THEN** SHALL 使用合理的默认值
|
||
|
||
#### Scenario: Database 配置
|
||
|
||
- **WHEN** 加载 database 配置
|
||
- **THEN** SHALL 包含 path、max_idle_conns、max_open_conns、conn_max_lifetime 字段
|
||
- **THEN** SHALL 使用合理的默认值
|
||
|
||
#### Scenario: Log 配置
|
||
|
||
- **WHEN** 加载 log 配置
|
||
- **THEN** SHALL 包含 level、path、max_size、max_backups、max_age、compress 字段
|
||
- **THEN** SHALL 使用合理的默认值
|
||
|
||
### Requirement: 默认配置值
|
||
|
||
系统 SHALL 提供合理的默认配置值。
|
||
|
||
#### Scenario: Server 默认值
|
||
|
||
- **WHEN** 使用默认配置
|
||
- **THEN** server.port SHALL 为 9826
|
||
- **THEN** server.read_timeout SHALL 为 30s
|
||
- **THEN** server.write_timeout SHALL 为 30s
|
||
|
||
#### Scenario: Database 默认值
|
||
|
||
- **WHEN** 使用默认配置
|
||
- **THEN** database.path SHALL 为 `~/.nex/config.db`
|
||
- **THEN** database.max_idle_conns SHALL 为 10
|
||
- **THEN** database.max_open_conns SHALL 为 100
|
||
- **THEN** database.conn_max_lifetime SHALL 为 1h
|
||
|
||
#### Scenario: Log 默认值
|
||
|
||
- **WHEN** 使用默认配置
|
||
- **THEN** log.level SHALL 为 info
|
||
- **THEN** log.path SHALL 为 `~/.nex/log`
|
||
- **THEN** log.max_size SHALL 为 100 (MB)
|
||
- **THEN** log.max_backups SHALL 为 10
|
||
- **THEN** log.max_age SHALL 为 30 (days)
|
||
- **THEN** log.compress SHALL 为 true
|
||
|
||
### Requirement: 配置重载支持
|
||
|
||
系统 SHALL 支持配置重载(未来扩展)。
|
||
|
||
#### Scenario: 配置热重载
|
||
|
||
- **WHEN** 配置文件修改(未来功能)
|
||
- **THEN** SHALL 支持重新加载配置
|
||
- **THEN** SHALL 应用新配置到可动态调整的参数
|
||
|
||
注:当前版本不支持,仅为未来扩展预留接口。
|