71 lines
2.2 KiB
Markdown
71 lines
2.2 KiB
Markdown
# 代码重构指南
|
||
|
||
## 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 # 保持不变
|
||
└── ... # 其他文件保持不变
|
||
```
|
||
|
||
这次重构提高了代码的可维护性和可测试性,同时保持了完全的向后兼容性。 |