# Progress — миграция `001_initial` (историческая заметка) *Актуальное описание продукта и сценариев: [../docs/PROJECT_STATUS.md](../docs/PROJECT_STATUS.md).* # Progress - Шаг 2: Проектирование базы данных ## Статус: ✅ ЗАВЕРШЕНО ### Выполненные задачи: 1. ✅ **Создание SQL-миграции** (`backend/src/db/migrations/001_initial.sql`) - Созданы все таблицы: - `departments` (Подразделения) - `users` (Пользователи) - `tests` (Тесты) - `test_versions` (Версии тестов) - `questions` (Вопросы) - `answer_options` (Варианты ответов) - `test_assignments` (Назначения тестов) - `test_assignment_targets` (Получатели назначений) - `test_attempts` (Попытки прохождения) - `user_answers` (Ответы пользователя) - `settings` (Настройки) - Созданы ENUM типы: `user_role`, `target_type`, `attempt_status` - Созданы индексы для оптимизации запросов - Добавлены начальные данные в таблицу `settings` 2. ✅ **Создание скрипта миграции** (`backend/src/db/migrate.js`) - Поддержка выполнения SQL-миграций - Отслеживание выполненных миграций в таблице `migrations` - Транзакционное выполнение миграций - Логирование процесса выполнения 3. ✅ **Создание db.js** (`backend/src/db/db.js`) - Подключение к PostgreSQL с использованием пула соединений - Функции: `query()`, `transaction()`, `getClient()` - Обработка ошибок пула - Логирование запросов в режиме разработки 4. ✅ **Применение миграций к БД** - Миграция `001_initial.sql` успешно выполнена - Все таблицы созданы в базе данных `clinic_tests` ### Созданные файлы: ``` backend/src/db/ ├── migrations/ │ └── 001_initial.sql # SQL-миграция с созданием всех таблиц ├── migrate.js # Скрипт для выполнения миграций └── db.js # Модуль подключения к PostgreSQL ``` ### Дата выполнения: 2026-03-21