Deploy Bot 4898f5ec7f v4.1.9: Начальная производственная версия
- Полный backend на Hono + TypeScript
- SQLite база данных с 38 записями
- 3 пользователя: admin, aknaproff, kasutaja
- Модальное окно reportModal (4 шага)
- Docker конфигурация для Synology ARM
- Все миграции (0001-0017)
- Frontend: vanilla HTML/JS (original.html)
2025-12-31 12:00:00 +02:00

Aknaproff Backend Restoration

This repository contains the Cloudflare Pages/Workers backend implementation required to restore the Aknaproff production tracker service to its historical state (v3.20.8) while keeping the provided HTML/JS/CSS frontend unchanged.

Project Summary

  • Goal: полностью восстановить API, миграции и бизнес-логику для фронтенда AKNAPROFF Tootmine.
  • Текущая внутренняя версия: v1.0.0 (см. docs/CHECKLIST.md).
  • Технологии: Hono (TypeScript), Cloudflare Pages + Workers, D1 (SQLite), Wrangler, Vite.
  • Документация:

Структура проекта

backend/
├── docs/                 # TECH_SPEC.md, CHECKLIST.md и вспомогательные заметки
├── migrations/           # Миграции D1 (0001 …)
├── public/               # Статический фронтенд (HTML, CSS, JS)
├── src/                  # Код Hono (TypeScript)
├── seed.sql              # Начальные данные
├── package.json          # Скрипты npm и зависимости
├── wrangler.toml         # Конфигурация Wrangler (Pages + D1)
└── README.md             # Этот файл

Быстрый старт

npm install
npm run db:migrate:local
npm run db:seed
npm run dev
  • Dev-сервер доступен по адресу http://localhost:5173 (Vite) или через Wrangler Pages dev (см. ниже).

Сборка и предпросмотр

npm run build           # Сборка статики и worker-кода (dist/)
npm run preview         # Wrangler Pages dev с собранным билдом

Деплой

npm run deploy          # npm run build && wrangler pages deploy dist

Перед деплоем убедитесь, что настроены Cloudflare credentials (setup_cloudflare_api_key) и определён cloudflare_project_name.

Запуск в Docker / Synology

Эти файлы входят в пакет backend и готовы к импорту в Docker UI:

  • Dockerfile
  • docker-compose.yml
  • .dockerignore
  • docker-entrypoint.sh
  • wrangler.toml

Как использовать на Synology (через Docker UI без консоли)

  1. Скопируйте папку backend/ (или подготовленный архив) на NAS Synology.
  2. В Container ManagerProjectsCreate укажите docker-compose.yml (можно выбрать напрямую или загрузить .tar.gz, содержащий compose-файл).
  3. Отредактируйте переменные окружения при необходимости:
    • PORT — внешний порт сервиса (по умолчанию 3000).
    • SEED_DATA — поставьте true только на первом запуске, если хотите автоматически выполнить seed.sql.
    • PERSIST_PATH — путь хранения локальной базы (по умолчанию /data).
    • WRANGLER_SEND_METRICS — необязательно, по умолчанию отключено.
  4. После старта контейнер выполнит полный цикл автоматически (весь конфиг берёт из /app/wrangler.toml, поэтому ошибка «Pages does not support custom paths for the Wrangler configuration file» больше не появляется):
    • применит миграции D1 через wrangler d1 migrations apply --persist-to /data;
    • один раз (при SEED_DATA=true) импортирует seed.sql и создаст маркер /data/.seeded;
    • запустит wrangler pages dev dist --local на порту PORT.
  5. Интерфейс будет доступен по адресу http://<IP Synology>:<открытый порт>.
  6. После успешного запуска установите SEED_DATA=false и перезапустите проект (чтобы повторное наполнение не выполнялось).

Том d1-data в docker-compose.yml монтируется в /data, поэтому локальная SQLite-база (D1 local) и маркер /.seeded сохраняются между перезапусками.

Работа с миграциями и данными

npm run db:migrate:local  # Применить все миграции локально
npm run db:migrate:prod   # Применить миграции в продакшн D1
npm run db:seed           # Заселить тестовые данные (локально)

Тестовые учётные записи

Пользователь Пароль Роль
admin demo123 Admin
aknaproff demo123 Admin
tootmine demo123 Пользователь (только просмотр)

API Overview

Method & Path Описание Требует токен
POST /api/auth/login Логин, выдача токена Нет
GET /api/years Список годов с данными Опционально
GET /api/records Получение заявок (фильтры month, year) Опционально
POST /api/records Создание заявки Admin
PUT /api/records/:id Обновление заявки Admin
DELETE /api/records/:id Soft delete заявки Admin
PATCH /api/records/:id/status Тоггл дат (MAT/LÕI/KLA/VAL/VÄL) Да
PATCH /api/records/:id/material-confirmed Подтверждение MAT-1 Admin
PATCH /api/records/:id/material2-confirmed Подтверждение MAT-2 Admin
PATCH /api/records/:id/worksheets-cycle 3-стадийный цикл töölehti Да
PATCH /api/records/:id/notes Заметки + дата Да
PATCH /api/records/:id/problems Проблемы + error flags Да
PATCH /api/records/:id/price-paid Тоггл оплаты/арве Admin
GET /api/reports/master Агрегированные данные по месяцам Опционально
GET /api/reports/accountant Детализированный отчёт (нужны month, year) Опционально
PATCH /api/users/profile Смена ФИО и пароля Да

Запуск dev-сервера (Wrangler Pages)

npm run build
fuser -k 3000/tcp 2>/dev/null || true
pm2 start npm --name aknaproff-backend -- run dev:sandbox
# остановить: pm2 delete aknaproff-backend

Dev-сервер будет доступен по http://127.0.0.1:3000 (или через выданный URL GetServiceUrl). Логи: pm2 logs aknaproff-backend --nostream.

Контроль прогресса

Каждый завершённый чекпоинт фиксируется в docs/CHECKLIST.md с обновлением версии (v0.x.0). После CP9 проект готов к финальному деплою.

Полезные ссылки

Description
Form Generator
Readme 2.3 MiB
Languages
PHP 48.4%
Blade 22.9%
Vue 17%
TypeScript 6.4%
HTML 5.1%