46 lines
2.1 KiB
Markdown
46 lines
2.1 KiB
Markdown
## 1. SQLite 异步化 [P0]
|
||
|
||
- [x] 1.1 在 requirements.txt / pyproject.toml 中添加 aiosqlite 依赖
|
||
- [x] 1.2 重写 room_store.py 中 RoomStore 类:将所有 sqlite3.connect() 替换为 await aiosqlite.connect(),同步 .execute() 替换为 await .execute()
|
||
- [x] 1.3 将 _init_db() 改为 async _init_db(),在首次 async 操作时调用
|
||
- [x] 1.4 将 save_race_result()、get_last_horse_name()、set_last_horse_name() 均改为 async
|
||
- [x] 1.5 修改 commands.py 中所有 room_store.xxx() 调用为 await room_store.xxx()
|
||
- [ ] 1.6 验证插件加载正常,比赛流程可跑通
|
||
|
||
## 2. 积分扣款重试 [P0]
|
||
|
||
- [x] 2.1 统一 points_service.py 异常处理:统一 exception type
|
||
- [x] 2.2 添加轻量重试:网络异常时等待 0.5~1s 重试一次
|
||
- [x] 2.3 返回值与调用处对齐
|
||
|
||
## 3. 消息发送异常日志 [P0]
|
||
|
||
- [x] 3.1 _send_to_scope 中 catch Exception,log.warning 记录发送失败详情
|
||
- [x] 3.2 catch 后静默继续(比赛不中断)
|
||
|
||
## 4. 积分历史记录字段补充 [P1]
|
||
|
||
- [x] 4.1 update_points 调用时传入 source="horse_race"
|
||
- [x] 4.2 下注/退款/派彩均记录对应 reason
|
||
|
||
## 5. 赔率快照 [P1]
|
||
|
||
- [x] 5.1 在 horse_race 结算时写入 participants 快照(赔率 + 下注金额)
|
||
- [x] 5.2 验证 history 表中可查到积分变化数据
|
||
|
||
## 6. 测试数据隔离 [P1]
|
||
|
||
- [x] 6.1 修改 test_commands.py:不再导入生产 room_store,通过 commands_mod 间接访问
|
||
- [x] 6.2 将测试命令中的 room_store/points_service 操作指向 commands_mod(支持 monkey-patch)
|
||
- [ ] 6.3 验证测试操作不影响生产数据
|
||
|
||
## 7. 马名去重统一 [P2]
|
||
|
||
- [x] 7.1 修改 _find_duplicate_horse:统一使用 casefold() 比较 dict key
|
||
- [x] 7.2 _normalize_horse_name 已用 casefold() 做统一归一化
|
||
- [ ] 7.3 验证 "Test" 和 "test" 无法同时注册
|
||
|
||
## 8. 代码审查后修复 [P3]
|
||
|
||
- [x] 8.1 settle_race 返回 tuple[RaceResult, odds],消除 run_race_with_settlement 中 odds 重复计算
|
||
- [x] 8.2 _test_send_to_scope 签名兼容性:已有 *args/**kwargs,兼容 _send_to_scope 的 message_type 参数 |