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
This commit is contained in:
193
DB_RESTORE_REPORT.md
Normal file
193
DB_RESTORE_REPORT.md
Normal file
@@ -0,0 +1,193 @@
|
||||
# 💾 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
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Технические детали
|
||||
|
||||
### Миграция БД
|
||||
Добавлена отсутствующая колонка:
|
||||
```sql
|
||||
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 сервере:
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
- **Sandbox URL**: https://3000-iabcqs9fpouqnd3allaai-82b888ba.sandbox.novita.ai
|
||||
- **Бекап файл**: /home/user/uploaded_files/backend/
|
||||
- **Старая БД**: /tmp/webapp_old.sqlite
|
||||
|
||||
---
|
||||
|
||||
**🎯 Итог**: Production данные успешно восстановлены, пользователь kasutaja добавлен, миграция применена, всё работает! ✅
|
||||
Reference in New Issue
Block a user