from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from ..core.database import get_db from ..core.response_code import ResponseCode from ..schemas.comprehensive_data import DataResponse import logging from ..services.daily import DailyDataService from ..services.checkpoint import CheckpointService from ..services.settlement_data import SettlementDataService from ..utils.scheduler import scheduled_get_max_nyid_by_point_id # 导入全局定时任务调度器实例和目标任务函数 from ..utils.scheduler import task_scheduler, scheduled_get_max_nyid_by_point_id router = APIRouter(prefix="/test", tags=["测试"]) logger = logging.getLogger(__name__) @router.get("/trigger_max_nyid_task", response_model=DataResponse) def trigger_max_nyid_task(db: Session = Depends(get_db)): """接口:直接触发调度器中的 scheduled_get_max_nyid_by_point_id 定时任务""" try: # 触发任务执行 # task_scheduler.run_job(scheduled_get_max_nyid_by_point_id.__name__) # settlement = SettlementDataService() # # 获取模型实例列表 # checkpoint_instances = settlement.get_by_nyid(db, nyid="4993546") # # 转为字典列表(核心修正) # checkpoint_data = [instance.__dict__ for instance in checkpoint_instances] # # 清理 SQLAlchemy 内部属性(可选,避免多余字段) # checkpoint_data = [{k: v for k, v in item.items() if not k.startswith('_sa_')} for item in checkpoint_data] # return DataResponse( # code=ResponseCode.SUCCESS, # message="定时任务触发执行成功!任务已开始处理(具体结果查看系统日志)", # total=len(checkpoint_data), # 修正为实际数据长度 # data=checkpoint_data # ) # scheduled_get_max_nyid_by_point_id() daily_service = DailyDataService() daily_data = daily_service.get_daily_data_by_account(db,account_id=1) return DataResponse( code=ResponseCode.SUCCESS, message="定时任务触发执行成功!任务已开始处理(具体结果查看系统日志)", total=1, data=daily_data ) except Exception as e: logger.error(f"接口触发定时任务失败:{str(e)}", exc_info=True) return DataResponse( code=ResponseCode.QUERY_FAILED, message=f"定时任务触发失败:{str(e)}", total=0, data={} )