- Реструктуризация: 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
9.4 KiB
9.4 KiB
AKNAPROFF Tootmine - CHANGELOG
v4.1.10 - 2025-12-31 (HOTFIX - КРИТИЧЕСКИЕ ИСПРАВЛЕНИЯ)
🔥 Критические исправления
1. Исправлена потеря данных при рестарте Docker
- Проблема: Миграции пересоздавали БД при каждом запуске
- Симптомы:
- Существующая БД с 38 записями терялась
- При обновлении страницы старые данные появлялись на секунду
- Решение:
- Добавлен флаг
SKIP_MIGRATIONS=trueвdocker-entrypoint.sh - Добавлена переменная
SKIP_MIGRATIONS: "true"вdocker-compose.yml - Миграции теперь пропускаются по умолчанию
- Используется готовая БД из
data/директории
- Добавлен флаг
- Файлы:
docker-entrypoint.sh,docker-compose.yml
2. Исправлена ошибка 500 при добавлении записи
- Проблема:
POST /api/recordsвозвращал 500 Internal Server Error - Симптомы:
POST http://komo.aknaproff.ee:8180/api/records [HTTP/1.1 500 Internal Server Error] Save record error: "Failed to create record" - Причина: Таблица
production_recordsтребует поляcreated_byиupdated_by, но они не передавались - Решение:
- Добавлены поля
created_byиupdated_byв INSERT запрос - Добавлено поле
updated_byв UPDATE запрос - Значения берутся из
userId(из JWT токена)
- Добавлены поля
- Файлы:
src/index.tsx,dist/_worker.js
3. Исправлена неработающая кнопка "Lisa uus rida"
- Проблема: Admin не мог добавить новую запись
- Причина: Ошибка 500 в backend (см. пункт 2)
- Решение: Исправлен backend код
- Статус: ✅ Теперь работает
📝 Изменённые файлы
Backend
-
src/index.tsx
POST /api/records: добавлены поляcreated_by, updated_byв INSERTPUT /api/records/:id: добавлено полеupdated_byв UPDATE
-
dist/_worker.js
- Пересобран с исправлениями
Docker
-
docker-entrypoint.sh
- Добавлен флаг
SKIP_MIGRATIONS(по умолчаниюtrue) - Добавлена логика проверки
SKIP_MIGRATIONS - При
SKIP_MIGRATIONS=trueмиграции пропускаются
- Добавлен флаг
-
docker-compose.yml
- Добавлена переменная
SKIP_MIGRATIONS: "true"
- Добавлена переменная
Frontend
- public/original.html
- Cache version обновлена:
app.js?v=4.1.10
- Cache version обновлена:
⚠️ Breaking Changes
Нет breaking changes. Полная обратная совместимость с v4.1.9.
🔄 Миграция с v4.1.9
- Остановить контейнер:
docker-compose down - КРИТИЧНО: Сделать бэкап:
cp -r data data.backup.$(date +%Y%m%d_%H%M%S) - Заменить файлы (НЕ трогать
data/) - Проверить
SKIP_MIGRATIONS: "true"вdocker-compose.yml - Запустить:
docker-compose up -d --build - Проверить данные: 38 записей должны остаться
✅ Тесты
- Данные сохраняются между рестартами
- Миграции пропускаются (логи: "Skipping migrations")
- POST /api/records работает (200 OK)
- Кнопка "Lisa uus rida" работает
- created_by/updated_by записываются в БД
- Admin может добавлять записи
- User НЕ может добавлять записи
- User НЕ может редактировать заметки
- User может редактировать проблемы
📦 Архивы
aknaproff_production_v4.1.10_arm.tar.gz(278 KB)aknaproff_production_v4.1.10_arm.zip(318 KB)
v4.1.9 - 2025-12-30
🔒 Исправлены права доступа
1. User теперь может только просматривать заметки (read-only)
- Проблема: User мог редактировать заметки
- Решение:
- Frontend:
openNotesModal()используетcanEditRecords()(только admin) - Frontend: кнопка "Salvesta" скрыта для user
- Backend:
PATCH /api/records/:id/notes→ Admin only (403 для user)
- Frontend:
- Статус: ✅ Исправлено
2. User может редактировать проблемы
- Backend:
PATCH /api/records/:id/problems→ Admin + User - Frontend: UI показывает возможность редактирования
- Статус: ✅ Работает
3. Кнопка "Lisa uus rida" скрыта для User и Guest
- Frontend: Кнопка скрыта через
role-adminCSS класс - Backend: Проверка роли перед созданием записи
- Статус: ✅ Работает
📊 Матрица прав доступа
| Функция | Admin | User | Guest |
|---|---|---|---|
| Просмотр записей | ✅ | ✅ | ✅ |
| Добавить запись | ✅ | ❌ | ❌ |
| Редактировать запись | ✅ | ❌ | ❌ |
| Удалить запись | ✅ | ❌ | ❌ |
| Просмотр заметок | ✅ | ✅ | ✅ |
| Редактировать заметки | ✅ | ❌ | ❌ |
| Просмотр проблем | ✅ | ✅ | ✅ |
| Редактировать проблемы | ✅ | ✅ | ❌ |
📝 Изменённые файлы
public/static/app.js: измененыopenNotesModal(),saveNotes()src/index.tsx: добавлены проверки роли в APIpublic/original.html: cache v4.1.9
v4.1.8 - 2025-12-30
🐛 Исправления
1. Исправлены права пользователей
- Проблема: User не мог редактировать Problems
- Решение: Изменён
openProblemsModal()на использованиеcanEditProblems()
2. Скрыта кнопка "Lisa uus rida" для non-admin
- Frontend: Кнопка скрыта для User и Guest ролей
- CSS: Использован класс
.role-admin
3. Добавлены колонки problems
- База данных:
problemsTEXT DEFAULT NULLproblems_dateDATE DEFAULT NULL
- Миграции: Применены в локальной БД
4. Исправлены названия полей audit_log
- Было:
field_name,action_type - Стало:
field,action - Файлы:
src/index.tsx
📦 Изменения БД
ALTER TABLE production_records ADD COLUMN problems TEXT DEFAULT NULL;
ALTER TABLE production_records ADD COLUMN problems_date DATE DEFAULT NULL;
v4.1.7 - 2025-12-30
🔐 Исправлена аутентификация
1. Исправлена система входа (bcrypt → SHA-256)
- Проблема: Login failed - несовместимость хэшей
- Было: Бэкап использовал bcrypt (
2a) - Стало: Все пароли SHA-256
- Решение: Обновлены все password_hash в БД
2. Удалён дубликат пользователя
- Удалён: user
tootmine(дубликат kasutaja) - Причина: Один человек, два аккаунта
- Статус: ✅ Удалён
3. Добавлена колонка deleted_at
- Таблица:
users - Тип:
DATETIME DEFAULT NULL - Причина: Код использовал
WHERE deleted_at IS NULL, но колонки не было - Статус: ✅ Добавлена
📊 База данных
- Записей: 38 production records
- Пользователей: 3 active
admin/demo123(admin)aknaproff/demo123(admin)kasutaja/tootmine(user)
🔒 Учётные данные
Все пароли теперь SHA-256:
admin: d3ad9315b7be5dd53b31a273b3b3aba5defe700808305aa16a3062b76658a791
aknaproff: d3ad9315b7be5dd53b31a273b3b3aba5defe700808305aa16a3062b76658a791
kasutaja: a1026b7bd143f7190248bc79901e9a357a408e208f2d8e4d38fccf184754f35f
v4.1.6 и ранее
См. файлы:
CHANGES_v4.1.6.mdCHANGES_v4.1.5.mdCHANGES_v4.1.4.mdCHANGES_v4.1.3.mdCHANGES_v4.1.2.mdCHANGES_v4.1.0.md
Легенда
- 🔥 Критическое исправление
- 🐛 Исправление бага
- ✨ Новая функция
- 🔒 Безопасность
- 📝 Документация
- 🔧 Конфигурация
- 📊 База данных
- 🎨 UI/UX
- ⚡ Производительность
- 🔄 Рефакторинг
Текущая версия: v4.1.10
Дата: 2025-12-31
Статус: Production Ready ✅
Архитектура: ARM64/AMD64 (Synology Compatible)