Роли Сотрудников школы/Hosts:
- Учитель/Teacher -- участвует в образовательном процессе, непосредственно контактирует с Учениками. Является владельцем/owner событий/events, в которых участник/participant - Ученик/Student.
- Должностное лицо/Officer -- в соответствии с занимаемой должностью выполняет административные (директор, зам. по младшей школе, зам. по старшей школе) или вспомогательные функции (психолог, библиотекарь и пр.); Является владельцем/owner событий/events, в которых участник/participant - Гость/Guest.
- Администратор/Admin - лицо, управляющее профилями пользователей, их ролями; в случае необходимости вносит изменения в расписание пользователей, корректирует запись на прием к Сотрудникам школы, представленную в виде набора соответствующих событий/events: школьный секретарь, должностные лица - пользователи, обладающие соответствующими полномочиями. Эта роль предполагает участие в событиях/events написания контрольных работ в качестве владельца/owner, где участники/participants - Ученики/Students.
Роли Посетителей/Visitors:
- Ученик/Student -- посетитель, учащийся школы, который во время учебы постоянно контактирует с различными Учителями, получает у них консультации, пишет контрольные работы, выполняет другие действия, связанные с учебой. Является участником событий/events в качестве участника/participant
- Гость/Guest -- посетитель, который не является Сотрудником или Учеником, появляется в школе для решения отдельных задач: например, узнать об условиях приема, сдать нужные документы, получить зачетную книжку для ребенка и т.п. - чаще всего это родители учащихся. Является участником событий/events в качестве участника/participant
Событие/Event -- планируемая встреча участников: Принимающей стороны и Посетителя(ей). Имеет атрибуты даты, времени начала и конца, может иметь: 1 owner + 1..n participants
Типы событий:
| владелец/owner | участник/participant | количество участников |
|---|---|---|
| Учитель/Teacher | Ученик/Student | 1 |
| Должностное лицо/Officer | Гость/Guest | 1 |
| Администратор/Admin | Ученики/Students | n |
Pасписание/Schedule -- календарь, набор событий/events для каждого пользователя с разделением их в зависимости
от роли пользователей, выступающих в качестве Принимающей стороны.
График проведения контрольных работ/Schedule of tests -- расписание абстрактного дежурного
администратора. Составляется и поддерживается Администратором без указания конкретных исполнителей роли дежурного.
В отличие от расписаний Учителей, имеет множество Посетителей на каждое событие.
Ключ подтверждения/Verification key - используется для идентификации пользовательской учетной записи при установке постоянной
связи между учетной записью и профилем ученика или учителя, предоставлении пользователю соответствующих прав;
ключ генерируется Администратором, ученику или его родителю (опекуну, представителю) выдается при выдаче зачетной книжки.
Схема отношений между объектами

Учитель/Должностное лицо
как Учитель, я должен завести свою учетную запись (указав свой адрес электронной почты и пароль) и ввести специальный ключ подтверждения, который мне предоставит школа, чтобы получить доступ к моему профилю Учителя, заполненному Администратором, и соответствующим ролям.
как Учитель, я могу иметь или роль Учителя, или Должностного лица, или обе вместе; роль "Учитель" мне назначается в зависимости от наличия в моем профиле учебных предметов, которые я преподаю.
как Учитель, я могу иметь роль Должностного лица, если в моем профиле указана другая должность, кроме "Учитель".
как Учитель, я участвую в событиях в качестве владельца/owner, котрое может иметь 1 участника/participant - Ученика.
как Должностное лицо, я участвую в событиях в качестве владельца/owner, где есть 1 участник/participant - Гость.
как Учитель я могу просматривать список моих Событий, выбирать отдельные их них для просмотра, правки или удаления.
как Учитель, я назначаю время для проведения встреч на ближайшие 2 недели, учитывая текущую (альтернативно - 3), чтобы мои Ученики или мои Гости заранее могли спланировать свое посещение школы.
ВАРИАНТ, ПРЕДЛОЖЕННЫЙ ЗАКАЗЧИКОМ: как Учитель, до конца первой текущей (А1) рабочей недели (до 24-00 пятницы, выходные дни не учитываются) я могу внести плановые изменения в расписание той недели, что начинается за следующей (второй) - третьей текущей (А3). С наступлением субботы расписание второй текущей недели (А2) становится расписанием новой первой (В1), расписание текущей третьей недели (А3) перемещается в новую вторую (В2), расписание новой третьей недели В3 копируется из А3. То есть, происходит сдвиг с копированием расписания новой последней недели из предыдущей по схеме:
A1 -> _, A2 -> B1, A3 -> B2, A3 -> B3
АЛЬТЕРНАТИВНЫЙ ВАРИАНТ: как Учитель, я могу планировать расписание на 3 недели, не считая текущей, посетителям для резервирования доступны 2 недели, не считая текущей. Если мне нужно планово изменить расписание, я вношу изменения в 3-ю неделю до того, как она станет доступной для резервирования посетителями. С наступлением конца текущей рабочей недели (после 24-00 пятницы, выходные дни не учитываются) 3-я неделя становится 2-й, а расписание новой 3-й копируется из предыдущей. отличие этого варианта от предложенного заказчиком в том, что плановые изменения не затрагивают существующих записей посетителей на последнюю неделю
как Учитель, я могу отменить любое из моих Событий в экстренном случае: моей болезни, служебной необходимости или другой причины, внепланово изменяющей мой рабочий график.
Опционально чтобы предупредить записавшихся на отмененное событие Учеников или Гостей, на их почтовые ящики отправляются письма с уведомлением об отмене запланированной встречи, указанием причины и просьбой переназначить визит на другое удобное им время.
Опционально как Учитель, я хочу, чтобы записаться на прием ко мне можно было за какое то время, предшествующее предложенному в моем расписании времени начала События, чтобы у меня заранее было представление о предстоящих Событиях и посетителях в этот день или чтобы у меня было время подготовиться к проведению контрольной работы, если это расписание абстрактного дежурного администратора. Константу, определяющую количество часов до События, когда прекращается на него запись, можно вынести в файл настройки.
Опционально как Учитель, я могу просматривать, кто записан ко мне на прием в определенный день и определенное время; чтобы лучше организовать свой рабочий график в этот день, для каждой записи я хочу видеть:
- для событий Учителя - ФИО Ученика, класс в котором он учится, средства связи с ним (телефон, почтовый ящик);
- для событий Должностного лица - ФИО Гостя и средства связи с ним (телефон, почтовый ящик);
Опционально как Учитель я могу сформировать и сохранить список тех, кто записан ко мне на определенный день (ФИО Ученика, класс, предмет, средства связи), ранжировав посетителей по времени посещения, чтобы лучше организовать свое время в этот день.
Опционально как Учитель я хочу иметь возможность выбора (получать или не получать) уведомления на мой почтовый ящик в случае, если назначенная Учеником встреча будет отменена и это будет зафиксировано.
Администратор
профили
как Администратор, я создаю профили учителей и учеников, чтобы к ним можно было подключить пользовательские аккаунты.
как Администратор, я могу осуществлять поиск нужного мне профиля по базе данных, чтобы его просмотреть, отредактировать или удалить.
как Администратор, я хочу, чтобы страница профиля Гостя, Учителя или Ученика вверху страницы содержала указание имени, фамилии и отчества владельца профиля.
как Администратор, я могу генерировать ключи подтверждения (verification key), чтобы контролировать связь пользовательких учетных записей с профилями учителей и учеников школы.
как Администратор, я хочу, чтобы в случае, если к профилю нет привязанной учетной записи, пользователь по этому ключу мог найти соответствующий профиль и привязать к нему свою учетную запись.
Опционально как Администратор, я хочу, чтобы в случае, если к профилю уже есть привязанный аккаунт, повторная попытка использовать ключ вызывала сообщение об ошибке и препятствовала подтверждению нового аккаунта, чтобы нельзя было случайным образом получить доступ к профилю ученика или учителя вместе с соответствующими правами.
как Администратор, я хочу, чтобы в случае, если к профилю уже есть привязанный аккаунт пользователя, генерация нового ключа вела к сбросу прав пользователя, привязанного к профилю, и назначению ему прав Гостя, а к профилю можно было привязать другой гостевой аккаунт (например, с новым почтовым ящиком пользователя в случае утраты контроля над старым).
как Администратор, я хочу использовать сброс профилей путем перегенерации ключей и повторения процедуры подтверждения учетных записей, чтобы иметь возможность, не теряя введенные данные об учениках, обновлять их списки перед новым учебным годом.
как Администратор, после генерации нового ключа я могу распечатать ключ подтверждения вместе со всеми данными профиля, чтобы сверить правильность введенных данных пользователя и передать ему ключ для подтверждения учетной записи.
как Администратор, я могу редактировать профили пользователей, чтобы они соответствовали реальным данным пользователя.
как Администратор, я могу полностью удалить профиль, чтобы отвязать от него любую учетную запись в случаях увольнения учителей или выбытия учащихся из школы.
как Администратор, я могу подключиться к профилю любого Учителя и/или Должностного лица из своей учетной записи, чтобы оперировать событиями от их имени; подключение к профилю дает мне соответствующие права Учителя или Должностного лица.
Опционально как Администратор, я хочу, чтобы мое подключение к профилю Учителя временно блокировало подключение связанной учетной записи пользователя, во избежание ошибок, вызванных одновременным использованием данных, не предназначенных для многопоточного доступа.
Опционально как Администратор, я хочу, чтобы содержание моих действий от имени Учителя сохранялось в логах вместе с указанием моего логина и времени осуществления таких действий, чтобы можно было установить, кто именно осуществил те или другие действия.
учебные предметы
как Администратор, я создаю списки учебных предметов, чтобы можно было из них выбрать отдельные предметы для учителей и группы предметов для учеников.
как Администратор, я хочу, чтобы списки учебных предметов были сгруппированы по классам, чтобы соответствующие их группы включались в список предметов каждого ученика, обучающегося в том или другом классе.
как Администратор, я могу осуществлять просмотр групп учебных предметов по классам, чтобы отредактировать название отдельного предмета, удалить его из группы или добавить новый.
Опционально как Администратор, я хочу, чтобы каждый учебный предмет содержал указания, в каком семестре (в 1-м и/или 2-м) пишутся контрольные работы по этому предмету. Для предметов, по которым пишется одна контрольная работа в год, указывается только второй семестр.
Опционально как Администратор, я хочу, чтобы каждый учебный предмет содержал информацию об Учителе, к которому должен обращаться Ученик, когда такой учебный предмет находится в списке Ученика. Это же поле используется для передачи информации об Учителе, который проверяет контрольную работу, при записи на соответствующее событие.
Опционально как Администратор, я хочу, чтобы в целях дальнейшего расширения проекта каждый учебный предмет имел поля для хранения информации о следующих результатах Учеников по семестрам:
| семестр | допуск получен | оценка за устные ответы | оценка за контрольную | итоговая оценка |
|---|---|---|---|---|
| 1 | да/нет | 0-12 | 0-12 | 0-12 |
| 2 | да/нет | 0-12 | 0-12 | 0-12 |
| за год | 0-12 |
события и расписания
как Администратор я могу иметь возможность назначить приемное время для Учителя или Должностного лица школы на определенные дни и время аналогично тому, как это делают обладатели роли Учителя или Должностного лица.
как Администратор, я могу просматривать, кто записан к Учителям и Должностным лицам школы на прием в определенный день и время, чтобы помочь организовать их время в этот день.
как Администратор я хочу видеть список посетителей к любому Учителю или Должностному лицу школы на определенный день и время с указанием для каждого: имени и фамилии, средств связи (номер телефона и почтовый ящик). Я хочу иметь возможность сохранить такой список, чтобы в дальнейшем с ним работать вне системы.
как Администратор я могу редактировать расписание для любого Учителя и Должностного лица школы, чтобы об изменениях уведомить посетителей, на момент редактирования уже записанных к нему на прием. Мне потребуется указать причину отмены предварительной записи.
как Администратор, я могу создать события проведения контрольных работ, чтобы обозначить дни, время и количество мест, доступные для записи на написание контрольных работ.
как Администратор, в экстренных случаях я могу отменять события проведения контрольных работ на любую предстоящую дату и время.
Опционально как Администратор, я хочу, чтобы в случаях, когда на момент отмены события есть записи Учеников на написание контрольных работ, на их почтовые ящики были отправлены письма с соответствующим уведомлением.
как Администратор, я хочу видеть список Учеников на написание контрольных работ в определенный день и время. Для каждого Ученика, который записался на написание контрольных работ, я хочу видеть ФИО, класс в котором он учится, школьный предмет, семестр, за который он пишет контрольную, фамилию Учителя, которому передать написанную контрольную, средства связи (телефон, почтовый ящик).
Опционально как Администратор, я хочу иметь возможность сохранить список Учеников на написание контрольных работ в определенный день и время, чтобы в дальнейшем с ним работать вне системы.
Гость
как Гость, я могу войти в систему, зарегистрировавшись с адресом электронной почты, паролем, номером телефона.
Детализация
Нужны: адрес электронной почты, пароль, номер телефона.
Тест 1: пользователь не может ввести пароль меньше 6 и больше 20 символов.
Тест 2: пользователь не может ввести почтовый адрес, не являющийся таким.
Тест 3: пользователь должен иметь уникальный почтовый адрес в системе.
Тест 4: после регистрации пользователь может ввести ключ подтверждения, полученный в школе, который привяжет его учетную
запись к реальному ученику или учителю и активирует учетную запись.
Опционально Тест 5: если пользователь не ввел ключ подтверждения, после регистрации он должен получить на свой почтовый ящик
письмо о регистрации учетной записи со ссылкой, по которой нужно пройти для активации учетной записи,
где ему будет предложено ввести свои имя, отчество и фамилию.
Опционально Тест 6: пользователь не может войти в систему с правами Гостя, если учетная запись не активирована.
Опционально Тест 7: при успешном входе пользователь приветствуется текстом "Добро пожаловать, <Имя пользователя>!".
как Гость, при регистрации я могу ввести ключ подтверждения, чтобы с его помощью моя учетная запись была привязана к профилю Учителя или Ученика.
как Гость, я могу заполнить свой профиль данными о своем имени, отчестве и фамилии.
как Гость, я могу выбрать из списка нужное мне должностное лицо, чтобы просмотреть его расписание с указанием доступных для записи Событий.
как Гость, я могу выбрать доступное для записи Событие должностного лица, чтобы записаться на него в качестве участника. Я могу иметь не более одной записи к каждому должностному лицу.
как Гость, я могу отменить свою встречу, чтобы освободить время, зарезервированное за мной, для другого посетителя.
Опционально как Гость, я хочу получать уведомления на указанный мной почтовый ящик в случае, если моя встреча будет отменена.
Ученик
как Ученик, я должен привязать свой профиль при создании учетной записи или позже, введя ключ подтверждения, полученный в школе, чтобы получить соответствующие права.
как Ученик, я могу иметь возможность выбрать из списка Учителяей нужного мне, чтобы просмотреть его расписание.
как Ученик, я могу иметь возможность записаться к выбранному Учителю на консультацию. Я могу иметь не более одной записи к каждому Учителю.
как Ученик, я могу просмотреть график проведения контрольных работ с указанием доступного для записи количества мест.
как Ученик я могу записаться на доступное в графике проведения контрольных работ время (если есть свободные места), чтобы написать контрольную работу. Запись уменьшает количество свободных мест на 1. При записи я должен выбрать: школьный предмет, семестр, за который пишется контрольная, фамилию Учителя, которому передать написанную контрольную.
как Ученик, я могу просматривать назначенные мной встречи с указанием даты и времени События.
как Ученик, я могу просматривать назначенные мной записи на контрольную работу с указанием даты, времени, предмета, семестра и Учителя, которому будет направлена на проверку моя работа.
Опционально как Ученик, я могу отменить свою встречу с Учителем, чтобы освободить время, зарезервированное за мной, для другого посетителя. Освобожденный временной интервал становится доступен для выбора другим пользователем.
Опционально как Ученик я могу отменить свою запись на контрольную работу, чтобы освободить время, зарезервированное за мной, для другого посетителя. Отмена записи увеличивает количество свободных мест на выбранное время на 1.
Опционально как Ученик я хочу получать уведомления на указанный мной почтовый ящик в случае, если моя встреча с Учителем или запись на контрольную работу будет отменена.
Вопросы
- Продолжительность консультации (диапазоны, если значение вариативное)
- Общее время приема в один день (диапазон)
- Количество приемных дней в неделю (диапазон)
- Исключительно индивидуальная или групповая консультация?