from sqlalchemy.orm import Session from app.core.context import UserContext from app.models.audit import AuditLog from app.repositories.audit_repository import AuditRepository class AuditService: """审计服务:统一记录关键接口调用和资源访问。""" def __init__(self, db: Session) -> None: self.db = db self.repo = AuditRepository(db) def log( self, ctx: UserContext, action: str, resource_type: str, resource_id: str | None = None, session_id: int | None = None, metadata: dict | None = None, ) -> None: """审计写入:保存用户、动作、资源和请求元数据。""" self.repo.create( AuditLog( user_id=ctx.user_id, tenant_id=ctx.tenant_id, session_id=session_id, action=action, resource_type=resource_type, resource_id=resource_id, request_id=ctx.request_id, ip_address=ctx.ip_address, user_agent=ctx.user_agent, metadata_=metadata, ) )