Files
vidconf/docs/architecture/adr/000-template.md

55 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Шаблон ADR
## Заголовок
[Краткое название архитектурного решения]
## Статус
[PROPOSED | ACCEPTED | DEPRECATED | SUPERSEDED]
## Контекст
Опишите проблему, которая мотивирует это решение. Укажите значимые факты:
- Почему это решение нужно?
- Какие ограничения или требования применимы?
- Какие альтернативы рассматривались?
## Решение
Сформулируйте принятое решение чётко и кратко.
## Последствия
Опишите результаты и следствия этого решения:
- **Плюсы:** выгоды, улучшения
- **Минусы:** компромиссы, риски
- **Нейтрально:** изменения, которые не хороши и не плохи
## Ссылки
- Связанные ADR (если есть)
- Внешняя документация или стандарты
- Файлы кода, реализующие это решение
---
## Пример: ADR-001 Использование UUID как первичного ключа
### Статус
ACCEPTED
### Контекст
VidConf требует глобально уникальных идентификаторов для распределённых операций и будущего шардирования.
- Генерация UUID в PostgreSQL быстрая (через `gen_random_uuid()`)
- Не требует центральной нумерации
- Поддерживает репликацию без координации
### Решение
Все таблицы используют `UUID` (версия 4) как первичный ключ, генерируемый на сервере через `gen_random_uuid()`.
Исключения: `phrases` и `chat_messages` используют `BIGINT IDENTITY` для высокочастотных вставок.
### Последствия
- **Плюс:** уникальность на всех инстансах; не требует глобальной координации
- **Плюс:** поддерживает будущие распределённые архитектуры
- **Минус:** больший размер индекса (16 байт против 8 у BIGINT)
- **Нейтрально:** требует явной поддержки типа UUID в ORM
### Ссылки
- `backend/models/*.py` — все модели используют `Mapped[uuid.UUID]`
- `backend/alembic/versions/1e2e34a0cb06_initial_schema.py` — миграция