"""审计日志 Celery 任务""" import traceback from app.core.celery_app import celery_app from app.core.database import SessionLocal @celery_app.task(queue='h3c_onu_ms', ignore_result=True) def create_audit_log_task( user_id: str, username: str, user_role: str, method: str, path: str, ip_address: str, user_agent: str, status_code: int, request_params: dict = None, response_data: dict = None, error_message: str = None, description: str = None, resource_id: str = None, resource_name: str = None, ): """异步写入审计日志,不阻塞主请求流程""" from app.services.audit_service import write_audit_log db = SessionLocal() try: write_audit_log( db, user_id=user_id, username=username, user_role=user_role, method=method, path=path, ip_address=ip_address, user_agent=user_agent, status_code=status_code, request_params=request_params, response_data=response_data, error_message=error_message, description=description, resource_id=resource_id, resource_name=resource_name, ) except Exception: pass # 审计日志失败不影响主业务 finally: db.close() @celery_app.task(queue='h3c_onu_ms') def cleanup_audit_logs_task(): """清理90天前的审计日志(每天执行)""" from app.services.audit_service import cleanup_old_logs db = SessionLocal() try: deleted = cleanup_old_logs(db) return {'success': True, 'deleted': deleted} except Exception as e: return {'success': False, 'error': str(e), 'traceback': traceback.format_exc()} finally: db.close()