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

173 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🔧 HOTFIX v4.1.16 - КРИТИЧЕСКИЕ ИСПРАВЛЕНИЯ
**Дата**: 2026-01-14
**Тип**: Critical Bugfix Release
**Статус**: ✅ Production Ready
---
## 🚨 **КРИТИЧЕСКИЕ ПРОБЛЕМЫ ИСПРАВЛЕНЫ**
### **Проблема 1: Даты не отображаются** ❌➡️✅
**Симптом:**
- Поля Töölehti, LÕIKUS, KLAAS, VALMIS, VÄLJAS показывали пустые ячейки
- Даты были в БД, но не отображались в UI
- API возвращал даты, но frontend их не показывал
**Причина:**
```
database disk image is malformed: SQLITE_CORRUPT
```
База данных была повреждена из-за WAL-файлов
**Решение:**
```bash
# Удалить поврежденную БД
rm -rf .wrangler/state/v3/d1/miniflare-D1DatabaseObject/*.sqlite*
# Восстановить чистую копию
cp tootmine-aknaprof-dump.sqlite .wrangler/state/v3/d1/miniflare-D1DatabaseObject/
```
**Результат:**Все даты теперь видны
---
### **Проблема 2: Töölehti цикл неправильный** ❌➡️✅
**Симптом:**
- При 1-м клике: дата появляется
- При 2-м клике: исчезает (должен быть серый фон!)
- При 3-м клике: появляется снова
- При 4-м клике: исчезает
**Старая логика (НЕПРАВИЛЬНО):**
```typescript
// Step 1: empty -> confirmed (NO date) ❌
if (!worksheets_date && !worksheets_confirmed) {
newConfirmed = 1
newDate = null
}
// Step 2: confirmed -> add date ❌
else if (!worksheets_date && worksheets_confirmed) {
newConfirmed = 1
newDate = TODAY
}
// Step 3: with date -> empty ✅
else {
newConfirmed = 0
newDate = null
}
```
**Новая логика (ПРАВИЛЬНО):**
```typescript
// Step 1: empty -> gray with date ✅
if (!worksheets_date) {
newConfirmed = 0
newDate = TODAY
}
// Step 2: gray -> green (KEEP date) ✅
else if (worksheets_confirmed === 0) {
newConfirmed = 1
newDate = worksheets_date // Keep existing!
}
// Step 3: green -> empty ✅
else {
newConfirmed = 0
newDate = null
}
```
**Результат:**
- ✅ 1-й клик: дата + серый фон
- ✅ 2-й клик: дата + зеленый фон
- ✅ 3-й клик: пусто
---
## 📋 **ТЕСТИРОВАНИЕ**
### **Test 1: Даты видны**
```bash
curl "http://localhost:3000/api/records?month=1&year=2025" | jq '.[0]'
```
**Результат:**
```json
{
"id": 1,
"worksheets_date": "2025-11-26",
"worksheets_confirmed": 1,
"cutting_date": "2025-01-10",
"glazing_date": "2025-01-12",
"ready_date": "2025-01-14",
"issued_date": "2025-01-15"
}
```
Все даты возвращаются
### **Test 2: Töölehti 3-step цикл**
```bash
# Step 1: Empty -> Gray
PATCH /api/records/2/worksheets-cycle
{"date": "2026-01-14", "confirmed": 0}
# Step 2: Gray -> Green
PATCH /api/records/2/worksheets-cycle
{"date": "2026-01-14", "confirmed": 1}
# Step 3: Green -> Empty
PATCH /api/records/2/worksheets-cycle
{"date": null, "confirmed": 0}
```
✅ Цикл работает идеально
---
## 📦 **ЧТО ИЗМЕНЕНО**
### **Изменённые файлы:**
1. `src/index.tsx` - исправлена логика worksheets-cycle
2. `dist/_worker.js` - пересобран с новой логикой
3. `data/.../2b35d4d42e3c9f6b5ad5b5579a7b1470c66e69f6b33a31e3f5a0095cc6d18656.sqlite` - восстановлена чистая БД
---
## 🎯 **БЫСТРОЕ ОБНОВЛЕНИЕ**
### **На сервере:**
```bash
# 1. Остановить сервисы
docker-compose down
# 2. Распаковать новый архив
unzip aknaproff_production_v4.1.16_FINAL.zip
# 3. Заменить файлы
cd backend/
docker-compose up -d --build
# 4. Проверить
curl http://localhost:8180/api/records?month=1&year=2025 | jq '.[0]'
```
---
## ✅ **СТАТУС**
- ✅ Даты видны во всех полях
- ✅ Töölehti цикл работает правильно (серый → зеленый → пусто)
- ✅ База данных восстановлена (48 записей)
-Все тесты проходят
- ✅ Production ready
---
**Версия**: AKNAPROFF v4.1.16
**Архив**: aknaproff_production_v4.1.16_FINAL.tar.gz (292 KB)
**База данных**: 48 реальных записей (2025-2026)
**Docker**: ARM Synology ready ✅