- Реструктуризация: src/ разбит на middleware/, utils/, repositories/ (удалены), routes/ (удалены) - Добавлен src/original-html.ts — полный HTML с reportModal - Добавлен src/index.tsx.backup — React-компонент с reportModal - Миграции переименованы (0001_initial_schema.sql) - Добавлена миграция 0018 (удалена позже) - Docker: multi-stage build, wrangler.toml - Frontend: public/static/app.js + style.css - seed.sql добавлен - Документация: CHANGELOG, CHANGES_v4.1.0-4.1.9, PROJECT_STRUCTURE
7.2 KiB
7.2 KiB
💾 DB RESTORE REPORT - Production Data Merge
Дата: 2025-12-30
Файл бекапа: backup_30.12.25.zip
Версия: v4.1.6
Статус: ✅ Успешно выполнено
📋 Что было сделано
1. Анализ бекапа
Источник: /home/user/uploaded_files/backend/data/v3/d1/miniflare-D1DatabaseObject/
- Размер БД: 148 KB
- Количество записей: 38 (production данные)
- Пользователи в бекапе:
- admin (Administraator) - admin
- aknaproff (Aknaproff) - admin
- tootmine (Tootmine kasutaja) - user
2. Сохранение текущей БД
- Создан бекап текущей БД:
/tmp/webapp_old.sqlite(72 KB) - Количество записей: 7 (демо данные)
- Пользователи до восстановления:
- admin (Admin Test) - admin
- aknaproff (AKNAPROFF) - admin
- kasutaja (Kasutaja) - user
3. Восстановление production данных
Действия:
- Остановлен PM2
- Очищена директория
.wrangler/state/v3/d1/miniflare-D1DatabaseObject/ - Скопирована БД из бекапа
- Применена миграция: добавлена колонка
deleted_at(soft delete support)
4. Слияние пользователей
Добавлен пользователь из v4.1.3:
- kasutaja (Kasutaja) - user role
- Password hash:
a1026b7bd143f7190248bc79901e9a357a408e208f2d8e4d38fccf184754f35f(password: tootmine)
Итоговые пользователи (4 в БД):
- admin (Administraator) - admin
- aknaproff (Aknaproff) - admin
- tootmine (Tootmine kasutaja) - user
- kasutaja (Kasutaja) - user
📊 Итоговое состояние БД
Production Records
- Количество записей: 38
- Данные: Реальные production данные с production сервера
- Месяцы: Январь 2025, другие месяцы
- Годы: 2025, 2026
Пользователи (4)
| ID | Username | Full Name | Role | Password |
|---|---|---|---|---|
| 1 | admin | Administraator | admin | demo123 |
| 2 | aknaproff | Aknaproff | admin | demo123 |
| 3 | tootmine | Tootmine kasutaja | user | tootmine |
| 4 | kasutaja | Kasutaja | user | tootmine |
Примечание: Оба пользователя "tootmine" и "kasutaja" имеют одинаковый пароль "tootmine" и роль "user".
✅ Проверка после восстановления
API Endpoints
- ✅ GET /api/years →
[2025, 2026] - ✅ GET /api/records?month=1&year=2025 → 5 записей
- ✅ HTTP Status: 200 OK
Браузер
- ✅ Страница загружается
- ✅ Форма логина работает
- ✅ Таблица показывает данные
- ✅ Консоль: 0 критических ошибок
- ✅ Все функции работают (проверено визуально)
Вход в систему
Проверены все 4 пользователя:
- ✅ admin / demo123 → admin права
- ✅ aknaproff / demo123 → admin права
- ✅ tootmine / tootmine → user права
- ✅ kasutaja / tootmine → user права
- ✅ Guest (без входа) → read-only
🔧 Технические детали
Миграция БД
Добавлена отсутствующая колонка:
ALTER TABLE production_records ADD COLUMN deleted_at DATETIME DEFAULT NULL;
Проблема: Бекап БД был сделан до применения миграции soft delete (v4.0.6).
Решение: Добавлена колонка deleted_at для поддержки soft delete.
Структура БД
- production_records: 38 записей (+ deleted_at column)
- status_checkboxes: связанные данные
- users: 4 пользователя
- audit_log: история изменений
📝 Изменения в коде
Код не изменялся!
Все изменения только в БД:
- Восстановлены production данные
- Добавлен пользователь kasutaja
- Добавлена колонка deleted_at
Текущая версия: v4.1.6
- Все визуальные индикаторы работают (Probleemid, Märkused)
- Все правки v4.1.0 - v4.1.6 применены
- Код полностью совместим с production данными
🔐 Учётные данные
Администраторы (полный доступ)
- Username:
admin| Password:demo123 - Username:
aknaproff| Password:demo123
Обычные пользователи (просмотр + проблемы)
- Username:
tootmine| Password:tootmine - Username:
kasutaja| Password:tootmine
Гость (только просмотр)
- Кнопка: "Vaata ainult" (без входа)
🚀 Deployment на production
Для применения на production сервере:
# 1. Создать бекап текущей production БД (КРИТИЧНО!)
docker-compose exec aknaproff-backend sh -c "
cp /data/v3/d1/miniflare-D1DatabaseObject/*.sqlite /data/backup_before_merge.sqlite
"
# 2. Скопировать восстановленную БД из sandbox
scp /home/user/webapp/.wrangler/state/v3/d1/miniflare-D1DatabaseObject/2b35d4d42e3c9f6b5ad5b5579a7b1470c66e69f6b33a31e3f5a0095cc6d18656.sqlite \
user@server:/tmp/webapp_merged.sqlite
# 3. На сервере остановить docker
docker-compose down
# 4. Заменить БД файл
mv /path/to/data/v3/d1/miniflare-D1DatabaseObject/*.sqlite \
/path/to/data/v3/d1/miniflare-D1DatabaseObject/webapp.sqlite.bak
cp /tmp/webapp_merged.sqlite \
/path/to/data/v3/d1/miniflare-D1DatabaseObject/d6ce1225f7b3fe02cb9b5e87aebb58192679c5a5fb4dd87257777cedd013c0cc.sqlite
# 5. Запустить docker
docker-compose up -d
# 6. Проверить
curl http://localhost:8180/api/years
curl "http://localhost:8180/api/records?month=1&year=2025"
💡 Важные примечания
- Данные: Теперь в БД 38 реальных production записей вместо 7 демо записей
- Пользователи: Добавлен kasutaja (4-й пользователь), остальные из production бекапа
- Совместимость: Код v4.1.6 полностью совместим с production данными
- Миграция: Добавлена колонка deleted_at для поддержки soft delete
- Бекап: Старая БД сохранена в
/tmp/webapp_old.sqlite
🔗 URLs
- Sandbox URL: https://3000-iabcqs9fpouqnd3allaai-82b888ba.sandbox.novita.ai
- Бекап файл: /home/user/uploaded_files/backend/
- Старая БД: /tmp/webapp_old.sqlite
🎯 Итог: Production данные успешно восстановлены, пользователь kasutaja добавлен, миграция применена, всё работает! ✅