Skip to content

Repository files navigation

Хлебокомбинат — Mini App (мессенджер Макс)

Система приёма заявок для ~300 клиентов (юр. лиц): индивидуальные цены из 1С, Excel-выгрузка, панель менеджеров, механики вовлечения.

Документация внешнего обмена: docs/1c-integration.md.

Структура

Папка Описание Dev-порт
backend/ Node.js + Express + Prisma (REST API) 3001
miniapp/ React + Vite + Tailwind (Mini App клиента) 5173
dashboard/ React + Vite + Tailwind (панель менеджера) 5174

Единая точка входа (порт 3001)

Backend раздаёт собранные фронтенды — всё доступно на одном порту:

  • http://localhost:3001/ → Mini App (клиент)
  • http://localhost:3001/manager → панель менеджера
  • http://localhost:3001/api → REST API
# собрать фронтенды, затем backend отдаёт их сам
cd miniapp;   npm run build
cd ..\dashboard; npm run build
cd ..\backend;   npm run dev      # всё на http://localhost:3001

Раздельные dev-порты (5173/5174) нужны только для горячей перезагрузки во время разработки фронтенда. Для демо/прод используйте единый порт выше.

Стек

  • Backend: Express, Prisma (ORM), JWT, ExcelJS, node-cron, BullMQ (заглушка)
  • БД: SQLite (локально) → PostgreSQL при деплое (см. ниже)
  • Frontend: React 18, Vite, Tailwind CSS v4, React Query, Zustand (корзина)

Запуск (локально)

1. Backend

cd backend
npm install
npx prisma migrate dev    # создаёт SQLite-базу
node prisma/seed.js       # тестовые данные
npm run dev               # http://localhost:3001

2. Mini App (клиент)

cd miniapp
npm install
npm run dev               # http://localhost:5173

3. Дашборд (менеджер)

cd dashboard
npm install
npm run dev               # http://localhost:5174/manager/login

Тестовые данные (после seed)

  • Админ: admin@bakery.ru / admin123
  • Менеджер: manager@bakery.ru / manager123
  • Клиенты: ООО «Магнит» (ИНН 7725123456), ИП Иванов (ИНН 5018123456)

Реализовано (Фаза 1 + основа 2–4)

  • Авторизация: Макс Mini App (HMAC-подпись) + JWT, логин менеджера
  • Каталог с индивидуальными ценами клиента
  • Корзина (Zustand + localStorage) и создание заказа
  • Система лояльности (начисление/списание, лимит 20%) — параметры в orderService.js
  • Панель менеджера: заказы (фильтры, смена статуса), клиенты, синхронизация
  • Excel-выгрузка (лист «Заказы» + «Сводка по клиентам») через ExcelJS
  • Уведомления через Max Bot API (заглушка при пустом MAX_BOT_TOKEN)
  • Cron: синхронизация цен (каждые 2 ч), напоминания по паттерну (09:00)

Конфигурация (backend/.env)

DATABASE_URL="file:./dev.db"   # локально SQLite
JWT_SECRET="..."
MAX_BOT_TOKEN=""               # токен бота Макс (для пушей и авторизации)
PORT=3001

Переход на PostgreSQL (для прод)

  1. В backend/prisma/schema.prisma заменить provider = "sqlite""postgresql", вернуть типы @db.Decimal, @db.Text, Json @db.JsonB (см. историю git).
  2. DATABASE_URL="postgresql://..." в .env.
  3. docker compose up -d (поднимает Postgres + Redis), затем npx prisma migrate dev.

Открытые вопросы (см. план)

Формат интеграции с 1С, возврат заказов в 1С, дедлайн приёма заказов, роли менеджеров, онбординг клиентов, фото товаров, логика даты доставки.

Production pilot

Актуальный путь к боевому пилоту описан в docs/production-pilot.md.

Ключевые изменения pilot-контура:

  • база данных: PostgreSQL;
  • деплой: Docker Compose + nginx;
  • первый обмен с 1С: ручное скачивание XML из заказа;
  • цены: ежедневная загрузка файла 1С и привязка клиента к ценовой категории;
  • demo seed запрещён в production, первого администратора создаёт npm run admin:create.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages