## 审计重点
- 配置与密钥：敏感信息明文存储在 `configs/*.toml`（数据库密码、JWT密钥、COS密钥、微信AppSecret、commit_master_key）。
- 路由与鉴权：管理端多数接口已启用 `AdminTokenAuthVerify`；但存在非鉴权管理端接口（如 `seed_default`、`ensure_titles`）。
- 特效参数：`SystemTitleEffects.ParamsJSON` 后端仅做“非空”校验，运行期解析失败静默忽略；缺少数值范围与集合规模约束。
- 抽奖随机性：主密钥未打印日志；HMAC与拒绝采样实现合理；但密钥来源为明文配置文件，需迁移至环境变量。
- 优惠券/道具卡：分配/发放缺少配额与上限控制、幂等与审计；优惠券发放未限制超管。 

## 具体风险与代码位置
- 明文密钥：`configs/fat_configs.toml:32`、`configs/*_configs.toml` 多处（JWT/COS/MySQL/Wechat/commit_master_key）。
- 管理端非鉴权路由：`internal/router/router.go`（`/api/admin/system_titles/seed_default`、`/api/admin/menu/ensure_titles`）。
- 特效参数缺失校验：`internal/api/admin/titles_admin.go:173-213, 225-260`（仅非空）；运行期解析：`internal/service/activity/draw_with_effects.go:104-149`（失败忽略）。
- 优惠券发放权限与配额：`internal/api/admin/users_admin.go::AddUserCoupon`（无超管校验、无模板配额扣减）；道具卡分配虽限超管，但无上限/审计：`internal/api/admin/item_cards_admin.go::AssignUserItemCard`。

## 修复方案（分阶段）
1) 配置与密钥治理
- 将敏感配置迁移到环境变量；`configs/*.toml`改为占位与示例；确保不在日志输出敏感值。
- 在密钥读取处加入检测：若为空或默认值，拒绝启动并记录安全告警。

2) 鉴权与权限
- 将所有管理端变更型接口统一置于鉴权组；保留非鉴权的仅限登录与必要的只读接口。
- 优惠券发放接口增加超管校验或细粒度权限；引入操作审计（记录操作者、时间、对象、数量）。

3) 特效参数强校验
- 后端在 `Create/ModifySystemTitleEffect` 按 `effect_type` 反序列化到明确 struct，启用 `DisallowUnknownFields`；
- 数值边界：`boost_x1000/chance_x1000/cap_x1000` 禁止负数，限制最大值；`target_prize_ids` 长度限制与去重；
- 运行期解析失败不再静默：记录结构化告警日志，并在管理端提示配置异常。

4) 优惠券/道具卡防滥用
- 模板配额与上限：发放时扣减可用数量，事务内完成；超量拒绝。
- 用户持有上限与重复发放策略：同模板在时间窗口内单用户限制；引入幂等键防重复请求。
- 操作审计与限流：关键接口限流、审批或二次确认；记录审计日志。

5) 抽奖安全稳健
- 保持现有 HMAC 与拒绝采样；确保 `commit_master_key` 仅从安全环境加载；周期性轮换与版本化控制。

## 交付内容
- 安全问题清单（带文件与行号）。
- 修复清单与实施顺序（先密钥与鉴权→后特效参数校验→最后配额/审计/限流）。
- 修复后的验证方案：单元测试、接口防护测试、管理端提示验证。

如确认，我将按上述方案逐项实施修复并提交相应代码与测试。