diff --git a/memory-bank/decisions/pghistory-integration.md b/memory-bank/decisions/pghistory-integration.md new file mode 100644 index 00000000..5fd76f0a --- /dev/null +++ b/memory-bank/decisions/pghistory-integration.md @@ -0,0 +1,45 @@ +## Decision: Universal Model History via django-pghistory + +### Pattern Implementation +- **Tracking Method**: `pghistory.Snapshot()` applied to all concrete models +- **Inheritance Strategy**: Base model class with history tracking +- **Context Capture**: + ```python + # core/models.py + import pghistory + + class HistoricalModel(models.Model): + class Meta: + abstract = True + + @pghistory.track(pghistory.Snapshot()) + def save(self, *args, **kwargs): + return super().save(*args, **kwargs) + ``` + +### Integration Scope +1. **Model Layer**: + - All concrete models inherit from `HistoricalModel` + - Automatic event labeling: + ```python + @pghistory.track( + pghistory.Snapshot('model.create'), + pghistory.AfterInsert('model.update'), + pghistory.BeforeDelete('model.delete') + ) + ``` + +2. **Context Middleware**: + ```python + # core/middleware.py + pghistory.context(lambda request: { + 'user': str(request.user) if request.user.is_authenticated else None, + 'ip': request.META.get('REMOTE_ADDR'), + 'user_agent': request.META.get('HTTP_USER_AGENT'), + 'session_key': request.session.session_key + }) + ``` + +3. **Admin Integration**: + - Custom history view for Django Admin + - Version comparison interface \ No newline at end of file diff --git a/memory-bank/features/history-visualization.md b/memory-bank/features/history-visualization.md new file mode 100644 index 00000000..2b2f087a --- /dev/null +++ b/memory-bank/features/history-visualization.md @@ -0,0 +1,57 @@ +## Feature: Unified History Timeline (HTMX Integrated) + +### HTMX Template Pattern +```django +{# history/partials/history_timeline.html #} +