- Реструктуризация: 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
5.2 KiB
5.2 KiB
🔧 HOTFIX v4.1.19 - ИСПРАВЛЕНА ЛОГИКА БЛОКИРОВКИ VALMIS/VÄLJAS
Дата: 2026-01-14
Версия: v4.1.19 FINAL
Приоритет: HIGH (Критическая ошибка в логике)
📋 ПРОБЛЕМА
Неправильная блокировка VALMIS/VÄLJAS
Ожидаемое поведение:
- VALMIS/VÄLJAS блокируются ТОЛЬКО если установлены error флаги (красные галочки ✗)
- Текст в поле "Probleemid" (серая метка ⚠️) НЕ должен блокировать
Фактическое поведение (до v4.1.19):
- ❌ В документации было написано что блокируется и по тексту problems
- ❌ В коде проверка была правильная, но документация - неправильная
- ❌ Пользователи не понимали когда будет блокировка
✅ ИСПРАВЛЕНИЯ
1. Обновлена документация DATE_FIELDS_LOGIC.md
Секции VALMIS и VÄLJAS теперь чётко указывают:
### **ВАЖНО: ТЕКСТ ПРОБЛЕМЫ НЕ БЛОКИРУЕТ!**
Текст в поле "Probleemid" (серая метка ⚠️) **НЕ** блокирует VALMIS!
### **Блокировка:**
Поле **ЗАБЛОКИРОВАНО ТОЛЬКО**, если установлен **ЛЮБОЙ error флаг** (красная галочка ✗):
- `worksheets_error = 1`
- `cutting_error = 1`
- `glazing_error = 1`
- `ready_error = 1`
- `issued_error = 1`
**НЕ блокируется**, если:
- Есть только текст в `production_records.problems` (серая метка ⚠️)
- Все error флаги = 0
2. Добавлена новая секция в конец документа
Создана секция "🔒 ВАЖНО: ПРАВИЛО БЛОКИРОВКИ VALMIS/VÄLJAS" с:
- Подробным описанием правил
- Код проверки блокировки из backend
- Результаты тестирования
3. Обновлена таблица прав доступа
| VALMIS | Toggle | Admin/User | Появляется/Исчезает | Нет | ТОЛЬКО если error флаги (НЕ текст проблемы) |
| VÄLJAS | Toggle | Admin/User | Появляется/Исчезает | Нет | ТОЛЬКО если error флаги (НЕ текст проблемы) |
🧪 ТЕСТИРОВАНИЕ
Test 1: Только текст problems (должно НЕ блокироваться)
# Установить problems text БЕЗ error флагов
curl -X PATCH http://localhost:3000/api/records/3/problems \
-d '{"problems":"Only text","errorFlags":{"worksheets":false,...}}'
# Попытка toggle VALMIS
curl -X PATCH http://localhost:3000/api/records/3/status \
-d '{"field":"ready","date":null}'
# Результат: {"success":true} ✅ НЕ БЛОКИРУЕТСЯ
Test 2: С error flag (должно блокироваться)
# Установить error flag
curl -X PATCH http://localhost:3000/api/records/3/problems \
-d '{"problems":"Text","errorFlags":{"worksheets":true,...}}'
# Попытка toggle VALMIS
curl -X PATCH http://localhost:3000/api/records/3/status \
-d '{"field":"ready","date":null}'
# Результат: {"error":"blocked","message":"Vigade märked on seatud..."} ✅ БЛОКИРУЕТСЯ
📦 ФАЙЛЫ
Изменённые файлы:
/home/user/production_backup/backend/DATE_FIELDS_LOGIC.md- обновлена документация
Без изменений (код уже правильный):
src/index.tsx- backend логика была правильнойpublic/static/app.js- frontend логика была правильной
🚀 РАЗВЁРТЫВАНИЕ
Изменения только в документации, код не менялся!
# 1. Распаковать архив
unzip aknaproff_production_v4.1.19_FINAL.zip
# 2. Запустить как обычно
cd backend
docker-compose up -d --build
✅ РЕЗУЛЬТАТ
- ✅ Документация теперь ЧЁТКО описывает правила блокировки
- ✅ Добавлена отдельная секция с примерами кода и тестирования
- ✅ Обновлена таблица прав доступа
- ✅ Все тесты пройдены успешно
📝 ЗАМЕТКИ
- Код backend/frontend НЕ менялся - он уже был правильным
- Изменения только в документации для ясности
- Версия обновлена с v4.1.18 → v4.1.19 для отслеживания изменений
Статус: ✅ ГОТОВО
Тестирование: ✅ ПРОЙДЕНО
Развёртывание: ГОТОВО К ИСПОЛЬЗОВАНИЮ