From 75563524775c469c62dfe72025b01679f4913136 Mon Sep 17 00:00:00 2001 From: "Mr.Xia" <1424473282@qq.com> Date: Sun, 10 May 2026 00:43:18 +0800 Subject: [PATCH] docs: add remaining review reports and docs --- docs/onmyoji_gacha_review.md | 45 +++++++++++++++++++++ review_reports/auto_friend_accept_review.md | 25 ++++++++++++ review_reports/auto_recall_review.md | 31 ++++++++++++++ 3 files changed, 101 insertions(+) create mode 100644 docs/onmyoji_gacha_review.md create mode 100644 review_reports/auto_friend_accept_review.md create mode 100644 review_reports/auto_recall_review.md diff --git a/docs/onmyoji_gacha_review.md b/docs/onmyoji_gacha_review.md new file mode 100644 index 0000000..e819c70 --- /dev/null +++ b/docs/onmyoji_gacha_review.md @@ -0,0 +1,45 @@ +# onmyoji_gacha Code Review Report +**Date**: 2026-05-10 +**Files Reviewed**: 7 files, ~2318 lines +**Overall Grade**: B+ (Good quality, minor issues) + +## Issues Found + +### HIGH Priority +| # | File | Line | Category | Issue | Fix | +|---|------|------|----------|-------|-----| +| 1 | config.py | 107 | SECURITY | 硬编码默认ADMIN_TOKEN,生产环境安全风险 | 添加运行时检查,生产环境强制覆盖 | +| 2 | api_utils.py | 48 | RELIABILITY | requests.get() 无timeout,网络故障时阻塞 | 添加 timeout=10 参数 | + +### MEDIUM Priority +| # | File | Line | Category | Issue | Fix | +|---|------|------|----------|-------|-----| +| 3 | web_api.py | 56 | RELIABILITY | session.execute() 无异常保护 | 添加 try/except | +| 4 | data_manager.py | N/A | CONCURRENCY | SQLite无线程锁保护 | 考虑添加 threading.Lock | +| 5 | __init__.py | N/A | CODE QUALITY | 全局实例无生命周期管理 | 现状可接受 | + +### LOW Priority / Observations +- **Code Quality**: 整体代码结构良好,错误处理完善 +- **Logging**: 日志覆盖合理,关键操作有日志记录 +- **Comments**: 注释清晰,函数文档完整 +- **Tests**: 建议添加单元测试覆盖核心抽卡逻辑 + +## Recommendations +1. **必须修复**: Issue #1, #2 (生产安全/稳定性) +2. **建议修复**: Issue #3 (API异常处理) +3. **可选改进**: Issue #4, #5 + +## Files Summary +| File | Lines | Issues | Grade | +|------|-------|--------|-------| +| config.py | 121 | 1 HIGH | B | +| utils.py | 42 | 0 | A- | +| api_utils.py | 252 | 1 HIGH | B | +| web_api.py | 200 | 1 MEDIUM | B+ | +| gacha.py | 307 | 0 | A- | +| data_manager.py | 594 | 1 MEDIUM | B+ | +| __init__.py | 802 | 1 MEDIUM | B+ | + +--- +**Reviewer**: Code Review Agent +**Next Steps**: Apply fixes for Issue #1, #2, #3 diff --git a/review_reports/auto_friend_accept_review.md b/review_reports/auto_friend_accept_review.md new file mode 100644 index 0000000..3d6712c --- /dev/null +++ b/review_reports/auto_friend_accept_review.md @@ -0,0 +1,25 @@ +# auto_friend_accept 评审报告 + +## 修复前问题清单 (1项) + +| # | 严重度 | 问题 | 文件 | +|---|--------|------|------| +| 1 | **低** | 无速率限制,恶意用户可连续发好友请求消耗API | auto_accept.py | + +## 代码质量评估 + +| 维度 | 评级 | 说明 | +|------|------|------| +| 安全性 | A | 正确的 try/except 保护,用户ID/flag安全记录 | +| 异步处理 | A | asyncio.sleep 延迟发送欢迎消息,不阻塞 | +| 代码结构 | A- | 清晰简洁,46行,配置与逻辑分离 | +| 错误处理 | B+ | 发送失败仅记录日志,不重试(可接受) | + +## 验证 +- [x] auto_accept_enabled 开关正确 +- [x] 随机延迟防机器人检测 +- [x] 无敏感信息泄露 +- [x] 无同步阻塞调用 + +## 代码质量总结 +评级:**A-** (简洁、安全、无关键bug) diff --git a/review_reports/auto_recall_review.md b/review_reports/auto_recall_review.md new file mode 100644 index 0000000..a560c41 --- /dev/null +++ b/review_reports/auto_recall_review.md @@ -0,0 +1,31 @@ +# auto_recall 评审报告 + +## 修复前问题清单 (2项) + +| # | 严重度 | 问题 | 文件 | +|---|--------|------|------| +| 1 | **低** | `@validator` 在 pydantic v2 中已 deprecated | config.py:7 | +| 2 | **低** | `recall_message_after_delay` 撤回失败仅日志记录,无重试 | __init__.py:57 | + +## 代码质量评估 + +| 维度 | 评级 | 说明 | +|------|------|------| +| 安全性 | A | 无敏感数据处理 | +| 异步处理 | A | 正确使用 asyncio.create_task + done_callback 防GC | +| 代码结构 | A | 配置与逻辑分离,qqpush特殊路径清晰 | +| 错误处理 | B+ | 撤回失败仅记日志(可接受,撤回不保证成功) | + +## 设计亮点 +- `_recall_tasks` Set + `done_callback` 防止任务被GC回收 +- Bot.on_called_api 钩子拦截所有消息发送,架构正确 +- danding_qqpush 消息有独立的 qqpush_recall_delay 配置 + +## 验证 +- [x] Task GC保护正确 +- [x] API钩子过滤逻辑正确 +- [x] 无同步阻塞 +- [x] config validator 在 pydantic v2 下兼容运行 + +## 代码质量总结 +评级:**B+** (架构优秀,仅低优先级deprecation问题)