"""
shared/mixins/timestamped.py
=============================
Mixin que agrega campos de auditoría automáticos a cualquier modelo.
Todos los modelos del proyecto deben heredar de este para tener
trazabilidad de creación y modificación sin repetir código.

Uso:
    class MiModelo(TimestampedModel):
        nombre = models.CharField(...)
"""

from django.db import models


class TimestampedModel(models.Model):
    """
    Modelo abstracto base que provee:
      - created_at: fecha/hora de creación (auto)
      - updated_at: fecha/hora de última modificación (auto)
    
    Al ser abstracto, no genera tabla propia — cada subclase agrega
    estas columnas a su propia tabla.
    """

    created_at = models.DateTimeField(
        auto_now_add=True,
        verbose_name='Creado en',
        help_text='Fecha y hora de creación del registro (UTC)'
    )
    updated_at = models.DateTimeField(
        auto_now=True,
        verbose_name='Modificado en',
        help_text='Fecha y hora de la última modificación (UTC)'
    )

    class Meta:
        abstract = True
        # Ordenar por más reciente por defecto en todas las subclases
        ordering = ['-created_at']
