40 lines
984 B
Python
40 lines
984 B
Python
"""
|
|
감사 로그 기록 헬퍼.
|
|
표준 action: faq.create|faq.update|faq.delete
|
|
doc.upload|doc.approve|doc.delete
|
|
user.restrict|user.unblock
|
|
crawler.approve|crawler.reject
|
|
config.update
|
|
"""
|
|
from typing import Optional
|
|
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from app.models.audit import AuditLog
|
|
|
|
|
|
async def log_action(
|
|
db: AsyncSession,
|
|
tenant_id: str,
|
|
actor_id: str,
|
|
actor_type: str, # 'admin_user' | 'system_admin'
|
|
action: str,
|
|
target_type: Optional[str] = None,
|
|
target_id: Optional[str] = None,
|
|
diff: Optional[dict] = None,
|
|
ip_address: Optional[str] = None,
|
|
) -> AuditLog:
|
|
entry = AuditLog(
|
|
tenant_id=tenant_id,
|
|
actor_id=actor_id,
|
|
actor_type=actor_type,
|
|
action=action,
|
|
target_type=target_type,
|
|
target_id=target_id,
|
|
diff=diff,
|
|
ip_address=ip_address,
|
|
)
|
|
db.add(entry)
|
|
await db.commit()
|
|
return entry
|