Files
ai-talk-callback/REFACTOR_GUIDE.md
2025-12-08 09:49:36 +08:00

2.2 KiB
Raw Permalink Blame History

代码重构指南

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 任务中使用

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)

在其他模块中使用

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          # 保持不变
└── ...                     # 其他文件保持不变

这次重构提高了代码的可维护性和可测试性,同时保持了完全的向后兼容性。