Исходное описание
« Я руковожу небольшой музыкальной школой: фортепиано, гитара, вокал. Ученики записываются на еженедельное занятие с преподавателем и временным слотом. На каждом занятии я отмечаю присутствующих; пропуск отрабатывается в течение триместра. Семьи платят за триместр. Я хочу видеть посещаемость недели, ожидающие отработки и просроченные платежи. »
План, утверждённый перед генерацией
Из этого описания Blueprint Maker предлагает план для проверки: пять сущностей — Ученик, Занятие, Временной слот, Посещение, Платёж — и их связи: ученик записан на занятие, у занятия есть преподаватель и слот, посещение связывает ученика с датированным уроком, платёж связывает семью с триместром.
Выведенные из текста статусы обозначены в плане: посещение — присутствует, отсутствует или отработано; платёж — оплачен, ожидается или просрочен. Три запрошенных показателя — посещаемость недели, ожидающие отработки, просроченные платежи — присутствуют ещё до всякой генерации. Это момент, чтобы добавить недостающее понятие (например, летние интенсивы); затем строится ровно то, что было утверждено.
- Сущности: Ученик, Занятие, Временной слот, Посещение, Платёж
- Связи: ученик → занятие; занятие → преподаватель, слот; посещение → ученик; платёж → ученик
- Статусы: присутствует / отсутствует / отработано; оплачен / ожидается / просрочен
- Показатели: посещаемость недели, отработки к погашению, просроченные платежи
Навигация: школа в пяти разделах
Боковая панель повторяет разделы: Панель, Ученики, Занятия, Посещения, Платежи. Список учеников показывает имя, занятие, преподавателя, слот — с мгновенным поиском: набрать «Mar» достаточно, чтобы найти Margaux и Martin, пока родитель звонит.
Список занятий фильтруется по дисциплине или преподавателю; список платежей — по статусу, а цветные бейджи довершают дело: оранжевый «Просрочен» не потеряется среди «Оплачен».
Карточка ученика, с посещениями и платежами
Карточка Margaux Lefèvre объединяет то, что тетрадь разбрасывает: её контакты и контакты семьи, её занятие (гитара, вторник 17:30, кликабельно к карточке занятия), затем две связанные истории — её посещения урок за уроком, с пропусками и их возможной отработкой, и её платежи триместр за триместром.
Вопрос «на каком этапе эта семья?» решается на одном экране: видно неотработанный пропуск 12 мая и оплаченный весенний триместр. Именно реляционная база связывает всё воедино — никакого ручного переноса из одной тетради в другую.
Лист посещаемости: тридцать секунд, не больше
Экран ввода посещаемости продуман для аудитории: открываешь слот дня, появляется список записанных, отмечаешь присутствует или отсутствует для каждого, сохраняешь. На телефоне или планшете перекличка укладывается в тридцать секунд — условие выживания любого листа посещаемости.
Зафиксированный пропуск автоматически питает счётчик ожидающих отработок; когда отработка состоялась, посещение переводят в статус «отработано», и счётчик снижается.
Панель: три вопроса директора
Панель отвечает на три ежедневных вопроса: посещаемость недели, число ожидающих отработок, сумму просроченных платежей — дополненные числом учеников по дисциплинам, рассчитанным по записям.
Каждая цифра — это запрос к базе: лист посещаемости, заполненный в 18:00, отражается в недельном показателе в 18:01. Разбивка по дисциплинам показывает с одного взгляда, где школа растёт.
Демоданные: живая школа
Pupitre поставляется заселённым: около пятидесяти учеников с правдоподобными именами, три дисциплины, преподаватели, слоты, распределённые по неделе, и главное — история: несколько месяцев посещений со своей долей пропусков, часть отработана, часть нет, платежи во всех трёх статусах.
Так приложение оценивается в крейсерском режиме, а не в первый день: списки полны, счётчики показывают реалистичные значения. Демоданные удаляются перед реальным запуском. Приложение живёт по своему выделенному URL, а его полный код экспортируется (ZIP, GitHub) — стандартный Next.js + Prisma.