# config.go 与 config.dev.yaml 说明 本文档说明 `server/config/config.go` 与 `server/config/config.dev.yaml` 的职责与字段含义,便于理解配置加载逻辑与开发环境配置项。 **config.go** 用途: 1. 定义应用配置结构体(与 YAML 字段一一对应)。 2. 提供 `LoadConfig()` 读取并解析配置文件到全局变量 `AppConfig`。 加载逻辑(`LoadConfig()`): 1. 先解析命令行参数 `-c` 或 `-config` 指定的配置文件路径。 2. 未指定时读取环境变量 `GO_ENV`,默认 `dev`。 3. 按顺序查找配置文件: - `config.{env}.yaml` - `config/config.{env}.yaml` - `../config/config.{env}.yaml` 4. 若未找到,回退到 `config/config.{env}.yaml` 以便报错信息准确。 5. 读取文件并反序列化到 `AppConfig`;解析失败会 `panic`,读取失败会打印提示并保留默认空配置。 结构体与字段说明(与 YAML 对应): | 结构体 | 字段 | 说明 | | --- | --- | --- | | `LogConfig` | `level` | 日志级别 | | | `dir` | 日志目录 | | | `console` | 是否输出到控制台 | | `ServerConfig` | `port` | 服务端口 | | | `worker_id` | 雪花算法机器 ID | | | `datacenter_id` | 雪花算法数据中心 ID | | `SecurityConfig` | `enable` | 是否启用签名安全校验 | | | `header_key` | 签名请求头字段名 | | | `secret_key` | 签名密钥 | | `PayloadCryptoConfig` | `enable` | 请求/响应加密总开关 | | | `header_key` | 加密标记请求头字段名 | | | `secret_key` | 加密密钥 | | | `whitelist` | 白名单路径 | | | `request` | 请求方向加密配置 | | | `response` | 响应方向加密配置 | | `PayloadCryptoDirectionConfig` | `enable` | 是否启用 | | | `required` | 是否强制 | | `RateLimitConfig` | `enable` | 是否启用限流 | | | `default` | 默认限流规则 | | | `rules` | 路径级别规则 | | `RateLimitRule` | `interval` | 时间间隔(秒) | | | `max_requests` | 最大请求次数 | | `SwaggerConfig` | `user` | Swagger 登录用户名 | | | `password` | Swagger 登录密码 | | `DatabaseConfig` | `driver` | 数据库驱动 | | | `host` | 数据库地址 | | | `port` | 数据库端口 | | | `database` | 数据库名 | | | `username` | 用户名 | | | `password` | 密码 | | | `charset` | 字符集 | | | `max_idle_conns` | 空闲连接数 | | | `max_open_conns` | 最大连接数 | | | `conn_max_lifetime` | 连接最大生命周期(小时) | | | `log_mode` | 是否开启 SQL 日志 | | `RedisConfig` | `addr` | Redis 地址 | | | `password` | Redis 密码 | | | `db` | Redis DB | | `WechatConfig` | `mini_program` | 微信小程序配置 | | `WechatMiniProgramConfig` | `app_id` | 小程序 AppID | | | `app_secret` | 小程序密钥 | | `AppVersionConfig` | `app` | 客户端版本控制 | | | `api` | API 端点配置 | | | `webview` | WebView 端点配置 | | | `ttl_seconds` | 配置缓存秒数 | | | `disabled` | 是否禁用 | | | `disable_reason` | 禁用原因 | | | `tenantId` | 默认租户 ID | | `AppClientConfig` | `min_version` | 最低版本 | | | `latest_version` | 最新版本 | | | `force_update` | 是否强制更新 | | `AppEndpointConfig` | `base_url` | 基础地址 | | | `version` | 接口版本 | | | `min_client_version` | 最低客户端版本 | | `TenantConfig` | `enable` | 是否启用多租户 | | | `header_key` | 租户请求头字段名 | | | `column` | 租户字段名 | | | `tables` | 启用租户过滤的表 | **config.dev.yaml** 用途: - 开发环境配置文件(`GO_ENV=dev` 默认加载)。 - 覆盖服务端口、日志、安全、限流、数据库、Redis、微信小程序、客户端版本等参数。 顶层配置项说明: | 配置段 | 作用 | | --- | --- | | `server` | 服务端口与雪花算法机器/数据中心 ID | | `log` | 日志级别、目录、控制台输出 | | `security` | 请求签名安全校验 | | `tenant` | 多租户开关与租户标识 | | `payload_crypto` | 请求/响应加密配置 | | `rate_limit` | 限流开关与规则 | | `swagger` | Swagger 文档访问账号 | | `database` | 数据库连接与连接池配置 | | `redis` | Redis 连接配置 | | `wechat` | 微信小程序配置 | | `app_config` | 客户端版本、API/WebView 端点与配置中心设置 | 说明:文档仅描述字段用途,未展开敏感值(如密码、密钥等)。如需在文档中补充具体值,请告知需要保留/脱敏的范围。