Skip to content

Latest commit

 

History

History
311 lines (236 loc) · 32.5 KB

File metadata and controls

311 lines (236 loc) · 32.5 KB

Структура и содержание MVP

Пользовательские роли и События

Роли Сотрудников школы/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 - используется для идентификации пользовательской учетной записи при установке постоянной связи между учетной записью и профилем ученика или учителя, предоставлении пользователю соответствующих прав; ключ генерируется Администратором, ученику или его родителю (опекуну, представителю) выдается при выдаче зачетной книжки.

Схема отношений между объектами Схема отношений объектов MVP

Пользовательские истории

Учитель/Должностное лицо

как Учитель, я должен завести свою учетную запись (указав свой адрес электронной почты и пароль) и ввести специальный ключ подтверждения, который мне предоставит школа, чтобы получить доступ к моему профилю Учителя, заполненному Администратором, и соответствующим ролям.

как Учитель, я могу иметь или роль Учителя, или Должностного лица, или обе вместе; роль "Учитель" мне назначается в зависимости от наличия в моем профиле учебных предметов, которые я преподаю.

как Учитель, я могу иметь роль Должностного лица, если в моем профиле указана другая должность, кроме "Учитель".

как Учитель, я участвую в событиях в качестве владельца/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.

Опционально как Ученик я хочу получать уведомления на указанный мной почтовый ящик в случае, если моя встреча с Учителем или запись на контрольную работу будет отменена.

Вопросы

  1. Продолжительность консультации (диапазоны, если значение вариативное)
  2. Общее время приема в один день (диапазон)
  3. Количество приемных дней в неделю (диапазон)
  4. Исключительно индивидуальная или групповая консультация?