Files
X-Financial/server/src/app/api/v1/endpoints/audit_logs.py

47 lines
1.3 KiB
Python
Raw Normal View History

2026-05-11 03:51:24 +00:00
from __future__ import annotations
from typing import Annotated
from fastapi import APIRouter, Depends, Query
from sqlalchemy.orm import Session
2026-07-13 14:45:36 +08:00
from app.api.deps import get_db, require_platform_admin_user
2026-05-11 03:51:24 +00:00
from app.schemas.audit_log import AuditLogRead
from app.services.audit import AuditLogService
2026-07-13 14:45:36 +08:00
router = APIRouter(prefix="/audit-logs", dependencies=[Depends(require_platform_admin_user)])
2026-05-11 03:51:24 +00:00
DbSession = Annotated[Session, Depends(get_db)]
@router.get(
"",
response_model=list[AuditLogRead],
summary="查询审计日志",
description="按资源类型、资源 ID、动作类型和数量限制筛选审计日志。",
)
2026-05-11 03:51:24 +00:00
def list_audit_logs(
db: DbSession,
resource_type: Annotated[
str | None,
Query(description="资源类型筛选,例如 `rule`、`task`。"),
] = None,
resource_id: Annotated[
str | None,
Query(description="资源主键或业务编码筛选。"),
] = None,
action: Annotated[
str | None,
Query(description="动作名称筛选。"),
] = None,
limit: Annotated[
int,
Query(ge=1, le=200, description="返回日志上限。"),
] = 50,
2026-05-11 03:51:24 +00:00
) -> list[AuditLogRead]:
return AuditLogService(db).list_logs(
resource_type=resource_type,
resource_id=resource_id,
action=action,
limit=limit,
)