增加组装推送消息的逻辑

This commit is contained in:
mark.tian
2025-12-08 09:49:36 +08:00
parent 038363a17e
commit 43ff4aa5f9
6 changed files with 1096 additions and 53 deletions

71
REFACTOR_GUIDE.md Normal file
View File

@@ -0,0 +1,71 @@
# 代码重构指南
## Service 模块重构
### 重构内容
将以下业务逻辑函数从 `app/celery_tasks.py` 移动到独立的 `app/callback_service.py` 模块中:
#### 移动的函数
1. `save_callback_data_items` - 保存回调数据到数据库
2. `get_uncompleted_callback_log` - 获取未完成的回调日志
3. `get_callback_log_data` - 获取回调日志数据
4. `check_phone_number_threshold` - 检查手机号阈值
5. `call_external_api_with_retry` - 带重试的外部API调用
6. `mark_callback_log_completed` - 标记回调日志为完成
7. `_log_dtc_push_call` - 记录API调用日志
### 重构优势
#### 1. 代码组织优化
- **关注点分离**:Celery 任务专注于任务调度,业务逻辑独立到 Service 层
- **代码复用**:Service 函数可以被其他模块直接调用,不限于 Celery 任务
- **维护性提升**:业务逻辑集中管理,便于测试和维护
#### 2. 模块职责清晰
- `celery_tasks.py`: 负责任务定义和调度逻辑
- `callback_service.py`: 负责回调处理的核心业务逻辑
#### 3. 可测试性增强
- Service 函数可以独立进行单元测试
- 不依赖 Celery 环境,测试更加便捷
### 使用方式
#### 在 Celery 任务中使用
```python
from app.callback_service import (
save_callback_data_items,
get_uncompleted_callback_log,
call_external_api_with_retry
)
# 直接调用服务函数
callback_log_data = get_uncompleted_callback_log(conn)
if callback_log_data:
save_callback_data_items(conn, data_list, callback_log_id)
```
#### 在其他模块中使用
```python
from app.callback_service import check_phone_number_threshold
# 直接使用业务逻辑
exceeds, is_valid = check_phone_number_threshold(conn, phone_number)
```
### 向后兼容性
- ✅ 所有现有功能保持不变
- ✅ Celery 任务正常工作
- ✅ API 接口行为一致
- ✅ 数据库操作不变
### 文件结构
```
app/
├── callback_service.py # 新增:回调处理服务
├── celery_tasks.py # 重构:仅包含任务定义
├── celery_app.py # 保持不变
└── ... # 其他文件保持不变
```
这次重构提高了代码的可维护性和可测试性,同时保持了完全的向后兼容性。