增加组装推送消息的逻辑
This commit is contained in:
71
REFACTOR_GUIDE.md
Normal file
71
REFACTOR_GUIDE.md
Normal 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 # 保持不变
|
||||
└── ... # 其他文件保持不变
|
||||
```
|
||||
|
||||
这次重构提高了代码的可维护性和可测试性,同时保持了完全的向后兼容性。
|
||||
Reference in New Issue
Block a user