# 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 应用新配置到可动态调整的参数 注:当前版本不支持,仅为未来扩展预留接口。