feat: Implement a comprehensive audit log system with a dedicated dashboard page and backend API.
This commit is contained in:
52
backend/api/v1/modules/a76/audit_log/schemas.py
Normal file
52
backend/api/v1/modules/a76/audit_log/schemas.py
Normal file
@@ -0,0 +1,52 @@
|
||||
"""
|
||||
Audit Log Schemas
|
||||
"""
|
||||
|
||||
from typing import Optional, List, Any, Dict
|
||||
from datetime import date as date_type, time as time_type, datetime
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
# --- Response Schemas ---
|
||||
|
||||
class AuditLogResponse(BaseModel):
|
||||
"""
|
||||
Standard response showing the Legacy columns
|
||||
"""
|
||||
spec_id: int
|
||||
reference: str
|
||||
procedure: str
|
||||
movement: str
|
||||
username: str
|
||||
date: date_type
|
||||
time: time_type
|
||||
|
||||
# Modern extras
|
||||
timestamp: datetime
|
||||
system: str
|
||||
operation_type: Optional[str] = None
|
||||
table_name: Optional[str] = None
|
||||
record_id: Optional[str] = None
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
class AuditLogDetailResponse(AuditLogResponse):
|
||||
"""
|
||||
Detailed response including changed values
|
||||
"""
|
||||
old_values: Optional[Dict[str, Any]] = None
|
||||
new_values: Optional[Dict[str, Any]] = None
|
||||
changed_fields: Optional[List[str]] = None
|
||||
ip_address: Optional[str] = None
|
||||
execution_time_ms: Optional[int] = None
|
||||
|
||||
# --- List Response ---
|
||||
|
||||
class AuditLogListResponse(BaseModel):
|
||||
"""
|
||||
Paginated response
|
||||
"""
|
||||
data: List[AuditLogResponse]
|
||||
total: int
|
||||
page: int
|
||||
page_size: int
|
||||
Reference in New Issue
Block a user