- Реструктуризация: 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
6.7 KiB
6.7 KiB
AKNAPROFF Tootmine - Изменения v4.1.0
Дата: 28.11.2025
Версия: v4.1.0
🎯 Реализованные изменения
1. ✅ Логика блокировки изменена
Было: Проблемы блокировали поля при наличии текста ИЛИ галочек ошибок
Стало: Блокировка только по галочкам ошибок, текст - только пояснение
Технические детали:
- Убрана проверка
(record.problems && record.problems.trim())из условия hasProblems - Блокировка происходит только при установленных флагах ошибок
2. ✅ Система авторизации и ролей
Реализовано 3 уровня доступа:
| Роль | Доступ | Описание |
|---|---|---|
| guest | Только просмотр | Гость без входа - ничего не может изменять |
| user | Просмотр + Проблемы | Простой пользователь - может изменять только Problems |
| admin | Полный доступ | Администратор - может изменять всё |
Функциональность:
- При открытии без логина показывается форма входа
- Guest (гость) - только read-only просмотр
- User - может редактировать проблемы (текст + галочки ошибок)
- Admin - полный доступ ко всем функциям
Защищённые функции:
- toggleDate() - только admin
- toggleMaterialConfirmed() - только admin
- toggleMaterial2Confirmed() - только admin
- toggleWorksheetsStep() - только admin
- togglePricePaid() - только admin
- saveNotes() - только admin
- saveProblems() - user и admin
3. ✅ Кнопка сортировки по ID
Добавлена кнопка "ID" перед фильтрами:
- Клик 1: Сортировка по возрастанию (↑)
- Клик 2: Сортировка по убыванию (↓)
- Клик 3: Отключение сортировки
- Иконка показывает текущее состояние
📂 Измененные файлы
Для копирования на сервер:
# Frontend файлы (обязательно)
public/static/app.js
public/original.html
# Backend файлы (обязательно)
src/index.tsx # Если были изменения в API
src/original-html.ts # Embedded HTML
# Build файлы (создаются автоматически)
dist/_worker.js # Скомпилированный backend
🚀 Инструкция по обновлению на сервере
Вариант 1: Полное обновление (РЕКОМЕНДУЕТСЯ)
# 1. Остановить контейнер
docker-compose down
# 2. Скопировать файлы из локальной машины на сервер
scp public/static/app.js user@server:/path/to/webapp/public/static/
scp public/original.html user@server:/path/to/webapp/public/
scp src/original-html.ts user@server:/path/to/webapp/src/
# 3. Пересобрать на сервере
cd /path/to/webapp
npm run build
# 4. Запустить контейнер
docker-compose up -d --build
Вариант 2: Только frontend (БЕЗ ПЕРЕСБОРКИ)
Если НЕ ИЗМЕНЯЛСЯ backend (src/index.tsx), можно обновить только frontend:
# 1. Скопировать файлы
scp public/static/app.js user@server:/path/to/webapp/public/static/
scp public/original.html user@server:/path/to/webapp/public/
scp src/original-html.ts user@server:/path/to/webapp/src/
# 2. Пересобрать
docker-compose exec aknaproff-backend npm run build
# 3. Перезапустить (НЕ пересобирать образ)
docker-compose restart
Вариант 3: Копирование готового dist/
# 1. Собрать локально (уже сделано)
npm run build
# 2. Скопировать dist на сервер
scp dist/_worker.js user@server:/path/to/webapp/dist/
# 3. Перезапустить
docker-compose restart
⚠️ ВАЖНО: База данных
БД НЕ ИЗМЕНЯЛАСЬ! Миграции не требуются.
Все изменения только в логике приложения:
- Логика hasProblems (frontend)
- Система прав (frontend)
- Кнопка сортировки (frontend)
Данные в БД сохранятся полностью.
✅ Проверка после обновления
1. Проверить вход
# Открыть в браузере
http://your-server:8180
# Должна показаться форма входа
2. Тестировать роли
Guest (без входа):
- ❌ Не может ничего изменять
- ✅ Может только просматривать
User (простой пользователь):
- ✅ Может изменять Problems (текст + галочки)
- ❌ Не может изменять даты, notes, статусы
Admin:
- ✅ Может изменять всё
3. Проверить сортировку
- Нажать кнопку "ID" перед фильтрами
- Проверить сортировку: ↑ → ↓ → отключено
4. Проверить логику блокировки
- Поставить галочку ошибки без текста
- Поле VALMIS/VÄLJAS должно заблокироваться (красное)
- Убрать галочку, добавить только текст
- Поле VALMIS/VÄLJAS НЕ должно блокироваться
📊 Сводка изменений
| Компонент | Изменено | Тип |
|---|---|---|
| Логика hasProblems | ✅ | Frontend |
| Система авторизации | ✅ | Frontend |
| Проверки прав | ✅ | Frontend |
| Кнопка сортировки | ✅ | Frontend |
| База данных | ❌ | Не изменялась |
| Backend API | ❌ | Не изменялся |
🔧 Откат изменений (если что-то пошло не так)
# 1. Вернуться к предыдущей версии
git checkout v4.0.13
# 2. Пересобрать
npm run build
# 3. Перезапустить
docker-compose up -d --build
Готово к deployment! 🚀