Mezon Admin — полнофункциональная экосистема для автоматизации всех операционных, финансовых, кадровых и учебных процессов образовательных учреждений (школы, детские сады, учебные центры).
Проект состоит из более чем 300+ UI компонентов и 68,000+ строк кода TypeScript. Объединяет полноценную ERP-систему, LMS-платформу онлайн-обучения, модуль проверочных/контрольных работ с AI-оценкой, базу знаний с RAG по Google Drive, а также двустороннюю интеграцию с 1С:Предприятие и Telegram Bot.
- 🚀 Быстрый старт
- 🏗 Архитектура и стек технологий
- 📁 Структура проекта
- 🧩 Функциональные модули (ERP)
- 🎓 Учебная платформа (LMS)
- 📝 Платформа контрольных работ (Exams)
- 🤖 AI-экосистема и настройка API ключей
- 🗄 Баз�� данных и ролевая модель (RBAC)
- 📱 Адаптивный дизайн и Mobile-First
- 🔧 Деплой и скрипты
- Node.js:
v20.xили новее - npm:
v10.xили новее
git clone https://github.com/weissv/mezon_admin.git
cd mezon_admin
# Установка зависимостей фронтенда
cd frontend
npm install
# Установка зависимостей бэкенда (в отдельном окне)
cd ../backend
npm installСкопируйте примеры конфигураций:
# В папке frontend
cp frontend/.env.example frontend/.env.local
# В папке backend
cp backend/.env.example backend/.envfrontend/.env.local:
VITE_API_URL=http://localhost:4000/api
VITE_ENABLE_FIGMA_CAPTURE=true-
Запуск Бэкенда (API):
cd backend npx prisma generate npx prisma db push npm run devБэкенд будет доступен по адресу:
http://localhost:4000/api -
Запуск Фронтенда (Vite SPA):
cd frontend npm run devФронтенд будет доступен по адресу:
http://localhost:5173/
- Директор:
director@mezon.uz/admin123 - Завуч:
deputy@mezon.uz/admin123 - Учитель:
teacher@mezon.uz/admin123 - Бухгалтер:
accountant@mezon.uz/admin123 - Завхоз:
zavhoz@mezon.uz/admin123
Проект организован как монорепозит��рий со строгим разделением SPA-фронтенда и REST API бэкенда.
- Фреймворк: React 18, Vite, TypeScript
- Маршрутизация: React Router DOM v6 (раздельный роутинг ERP и
/lms) - Стилизация: Tailwind CSS 3.4, Vanilla CSS variables, Glassmorphic UI Tokens
- Иконки: Lucide React
- Формы и валидация: React Hook Form, Zod Resolvers (
zod),@hookform/resolvers - Аналитика и графики: Recharts
- Печать и экспорт:
jspdf,html2canvas,papaparse - Локализация:
i18next,react-i18next
- Core: Node.js 20+, Express.js, TypeScript
- База данных: PostgreSQL 17 с расширением
pgvector - ORM: Prisma ORM (v6) с 30+ связанными таблицами
- Безопасность & Авторизация: JWT (RBAC ролевая модель),
bcryptjs, CORS, Zod validation - ИИ Службы: Google Gemini Embeddings (
@google/generative-ai), Groq LLM Inference (openaiSDK for Groq) - Интеграции: Telegraf (Telegram Bot), node-cron, mammoth (DOCX parsing), xlsx
mezon_admin/
├── frontend/ # Frontend SPA (React + Vite)
│ ├── public/ # Статические ресурсы
│ ├── src/
│ │ ├── main.tsx # Точка входа для основного ERP приложения
│ │ ├── lms-main.tsx # Точка входа для LMS суб-приложения
│ │ ├── components/ # Переиспользуемые UI компоненты (Button, Input, Modal...)
│ │ │ ├── forms/ # Формы создания/редактирования объектов
│ │ │ └── ui/ # Базовые UI-атомы
│ │ ├── layouts/ # Макеты страниц (MainLayout, LmsLayout)
│ │ ├── pages/ # Страницы ERP системы (Dashboard, Contingent, Finances...)
│ │ │ └── lms/ # Страницы LMS (Courses, Lessons, Assignments...)
│ │ ├── features/ # Модульные фичи (onec integration, knowledge base...)
│ │ ├── context/ # React Contexts (AuthContext, PermissionsContext)
│ │ ├── lib/ # Клиентские утилиты, API-клиенты (api.ts, lms-api.ts)
│ │ └── types/ # TypeScript типы и интерфейсы (lms.ts, erp.ts...)
│ ├── index.html # HTML шаблон ERP
│ ├── lms.html # HTML шаблон LMS
│ ├── tailwind.config.js # Конфигурация Tailwind CSS
│ └── vite.config.js # Конфигурация сборки Vite (Multi-page build)
│
├── backend/ # Backend REST API (Node.js + Express)
│ ├── prisma/
│ │ ├── schema.prisma # Главная Prisma схема БД
│ │ ├── migrations/ # SQL миграции базы данных
│ │ └── seed.ts # Базовый сидер (пользователи, роли, структуры)
│ ├── src/
│ │ ├── controllers/ # Контроллеры запросов
│ │ ├── routes/ # API Маршруты (/api/lms, /api/exams, /api/1c...)
│ │ ├── services/ # Бизнес-логика (AiService, OneCService...)
│ │ ├── middleware/ # Auth, RBAC, Error handling middleware
│ │ └── index.ts # Точка входа сервера Express
│ └── .env.example
│
└── README.md # Единая документация проекта
- Дашборд аналитики (
/): Виджеты финансов, посещаемости, инцидентов безопасности, кадрового состава. Настройка расположения виджетов (PersonalizationPanel). - ��онтингент учеников и воспитанников (
/children): Личные дела, история переводов (ACTIVE,LEFT,ARCHIVED), справки, медицинские карты. - Группы и классы (
/groups): Распределение детей по классам (1-11 классы, ясли, дошкольные группы), закрепление классных руководителей. - Кадры и сотрудники (
/employees): Учёт персонала, штатное расписание, отслеживание медицинских книжек и трудовых договоров. - Финансы и Биллинг (
/finance): Движение денежных средств (ПКО/РКО), безналичные расчёты, ведение статей расходов/доходов, учёт договоров обучения (Student Contracts), автоматическая генерация ежемесячных инвойсов, отслеживание задолженностей учеников (индикаторы должниковbalance&hasDebt). - Склад и ТМЦ (
/inventory): Партионный учёт складов (Продукты, Хозтовары, Канцелярия), контроль сроков годности, приход/расход/списание. - Кухня и меню (
/menu,/recipes): Технологические карты блюд с расчётом КБЖУ, автоматическая генерация меню по возрастным категориям, списание ингредиентов. - Заявки на ремонт и обслуживание (
/maintenance): Электронный журнал заявок на ремонт/выдачу инвентаря. Состоя��ия: Создана → Утверждена (Директор) → В работе (Завхоз) → Выполнена. - Закупки (
/procurement): Плановые и оперативные заказы, база поставщиков, отслеживание статусов поставок. - Документооборот и Календарь (
/documents,/calendar): Шаблоны приказов, договоров, планирование мероприятий. - Безопасность (
/security): Журнал посещений, инциденты, проверки пожарной безопасности.
LMS встроен в единый репозиторий, но выделен в изоляцию с точкой входа /lms/ (lms.html & lms-main.tsx).
frontend/src/lms-main.tsx— отдельная точка входа LMS.frontend/src/layouts/LmsLayout.tsx— сайдбар и макет LMS.frontend/src/pages/lms/— страницы:LmsDashboard,LmsCoursesPage,LmsCourseDetailPage,LmsLessonPage,LmsMyLearningPage,LmsAssignmentsPage,LmsDiscussionsPage,LmsProgressPage,LmsCourseEditorPage.frontend/src/lib/lms-api.ts— API-клиент LMS.
GET /api/lms/courses— каталог курсов (фильтры: категория, уровень)GET /api/lms/courses/:id— детали курса с модулями и урокамиPOST /api/lms/courses/:id/enroll— запись на курсGET /api/lms/my-learning— мои активные и пройденные курсыPOST /api/lms/lessons/:id/progress— сохранение прогресса по урокуPOST /api/lms/assignments/:id/submit— сдача задания
location /lms {
alias /app/dist;
try_files $uri /lms.html;
}
location /lms/ {
alias /app/dist/;
try_files $uri /lms.html;
}Позволяет учителям и администрации создавать контрольные работы с поддержкой автоматической и AI-проверки.
SINGLE_CHOICE/MULTIPLE_CHOICE— автопроверкаTRUE_FALSE/TEXT_SHORT— автопроверкаTEXT_LONG— развёрнутый ответ (проверяется AI на основе рубрик)PROBLEM— математическая/экономическая задача (проверяется AI)
- Преподаватель публикует контрольную (
POST /api/exams/:id/publish). - Генерируется токен:
https://erp.mezon.uz/exam/:token. - Ученик открывает ссылку, выполняет работу с таймером и отправляет результат.
- AI в фоновом режиме оценивает развёрнутые ответы, выставляет
aiScoreи формирует текстовый отзывaiFeedback.
В систему встроены два ИИ-механизма:
- RAG База знаний (Google Drive + Gemini Embeddings): Крон-задача сканирует папку Google Drive, векторные представления (768d) сохраняются в PostgreSQL (
pgvector). ИИ-ассистент отвечает на вопросы сотрудников строго по внутренней документации. - AI Проверка контрольных (Groq API / Qwen3-32B): Мгновенная проверка открытых вопросов.
# Обязательный ключ для векторного поиска
GEMINI_API_KEY="AIzaSy..."
# Обязательный ключ для ИИ-ассистента и проверки работ
GROQ_API_KEY="gsk_..."
# Опционально: Google Drive RAG
GOOGLE_DRIVE_API_KEY=""
GOOGLE_DRIVE_FOLDER_ID=""Примечание: При отсутствии ключей система корректно переключается на обычный LIKE-поиск по тексту.
Схема описана в backend/prisma/schema.prisma (более 1600+ строк, 30+ таблиц).
DEVELOPER— полный доступ к отладке и настройкамDIRECTOR— административный и финансовый контрольDEPUTY— завуч, доступ к упреждению учебного процессаADMIN— системный администраторTEACHER— преподаватель (журнал, курсы LMS, контрольные)ACCOUNTANT— бухгалтер (финансы, ПКО/РКО, зарплата)ZAVHOZ— завхоз (склад, заявки на ремонт)
Все значимые изменения данных логгируются в модели ActionLog с сохранением JSON-дампа изменённых полей (payload).
Фронтенд спроектирован с поддержкой всех мобильных устройств и планшетов:
- Touch targets: Минимальный размер интерактивных элементов — 44px (предотвращает зум на iOS).
- Сайдбар: Адаптивное Slide-Out меню с эффектами Backdrop Blur (
SideNav.tsx). - Сетка: Используется утилита
.mezon-gridдля отзывчивой раскладки карточек (1 колонка на моб., 2-4 на десктопе). - Таблицы: Компонент
DataTableс встроенной горизонтальной прокруткой и липкими заголовками.
npm run dev # Локальный сервер Vite (Development)
npm run build # Оптимизированная сборка (TypeScript + Vite)
npm run lint # Проверка ESLint
npm run test # Витест юнит-тестыnpm run dev # Сервер разработки (ts-node-dev)
npm run build # Компиляция TypeScript в dist/
npm start # Запуск закомпилированного сервера
npm run test # Тестирование VitestАвторы: Mezon Development Team | Лицензия: ISC