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
This commit is contained in:
Deploy Bot
2026-01-14 18:37:00 +02:00
parent 4898f5ec7f
commit 64403d6fd6
113 changed files with 19231 additions and 3084 deletions

199
CHANGES_v4.1.0.md Normal file
View File

@@ -0,0 +1,199 @@
# 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: Отключение сортировки
- Иконка показывает текущее состояние
---
## 📂 Измененные файлы
### Для копирования на сервер:
```bash
# 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: Полное обновление (РЕКОМЕНДУЕТСЯ)
```bash
# 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:
```bash
# 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/
```bash
# 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. Проверить вход
```bash
# Открыть в браузере
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 | ❌ | Не изменялся |
---
## 🔧 Откат изменений (если что-то пошло не так)
```bash
# 1. Вернуться к предыдущей версии
git checkout v4.0.13
# 2. Пересобрать
npm run build
# 3. Перезапустить
docker-compose up -d --build
```
---
**Готово к deployment!** 🚀