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

215 lines
8.5 KiB
Markdown
Raw Permalink 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.
# AKNAPROFF Tootmine
**Версия:** 4.0.4 (28.11.2025)
**Статус:** ✅ Production Ready - **Все функции работают, включая клики по ячейкам**
## 📋 Обзор проекта
Система управления производством окон для компании AKNAPROFF. Веб-приложение построено на Hono (Cloudflare Workers) с базой данных D1 SQLite.
## 🎯 Стратегия восстановления v4.0.0
### ✅ ОСНОВА проекта (НЕ ТРОГАЕМ):
- **Original HTML** (1223 строки) из архива `aknaproff.zip`
- **Original app.js** (73KB, 2079 строк) - все функции, стили, логика
- **Original all.min.css** (100KB) - FontAwesome и стили
- **Original button texts** - "Lisa uus rida", "Tühista", etc.
- **Original function names** - `openModal()`, `closeModal()`, etc.
- **Original IDs** - `recordModal`, `settingsForm`, etc.
### 🔧 ЧТО ВОССТАНАВЛИВАЕМ:
- **Backend API** (Hono) - создан под фронтенд вызовы из оригинального app.js
- **D1 Database** - схема БД для хранения данных
- **Authentication** - JWT токены для безопасности
## 🌐 Доступ к приложению
- **Sandbox URL**: https://3000-iabcqs9fpouqnd3allaai-82b888ba.sandbox.novita.ai
## 👤 Демо пользователи
| Пользователь | Пароль | Роль | Описание |
|--------------|--------|------|----------|
| `admin` | `demo123` | Admin | Для разработчика |
| `aknaproff` | `demo123` | Admin | Для клиента |
## ✨ Основные функции
### Реализовано (v4.0.0):
-**100% соответствие оригинальному HTML из архива**
- ✅ Управление производственными записями (CRUD)
- ✅ Статусные чекбоксы для этапов производства
- ✅ Система флагов ошибок с блокировкой полей
- ✅ Модальные окна (7 шт): Login, Record, Notes, Problems, Blocked, Settings, Report
- ✅ Быстрый поиск по: Klient, Tüüp, Pakkum. Nr, Töö Nr
- ✅ Сортировка по колонкам
- ✅ Фильтрация по месяцу и году
- ✅ Итоговые суммы (Kogus, Hind)
- ✅ JWT аутентификация
- ✅ Audit log для изменений
- ✅ Soft delete записей
- ✅ Генерация отчётов (Master, Accountant)
## 🏗️ Архитектура
### Frontend (из архива):
```
public/
├── static/
│ ├── app.js # Original 73KB, 2079 lines
│ └── all.min.css # Original 100KB FontAwesome
└── original.html # Original 1223 lines (встроен в TypeScript)
```
### Backend (Hono + D1):
```
src/
├── index.tsx # Main Hono app (26 API endpoints)
├── original-html.ts # Embedded original HTML
├── middleware/
│ └── auth.ts # JWT middleware
└── utils/
└── auth.ts # Password hashing, token generation
```
### Database (D1):
```
migrations/
└── 0001_initial_schema.sql # 4 tables:
# - users
# - production_records
# - status_checkboxes
# - audit_log
```
## 📡 API Endpoints (26)
### Authentication (2):
- `POST /api/auth/login` - Вход в систему
- `PATCH /api/users/profile` - Изменение профиля
### Data Management (8):
- `GET /api/years` - Список годов для фильтров
- `GET /api/records` - Список записей (с фильтрами)
- `POST /api/records` - Создание записи
- `GET /api/records/:id` - Получение записи
- `PATCH /api/records/:id` - Обновление записи
- `DELETE /api/records/:id` - Удаление записи
- `PATCH /api/records/:id/material-confirmed` - Подтверждение материала
- `PATCH /api/records/:id/material2-confirmed` - Подтверждение материала-2
### Status Management (6):
- `PATCH /api/records/:id/worksheets-cycle` - Цикл статуса "Töölehti"
- `PATCH /api/records/:id/status` - Обновление даты статуса
- `PATCH /api/records/:id/notes` - Сохранение заметок
- `PATCH /api/records/:id/problems` - Сохранение проблем
- `PATCH /api/records/:id/price-paid` - Подтверждение оплаты
- `PATCH /api/records/:id/blocked` - Информация о блокировке
## 🔒 Важные принципы восстановления
### ❌ НЕ МЕНЯТЬ:
1. Названия функций из оригинального `app.js`
2. Тексты кнопок (на эстонском языке)
3. HTML структуру из архива
4. CSS классы и стили
5. ID элементов
6. Логику работы фронтенда
### ✅ ТОЛЬКО СОЗДАВАТЬ:
1. Backend API endpoints под фронтенд вызовы
2. Database схему для хранения данных
3. Middleware для аутентификации
4. Utility функции для бэкенда
## 🚀 Локальная разработка
```bash
# Установка зависимостей
cd /home/user/webapp
npm install
# База данных
npm run db:migrate:local # Применить миграции
npm run db:seed # Загрузить тестовые данные
# Разработка
npm run build # Сборка проекта
pm2 start ecosystem.config.cjs # Запуск сервера
pm2 logs webapp --nostream # Просмотр логов
# Тестирование
curl http://localhost:3000/api/years
curl http://localhost:3000/api/records?month=1&year=2025
```
## 📝 Git история
```bash
6d22b04 - FULL RESTORE: Use original HTML/CSS/JS from archive as base (v4.0.0)
cc7b3d4 - Update README to v3.20.8
013be72 - Fix: Replace openAddRecordModal() with openModal()
f45b5a3 - Fix D1 database binding and API /api/years endpoint (v3.20.7)
[Earlier commits...]
```
## 🎨 Оригинальные стили и функции
### Кнопки (Original):
- "Lisa uus rida" - Добавить новую строку (`openModal()`)
- "Tühista" - Отмена (`closeModal()`)
- "Salvesta" - Сохранить
- "Kustuta" - Удалить
### Модальные окна (Original):
- `loginModal` - Вход администратора
- `recordModal` - Добавление/редактирование записи
- `notesModal` - Заметки к записи
- `problemsModal` - Проблемы производства
- `blockedFieldModal` - Уведомление о блокировке
- `settingsModal` - Настройки пользователя
- `reportModal` - Генерация отчётов
### Функции (Original from app.js):
- `openModal()` - Открыть форму добавления
- `closeModal()` - Закрыть форму
- `toggleDate()` - Переключить дату статуса
- `toggleWorksheetsStep()` - Цикл статусов "Töölehti"
- `openNotesModal()`, `openProblemsModal()`, etc.
## ✅ Проверка качества восстановления
```bash
# ✅ Проверка оригинального HTML
curl http://localhost:3000 | grep "Lisa uus rida"
curl http://localhost:3000 | grep 'onclick="openModal()"'
# ✅ Проверка API
curl http://localhost:3000/api/years
# {"years":[2024,2025,2026]}
# ✅ Проверка модальных окон
curl http://localhost:3000 | grep -o 'id="recordModal"'
curl http://localhost:3000 | grep -o 'id="settingsForm"'
```
## 📦 Технологии
- **Frontend**: Original HTML/CSS/JS from archive
- **Backend**: Hono (Cloudflare Workers)
- **Database**: Cloudflare D1 (SQLite)
- **Auth**: JWT tokens
- **Styles**: TailwindCSS + FontAwesome
- **Deployment**: Cloudflare Pages
## 🎯 Следующие шаги
1. Тестирование всех функций на соответствие оригиналу
2. Проверка всех модальных окон
3. Проверка генерации отчётов
4. Deploy на Cloudflare Pages
---
**Версия 4.0.0** - Полное восстановление из архива с соблюдением принципа "Архив - это основа" 🎉