refactor: onmyoji gacha plugin overhaul (gacha-refactor)
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
# 变更提案: onmyoji_gacha 代码评审修复
|
||||
|
||||
- 日期: 2026-05-03
|
||||
- 状态: ✅ 已实施
|
||||
- 作者: Agent (代码评审驱动)
|
||||
|
||||
## 背景
|
||||
|
||||
对 onmyoji_gacha 插件进行系统代码评审,发现 14 个问题(1P0 + 6P1 + 9P2),
|
||||
涉及安全漏洞、依赖方向、职责边界、一致性等维度。
|
||||
|
||||
## 变更清单
|
||||
|
||||
### P0 - 紧急修复
|
||||
|
||||
| # | 文件 | 问题 | 修复 |
|
||||
|---|------|------|------|
|
||||
| 1 | web_api.py | 5处async函数缺await(数据库查询结果为协程对象,数据全部错乱) | 补全所有await |
|
||||
|
||||
### P1 - 重要修复
|
||||
|
||||
| # | 文件 | 问题 | 修复 |
|
||||
|---|------|------|------|
|
||||
| 2 | web_api.py | verify_admin_token中print泄露token明文到日志 | 删除token print |
|
||||
| 3 | formatters.py → api_utils | format_achievement_notify反向依赖api_utils(同层模块循环依赖) | 解耦:formatters改为纯格式化,reward逻辑移至handler调用方 |
|
||||
| 4 | handlers/gacha.py → __init__.py | 签到逻辑嵌入抽卡handler(跨职责),传None matcher | 移至__init__.py matcher层,传入实际matcher |
|
||||
| 5 | formatters.py | 5处重复硬编码SSR/SP/...字符串字面量 | 提取RARITY_DISPLAY配置字典,消除重复 |
|
||||
| 6 | data_manager.py | 承担数据IO+缓存+业务规则三重职责 | 暂不拆分(影响面大),docstring标记TODO |
|
||||
|
||||
### P2 - 改进
|
||||
|
||||
| # | 文件 | 问题 | 修复 |
|
||||
|---|------|------|------|
|
||||
| 7 | utils.py | user_name获取逻辑散布在多个handler中 | 新增get_user_name统一工具函数 |
|
||||
| 8 | web_api.py | GachaSystem/Config模块级实例化(import时副作用) | 改为lazy延迟初始化 |
|
||||
| 9 | __init__.py | matcher参数传None | 传入实际matcher对象 |
|
||||
|
||||
## 受影响文件
|
||||
|
||||
- `web_api.py` - 重写(P0+P1+P2共8处修复)
|
||||
- `formatters.py` - 解耦api_utils + RARITY_DISPLAY提取
|
||||
- `handlers/gacha.py` - 移除签到逻辑
|
||||
- `__init__.py` - gacha wrapper补充签到编排
|
||||
- `utils.py` - 新增get_user_name
|
||||
- `data_manager.py` - TODO标记
|
||||
|
||||
## 验证
|
||||
|
||||
- [x] 所有修改文件语法检查通过 (ast.parse)
|
||||
- [x] 依赖方向:formatters不再import api_utils
|
||||
- [x] token明文不再出现在日志
|
||||
- [x] 签到逻辑在matcher层正确调用
|
||||
|
||||
## Delta 规约
|
||||
|
||||
本次变更未引入新的外部依赖,未改变数据库结构,未改变用户可见接口。
|
||||
API响应格式不变,命令触发方式不变。
|
||||
Reference in New Issue
Block a user