Files
Aknaproff/CHANGELOG.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

9.4 KiB
Raw Blame History

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 в INSERT
    • PUT /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

⚠️ Breaking Changes

Нет breaking changes. Полная обратная совместимость с v4.1.9.

🔄 Миграция с v4.1.9

  1. Остановить контейнер: docker-compose down
  2. КРИТИЧНО: Сделать бэкап: cp -r data data.backup.$(date +%Y%m%d_%H%M%S)
  3. Заменить файлы (НЕ трогать data/)
  4. Проверить SKIP_MIGRATIONS: "true" в docker-compose.yml
  5. Запустить: docker-compose up -d --build
  6. Проверить данные: 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)
  • Статус: Исправлено

2. User может редактировать проблемы

  • Backend: PATCH /api/records/:id/problems → Admin + User
  • Frontend: UI показывает возможность редактирования
  • Статус: Работает

3. Кнопка "Lisa uus rida" скрыта для User и Guest

  • Frontend: Кнопка скрыта через role-admin CSS класс
  • Backend: Проверка роли перед созданием записи
  • Статус: Работает

📊 Матрица прав доступа

Функция Admin User Guest
Просмотр записей
Добавить запись
Редактировать запись
Удалить запись
Просмотр заметок
Редактировать заметки
Просмотр проблем
Редактировать проблемы

📝 Изменённые файлы

  • public/static/app.js: изменены openNotesModal(), saveNotes()
  • src/index.tsx: добавлены проверки роли в API
  • public/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

  • База данных:
    • problems TEXT DEFAULT NULL
    • problems_date DATE 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.md
  • CHANGES_v4.1.5.md
  • CHANGES_v4.1.4.md
  • CHANGES_v4.1.3.md
  • CHANGES_v4.1.2.md
  • CHANGES_v4.1.0.md

Легенда

  • 🔥 Критическое исправление
  • 🐛 Исправление бага
  • Новая функция
  • 🔒 Безопасность
  • 📝 Документация
  • 🔧 Конфигурация
  • 📊 База данных
  • 🎨 UI/UX
  • Производительность
  • 🔄 Рефакторинг

Текущая версия: v4.1.10
Дата: 2025-12-31
Статус: Production Ready
Архитектура: ARM64/AMD64 (Synology Compatible)