first commit
Some checks failed
CI / backend (push) Has been cancelled
CI / frontend (push) Has been cancelled

This commit is contained in:
2026-07-23 02:38:05 +03:00
commit 8757bec8ac
335 changed files with 61527 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
# Шаблон 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` — миграция