7. Юридическое досье — структура моделей данных
Date: 2026-01-22
Status
Accepted
Context
Юридическое заключение содержит множество связанных данных: анализ договора, риски, критерии проверки, документы, проверки в системах.
Decision
Использовать нормализованную структуру с отдельными моделями:
LegalConclusion (главная)
├── ContractAnalysis (1:1)
├── RiskAssessment (1:N)
├── CheckCriteria (1:N) → CheckCriteriaTemplate
├── DocumentChecklist (1:N) → LegalDocumentType
├── Verification (1:N) → VerificationSystem
└── LegalConclusionVersion (1:N)Обоснование
- Нормализация — избежание дублирования данных справочников
- Гибкость — легко добавлять новые типы документов/критериев через админку
- Аудит — отслеживание изменений через версионирование
- Консистентность — использование существующих миксинов проекта
Альтернативы
- JSONField для всех данных — отвергнуто из-за сложности фильтрации и валидации
- Одна большая модель — отвергнуто из-за сложности поддержки и нарушения SRP
Consequences
- (+) Типизированные данные, валидация на уровне БД
- (+) Эффективные запросы с фильтрацией
- (+) Справочники редактируются без миграций
- (-) Больше таблиц в БД
- (-) Необходимость prefetch_related для оптимизации
Источник: backend/narmak_v2/app/legal_dossier/ADR.md (ADR-002)