gmao/app_new/core/models/audit.py
root 7d8d67a9d2
Some checks are pending
CI - Tests et Syntax / lint-and-test (push) Waiting to run
Trace les écritures et fiabilise les migrations
2026-08-14 19:01:11 +00:00

25 lines
1 KiB
Python

"""Journal append-only des opérations sensibles."""
from datetime import datetime, timezone
from ...extensions import db
class AuditLog(db.Model):
__tablename__ = "audit_logs"
id = db.Column(db.BigInteger, primary_key=True, autoincrement=True)
user_id = db.Column(db.Integer, db.ForeignKey("users.id", ondelete="SET NULL"), index=True)
username = db.Column(db.String(80), nullable=False, default="système")
action = db.Column(db.String(16), nullable=False)
endpoint = db.Column(db.String(160), nullable=True)
path = db.Column(db.String(500), nullable=False)
entity_type = db.Column(db.String(80), nullable=True, index=True)
entity_id = db.Column(db.String(80), nullable=True, index=True)
payload = db.Column(db.Text, nullable=True)
status_code = db.Column(db.SmallInteger, nullable=False)
ip_address = db.Column(db.String(64), nullable=True)
created_at = db.Column(
db.DateTime, nullable=False, index=True,
default=lambda: datetime.now(timezone.utc).replace(tzinfo=None),
)