Skip to content

Commit 2d3f0a6

Browse files
committed
合并v2.0.0功能到main分支
保留原有双语README结构: - README.md (英文) - README.zh-CN.md (中文) - docs/assets/ (文档图片) 新增功能: - 多Worker架构 (API Worker + Monitor Worker) - 性能优化 (Dashboard API: 15秒 → 0.24秒) - 健康检查API - 统一错误处理 - 输入验证模块 代码更新: - 合并master分支所有代码变更 - 保留main分支的双语文档结构
2 parents 77b2528 + 9eb6d4c commit 2d3f0a6

76 files changed

Lines changed: 120680 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 213 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
# 更新日志 (Changelog)
2+
3+
本项目遵循 [语义化版本](https://semver.org/lang/zh-CN/) 规范。
4+
5+
---
6+
7+
## [2.0.0] - 2026-07-07
8+
9+
### 🚀 新增功能
10+
11+
#### 多Worker架构
12+
- **API Worker**:独立处理HTTP请求,支持水平扩展
13+
- **Monitor Worker**:独立运行Telegram监控,每个Worker管理3-5个账号
14+
- **自动化部署脚本**`deploy-auto.sh` 一键部署多Worker架构
15+
- **Worker状态API**`/status``/health` 端点监控Worker状态
16+
17+
#### 健康检查API
18+
- `GET /api/v1/health/` - 基础探活
19+
- `GET /api/v1/health/detailed` - 详细状态(数据库、Redis、系统、Telegram)
20+
- `GET /api/v1/health/metrics` - 性能指标
21+
22+
#### 代码质量
23+
- **统一错误处理**`AppException` 异常体系,标准化错误响应
24+
- **输入验证**:Pydantic验证器,防止无效输入
25+
- **代码审查**:修复15个代码质量问题
26+
27+
### ⚡ 性能优化
28+
29+
#### Dashboard API 性能提升
30+
| API | 优化前 | 优化后 | 提升倍数 |
31+
|-----|--------|--------|----------|
32+
| `/dashboard/stats` | 3.4秒 | 0.17ms | 20,000x |
33+
| `/dashboard/sender-ranking` | 11秒 | 0.2ms | 55,000x |
34+
| `/dashboard/conversation-activity` | 9秒 | 20ms | 450x |
35+
| 串行加载总时间 | 15秒 | 0.24秒 | 62x |
36+
37+
#### 优化技术
38+
- **预计算字段**:添加 `sender_count` 到 conversations 表
39+
- **子查询优化**:避免大表JOIN
40+
- **近似计数**:使用 `information_schema` 获取大表行数
41+
- **Redis缓存**:所有API结果缓存60秒
42+
- **虚拟滚动**:React Virtuoso 优化大列表
43+
44+
### 🐛 Bug修复
45+
46+
#### 严重Bug
47+
- **修复 `database is locked` 错误**:SQLite session文件并发访问冲突
48+
- **修复 Redis连接失败返回False**:导致TypeError崩溃
49+
- **修复 worker_id=0 被忽略**:falsy值处理错误
50+
- **修复端口冲突Bug**:Worker端口分配错误
51+
52+
#### 功能Bug
53+
- **修复分页重置问题**:筛选条件改变时自动重置到第1页
54+
- **修复代理配置问题**:socks5 → socks5h(DNS通过代理解析)
55+
- **修复Session文件损坏**:添加文件锁保护
56+
57+
### 🔒 安全改进
58+
- **APIKeyAuth中间件**:支持API密钥认证
59+
- **统一异常处理**:避免暴露内部错误信息
60+
- **输入验证**:防止SQL注入和XSS攻击
61+
62+
### 📝 代码优化
63+
- **错误处理**:统一的AppException异常体系
64+
- **日志优化**:添加Worker ID到日志格式
65+
- **配置管理**:Worker配置独立管理
66+
67+
### 📦 部署改进
68+
- **Systemd服务**:支持多Worker独立服务
69+
- **Nginx配置**:负载均衡配置
70+
- **自动化部署**:一键部署脚本
71+
72+
---
73+
74+
## [1.1.0] - 2026-06-25
75+
76+
### ⚡ 性能优化
77+
- **Redis缓存**:Dashboard API添加Redis缓存
78+
- **数据库索引**:添加组合索引优化查询
79+
- **连接池优化**:调整MySQL连接池参数
80+
81+
### 🐛 Bug修复
82+
- **修复消息不更新**:Telegram客户端重连逻辑优化
83+
- **修复Session文件损坏**:添加asyncio.Lock保护
84+
85+
### 📝 功能改进
86+
- **告警中心**:支持手机号筛选
87+
- **大屏展示**:优化可视化效果
88+
- **数据导出**:支持CSV导出
89+
90+
---
91+
92+
## [1.0.0] - 2026-04-15
93+
94+
### 🎉 首次发布
95+
96+
#### 核心功能
97+
- **实时监控**:多账号并行监控Telegram群组
98+
- **关键词告警**:多级告警 + 正则匹配
99+
- **数据分析**:Dashboard + 大屏可视化
100+
- **多渠道通知**:邮件/钉钉/企业微信/Webhook
101+
- **系统管理**:账号管理/代理配置/备份恢复
102+
- **一键部署**:自动化部署脚本
103+
104+
#### 技术栈
105+
- 后端:FastAPI + SQLAlchemy + Telethon
106+
- 前端:React + TypeScript + TailwindCSS
107+
- 数据库:MySQL 8.0
108+
- 缓存:Redis 7.x
109+
110+
---
111+
112+
## 版本说明
113+
114+
### 版本号格式
115+
```
116+
MAJOR.MINOR.PATCH
117+
```
118+
- **MAJOR**:不兼容的API变更
119+
- **MINOR**:向下兼容的功能新增
120+
- **PATCH**:向下兼容的问题修正
121+
122+
### 发布周期
123+
- **MAJOR**:重大架构变更时发布
124+
- **MINOR**:每月发布(如有新功能)
125+
- **PATCH**:每周发布(如有Bug修复)
126+
127+
### 升级指南
128+
129+
#### 从 v1.x 升级到 v2.0
130+
1. 备份数据库和配置文件
131+
2. 拉取最新代码:`git pull`
132+
3. 安装新依赖:`pip install -r requirements.txt`
133+
4. 更新数据库:`python init_db.py`
134+
5. 重新构建前端:`cd frontend && npm run build`
135+
6. 重启服务:`systemctl restart tgmonitor-backend`
136+
137+
#### 配置变更
138+
- 新增 `workers/config.json`:Worker配置
139+
- 新增 `workers/deploy-auto.sh`:自动化部署脚本
140+
- 修改 `.env`:无变更
141+
142+
---
143+
144+
## 贡献指南
145+
146+
### 提交规范
147+
```
148+
<type>(<scope>): <subject>
149+
150+
<body>
151+
152+
<footer>
153+
```
154+
155+
**Type 类型:**
156+
- `feat`:新功能
157+
- `fix`:Bug修复
158+
- `perf`:性能优化
159+
- `refactor`:重构
160+
- `docs`:文档更新
161+
- `test`:测试相关
162+
- `chore`:构建/工具相关
163+
164+
**示例:**
165+
```
166+
feat(dashboard): 添加Redis缓存
167+
168+
- 添加Dashboard统计API缓存
169+
- 优化发送者排行查询
170+
- 性能提升20倍
171+
172+
Closes #123
173+
```
174+
175+
---
176+
177+
## 问题反馈
178+
179+
### GitHub Issues
180+
- 提交Bug报告:https://github.com/chu0119/tg-monitor-v2/issues
181+
- 功能建议:https://github.com/chu0119/tg-monitor-v2/issues
182+
183+
### 问题模板
184+
```markdown
185+
**描述**
186+
简要描述问题
187+
188+
**复现步骤**
189+
1. 访问 '...'
190+
2. 点击 '...'
191+
3. 看到错误
192+
193+
**期望行为**
194+
描述期望的行为
195+
196+
**实际行为**
197+
描述实际的行为
198+
199+
**环境信息**
200+
- 操作系统:[例如 Ubuntu 22.04]
201+
- Python版本:[例如 3.12]
202+
- 浏览器:[例如 Chrome 120]
203+
```
204+
205+
---
206+
207+
## 许可证
208+
209+
本项目采用 [MIT 许可证](LICENSE)
210+
211+
---
212+
213+
**最后更新:2026-07-07**

CODE_REVIEW_REPORT.md

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
# TG Monitor 多Worker架构 - 代码审查报告
2+
3+
## 审查时间
4+
2026-07-07 09:50
5+
6+
## 审查范围
7+
- `backend/app/core/worker_config.py`
8+
- `backend/app/workers/api_worker.py`
9+
- `backend/app/workers/monitor_worker.py`
10+
- `backend/app/api/dashboard.py`
11+
- `backend/app/api/health.py`
12+
- `backend/app/utils/redis_cache.py`
13+
14+
---
15+
16+
## 发现汇总
17+
18+
| 严重程度 | 数量 | 说明 |
19+
|----------|------|------|
20+
| **🔴 严重** | 5 | 需要立即修复 |
21+
| **🟠 重要** | 6 | 需要尽快修复 |
22+
| **🟡 轻微** | 4 | 建议修复 |
23+
| **总计** | 15 | - |
24+
25+
---
26+
27+
## 🔴 严重问题
28+
29+
### 1. 端口冲突Bug
30+
**文件**: `worker_config.py:79,83`
31+
**问题**: 当 `worker_id >= len(ports)` 时,回退到硬编码默认端口,导致与Worker 0端口冲突
32+
**修复**: 使用 `ports[wid % len(ports)]` 替代条件表达式
33+
34+
### 2. worker_id=0 被错误忽略
35+
**文件**: `worker_config.py:74`
36+
**问题**: `wid = worker_id or self.worker_id` 当 worker_id=0 时被当作 falsy 值
37+
**修复**: 使用 `wid = worker_id if worker_id is not None else self.worker_id`
38+
39+
### 3. WORKER_ID环境变量解析无错误处理
40+
**文件**: `worker_config.py:32`
41+
**问题**: 非整数环境变量会导致模块导入时崩溃
42+
**修复**: 添加 try/except 包装
43+
44+
### 4. Redis连接失败返回False导致崩溃
45+
**文件**: `redis_cache.py:60`
46+
**问题**: `get()` 在 ConnectionError 时返回 `False` 而非 `None`,导致 TypeError
47+
**修复**: 将 `return False` 改为 `return None`
48+
49+
### 5. api_worker缺少异常处理器
50+
**文件**: `api_worker.py:create_app()`
51+
**问题**: 未注册 AppException 和 general_exception 处理器
52+
**修复**: 添加异常处理器注册
53+
54+
---
55+
56+
## 🟠 重要问题
57+
58+
### 6. api_worker缺少APIKeyAuth中间件
59+
**文件**: `api_worker.py:create_app()`
60+
**问题**: 未添加 APIKeyAuthMiddleware,API密钥认证不生效
61+
62+
### 7. api_worker缺少数据库初始化
63+
**文件**: `api_worker.py:lifespan`
64+
**问题**: 未调用 `init_db()` 创建表
65+
66+
### 8. api_worker缺少兼容路由
67+
**文件**: `api_worker.py:create_app()`
68+
**问题**: 缺少 `/api/v1/keyword-groups` 兼容路由
69+
70+
### 9. api_worker缺少代理配置加载
71+
**文件**: `api_worker.py:lifespan`
72+
**问题**: 未加载运行时代理配置
73+
74+
### 10. monitor_worker未停止心跳任务
75+
**文件**: `monitor_worker.py:172-176`
76+
**问题**: 关闭时未调用 `stop_heartbeat()`
77+
78+
### 11. monitor_worker无信号处理
79+
**文件**: `monitor_worker.py`
80+
**问题**: 未注册 SIGTERM/SIGINT 处理器
81+
82+
---
83+
84+
## 🟡 轻微问题
85+
86+
### 12. monitor_worker Uvicorn服务器未管理生命周期
87+
**文件**: `monitor_worker.py:225`
88+
89+
### 13. connect_accounts无并发控制
90+
**文件**: `monitor_worker.py:101-102`
91+
92+
### 14. dashboard.py使用废弃的.dict()方法
93+
**文件**: `dashboard.py:66,435,485`
94+
95+
---
96+
97+
## 修复计划
98+
99+
1. 修复 worker_config.py 的端口冲突和worker_id问题
100+
2. 修复 redis_cache.py 的返回值问题
101+
3. 修复 api_worker.py 的异常处理器和中间件
102+
4. 修复 monitor_worker.py 的关闭逻辑

0 commit comments

Comments
 (0)