Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Образовательная система — MVP стимулирующих выплат

UI и локальный backend MVP по ТЗ. Backend запускается без Docker на NestJS + Prisma + SQLite.

Запуск

python3 -m http.server 4173

Откройте http://localhost:4173. При первом открытии система показывает форму входа. Новый сотрудник выбирает роль и школу при регистрации; после входа доступен только контур своей школы.

Backend без Docker

Требуется 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/. История заявок и документы не удаляются автоматически.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages