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:
199
CHANGES_v4.1.0.md
Normal file
199
CHANGES_v4.1.0.md
Normal 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!** 🚀
|
||||
Reference in New Issue
Block a user