UI и локальный backend MVP по ТЗ. Backend запускается без Docker на NestJS + Prisma + SQLite.
python3 -m http.server 4173Откройте http://localhost:4173. При первом открытии система показывает форму входа. Новый сотрудник выбирает роль и школу при регистрации; после входа доступен только контур своей школы.
Требуется Node.js 20+.
npm install
npm run server:install
cp server/.env.example server/.env
npm run server:devПри первом запуске сервер сам создаёт базу (data/dev.db), применяет миграции и сиды. Дополнительно доступно: npm run db:migrate, npm run seed.
API: http://localhost:3001.
Проверка backend без Docker: npm run server:test (unit-тесты + e2e smoke-сценарий). Для production-подобного локального запуска используйте npm run server:start.
Для проверки после seed доступны аккаунты: deputy@school101.local / demo1234 и teacher@school101.local / demo1234.
- роли учителя и единственного заместителя директора;
- обязательная привязка профиля к школе; заместитель директора видит только свой schoolId-контур;
- управление отчётными периодами: заместитель директора открывает новый период (предыдущий закрывается автоматически) и закрывает приём заявок; учитель видит список периодов и свою заявку в каждом;
- одна заявка на отчётный период;
- выбор критериев с фиксированной суммой выплаты; заместитель директора может изменить сумму в диапазоне
0…maxAmount, учитель только видит назначенное значение; - специальный критерий «Качество обученности»: учитель вводит процент
0…100, выплата выбирается по шкале его категории педагога:- учитель начальных классов:
80–100%— 2 000 ₽,65–79%— 1 000 ₽; - учитель-предметник:
70–100%— 2 000 ₽,50–69%— 1 000 ₽; - учитель ИЗО, музыки, технологии, физкультуры:
90–100%— 1 500 ₽; - категории настраиваются в конструкторе критериев; вне шкалы выплата не начисляется;
- учитель начальных классов:
- специальный критерий олимпиад: уровень, степень диплома, ФИО ученика и название олимпиады; можно добавить несколько учеников, начисление идёт только по полностью заполненным строкам;
- ручная загрузка подтверждающего файла;
- черновик → проверка → утверждение/отклонение с комментарием;
- повторная работа с отклонённой заявкой;
- очистка очереди: заместитель директора удаляет отклонённые и ошибочные заявки, учитель может удалить свою заявку и начать заново; утверждённые заявки остаются в реестре выплат;
- очередь проверки, критерии, сотрудники и реестр отчёта;
- фонд стимулирующих выплат периода: если сумма утверждённых заявок превышает фонд, применяется коэффициент
K = Фонд / Потенциальная сумма, итоговая выплата каждого сотрудника —потенциальная выплата × K; коэффициент учитывается в реестре и Excel-выгрузке; - Excel-выгрузка реестра утверждённых выплат: суммы по фактически утверждённым заявкам, а не лимитам критериев;
- локальное сохранение состояния и журнала действий в
localStorage(fallback при недоступном API).
SQLite хранится в data/dev.db, загруженные подтверждения — в storage/. История заявок и документы не удаляются автоматически.