62 lines
1.8 KiB
Python
62 lines
1.8 KiB
Python
"""审计日志 Celery 任务"""
|
|
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': '审计日志任务失败', 'error_type': type(e).__name__}
|
|
finally:
|
|
db.close()
|