refactor: P3c 服务层迁入 src/modules/ → service.py(29 服务)

- 22 个单服务 + 3 组合并(config+config_item、dict+dict_item、login_log+operation_log)
- 特殊命名:job_executor→executor、scheduler→scheduler_service、
  mail_svc→mail_service、sms_svc→sms_service(含使用处标识符改写)
- 重写引用:跨服务(module 别名/子模块)、models/forms→src.modules、
  db/extensions→src.core、utils→src.common|core、R→src.core.response
- application/services/ 全部替换为 shim

【验收】全部服务文件编译通过;应用启动;pytest 5 passed;核心服务导入正常

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
DjangoAdmin Dev
2026-08-07 14:18:40 +08:00
co-authored by Claude
parent 2586c0aace
commit 87aec4e26e
53 changed files with 10586 additions and 11055 deletions
+4 -161
View File
@@ -1,165 +1,8 @@
"""
任务执行器模块
兼容 shim(绞杀者迁移期间保留)
=============================================================
该模块实现了根据触发器标识执行对应任务的功能。
服务已迁移至 src.modules.job.executor。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
"""
import logging
from typing import Dict, Any, Optional
logger = logging.getLogger(__name__)
# ============================================================
# 任务执行器
# ============================================================
class JobExecutor:
"""
任务执行器
根据触发器标识调用对应的内部方法执行任务。
"""
def __init__(self):
"""初始化执行器,注册默认任务"""
self._handlers = {}
self._register_default_handlers()
def _register_default_handlers(self):
"""注册默认的任务处理器"""
# 示例:短信发送任务
self.register('send_sms', self._send_sms)
# 示例:邮件发送任务
self.register('send_email', self._send_email)
# 示例:数据同步任务
self.register('sync_data', self._sync_data)
def register(self, trigger: str, handler):
"""
注册任务处理器
Args:
trigger: 触发器标识
handler: 处理函数
"""
self._handlers[trigger] = handler
logger.info(f"注册任务处理器: {trigger}")
def execute(self, trigger: str, **kwargs) -> Any:
"""
执行任务
Args:
trigger: 触发器标识
**kwargs: 执行参数
Returns:
Any: 执行结果
"""
if trigger not in self._handlers:
logger.error(f"未找到触发器对应的方法: {trigger}")
raise KeyError(f"未找到触发器对应的方法: {trigger}")
handler = self._handlers[trigger]
logger.info(f"执行任务: {trigger}, 参数: {kwargs}")
return handler(**kwargs)
# ============================================================
# 默认任务处理器
# ============================================================
def _send_sms(self, **kwargs) -> Dict:
"""
发送短信任务
Args:
**kwargs: 包含 phone, template_code, template_params, sign_name 等参数
Returns:
Dict: 执行结果
"""
from application.services import sms_svc
phone = kwargs.get('phone')
template_code = kwargs.get('template_code')
template_params = kwargs.get('template_params')
sign_name = kwargs.get('sign_name')
job_id = kwargs.get('job_id')
logger.info(f"发送短信 [任务ID: {job_id}, 手机号: {phone}, 模板: {template_code}]")
success = sms_svc.send_sms(
phone=phone,
template_code=template_code,
template_params=template_params,
sign_name=sign_name,
)
return {
'success': success,
'message': '短信发送成功' if success else '短信发送失败',
'phone': phone,
'template_code': template_code
}
def _send_email(self, **kwargs) -> Dict:
"""
发送邮件任务
Args:
**kwargs: 包含 to, subject, body, html 等参数
Returns:
Dict: 执行结果
"""
from application.services import mail_svc
to = kwargs.get('to')
subject = kwargs.get('subject')
body = kwargs.get('body')
html = kwargs.get('html')
cc = kwargs.get('cc')
job_id = kwargs.get('job_id')
logger.info(f"发送邮件 [任务ID: {job_id}, 收件人: {to}, 主题: {subject}]")
success = mail_svc.send_mail(to=to, subject=subject, body=body, html=html, cc=cc)
return {
'success': success,
'message': '邮件发送成功' if success else '邮件发送失败',
'to': to,
'subject': subject
}
def _sync_data(self, **kwargs) -> Dict:
"""
数据同步任务
Args:
**kwargs: 包含 source, target, sync_type 等参数
Returns:
Dict: 执行结果
"""
source = kwargs.get('source')
target = kwargs.get('target')
sync_type = kwargs.get('sync_type')
job_id = kwargs.get('job_id')
logger.info(f"数据同步 [任务ID: {job_id}, 源: {source}, 目标: {target}, 类型: {sync_type}]")
# TODO: 调用实际的数据同步服务
return {
'success': True,
'message': '数据同步成功',
'source': source,
'target': target
}
# 创建全局执行器实例
job_executor = JobExecutor()
from src.modules.job.executor import * # noqa: F401,F403