Files
Aknaproff/DB_RESTORE_REPORT.md
Deploy Bot 64403d6fd6 v4.1.21: Реструктуризация проекта для Synology ARM
- Реструктуризация: 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
2026-01-14 18:37:00 +02:00

7.2 KiB
Raw Blame History

💾 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 данных

Действия:

  1. Остановлен PM2
  2. Очищена директория .wrangler/state/v3/d1/miniflare-D1DatabaseObject/
  3. Скопирована БД из бекапа
  4. Применена миграция: добавлена колонка deleted_at (soft delete support)

4. Слияние пользователей

Добавлен пользователь из v4.1.3:

  • kasutaja (Kasutaja) - user role
  • Password hash: a1026b7bd143f7190248bc79901e9a357a408e208f2d8e4d38fccf184754f35f (password: tootmine)

Итоговые пользователи (4 в БД):

  1. admin (Administraator) - admin
  2. aknaproff (Aknaproff) - admin
  3. tootmine (Tootmine kasutaja) - user
  4. 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"

💡 Важные примечания

  1. Данные: Теперь в БД 38 реальных production записей вместо 7 демо записей
  2. Пользователи: Добавлен kasutaja (4-й пользователь), остальные из production бекапа
  3. Совместимость: Код v4.1.6 полностью совместим с production данными
  4. Миграция: Добавлена колонка deleted_at для поддержки soft delete
  5. Бекап: Старая БД сохранена в /tmp/webapp_old.sqlite

🔗 URLs


🎯 Итог: Production данные успешно восстановлены, пользователь kasutaja добавлен, миграция применена, всё работает!