CRM для школы программирования
Введение
Была реализована небольшая система для учебного центра. Она заменяет таблицы и заметки: в одном месте хранятся ученики, курсы, расписание, посещаемость и оплаты. Бэкенд построен как REST API, а интерфейс — в виде SPA.
Что умеет система
- Расписание — недельный календарь занятий с навигацией по неделям.
- Ученики — карточки с контактами, данными, история посещений и оплаты.
- Курсы — расписание, по которому генерируются занятия.
- Балансы — остаток занятий у каждого ученика по каждому курсу.
- Платежи — история оплат, привязанная к балансу.
- Посещаемость — отметки на занятии в один клик.
Курсы и расписание
При создании курса достаточно указать название, цвет, время начала и окончания уроков, а также дни недели. Система сама создаст занятия: от даты, на 7 дней предшествующей созданию курса, и на год вперёд.
Если расписание изменилось, занятия не нужно править по одному. Метод переноса сдвигает дату, меняет время начала и продолжительность сразу для всех занятий курса, начиная с выбранной даты.
Ученики и балансы
Баланс ученика привязан к конкретному курсу: для пары «ученик + курс» существует только один баланс. В нём хранится число оставшихся занятий, которое можно задать вручную или изменить на нужную величину.
Платежи ведутся отдельно и не меняют баланс автоматически. Это независимые сущности: оплату можно записать в историю, а количество занятий скорректировать так, как договорились с учеником.
Посещаемость
Открыв занятие, можно сразу увидеть всех учеников курса, их балансы, платежи и отметить присутствие. Для отметки доступны три типа:
default— ученик присутствовал, списывается одно занятие.respect— пропуск по уважительной причине, занятие не списывается.disrespect— пропуск без уважительной причины, списывается одно занятие.
Кнопка «Отметить всех» позволяет за один клик отметить присутствующими тех, кто ещё не отмечен. Занятие можно отменить, оставив комментарий и тему.
Одна отметка на пару «ученик + занятие». Чтобы изменить тип посещения, нужно снять отметку и поставить новую.
REST API
Весь функционал доступен через API: запросы и ответы — JSON, а сообщения об ошибках русифицированы. Реализована JWT-авторизация.
Основные группы методов
/student— ученики, включая список вместе с балансами/course— курсы с автоматической генерацией занятий/lesson— занятия, фильтр по периоду и массовый перенос/balance— балансы по ученику, курсу или паре/payment— платежи по балансам/attendance— отметки посещаемости
Заключение
CRM закрывает основные потребности школы-заказчика: кто учится, на какие курсы ходит, сколько занятий осталось и кто присутствовал. Простое API и понятная структура данных позволяют расширять систему под свои задачи — от уведомлений родителям до отчётов по оплатам.