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:
Deploy Bot
2026-01-14 18:37:00 +02:00
parent 4898f5ec7f
commit 64403d6fd6
113 changed files with 19231 additions and 3084 deletions

193
DB_RESTORE_REPORT.md Normal file
View 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 добавлен, миграция применена, всё работает! ✅