- Реструктуризация: 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
8.5 KiB
8.5 KiB
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 токены для безопасности
🌐 Доступ к приложению
👤 Демо пользователи
| Пользователь | Пароль | Роль | Описание |
|---|---|---|---|
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- Информация о блокировке
🔒 Важные принципы восстановления
❌ НЕ МЕНЯТЬ:
- Названия функций из оригинального
app.js - Тексты кнопок (на эстонском языке)
- HTML структуру из архива
- CSS классы и стили
- ID элементов
- Логику работы фронтенда
✅ ТОЛЬКО СОЗДАВАТЬ:
- Backend API endpoints под фронтенд вызовы
- Database схему для хранения данных
- Middleware для аутентификации
- Utility функции для бэкенда
🚀 Локальная разработка
# Установка зависимостей
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 история
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.
✅ Проверка качества восстановления
# ✅ Проверка оригинального 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
🎯 Следующие шаги
- Тестирование всех функций на соответствие оригиналу
- Проверка всех модальных окон
- Проверка генерации отчётов
- Deploy на Cloudflare Pages
Версия 4.0.0 - Полное восстановление из архива с соблюдением принципа "Архив - это основа" 🎉