Skip to content

Latest commit

 

History

History

_6Reports

Лабораторная 6. Reports

Цель: реализация многослойной архитектуры.

Предметная область

Требуется реализовать механизм автоматизации создания отчётов о проделанной командой работе за определённый период разработки (далее - спринт). В команде один из сотрудников - тимлид, он составляет итоговый отчёт о проделанной работе команды в конце каждого спринта.

Ход событий:

  1. Сотрудник может добавлять новые задачи, вносить изменения в существующие, выполнять их.
  2. Сотрудник должен писать отчёт о проделанной работе за каждый спринт. Чтобы это сделать он использует список всех изменений, произведённых с момента создания предыдущего отчёта. В течение спринта сотрудник делает отчёт, прикрепляя к нему выполненные за этот период задачи.
  3. Тимлид в конце спринта пишет отчёт за всю команду, просматривая список выполненных задач и отчётов.

Сущности

  • Сотрудник. У сотрудника может быть руководитель и могут быть подчиненные.
  • Задача
  • Отчёт

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

Иерархия сотрудников представляется следующим образом: тимлид - сотрудник, руководитель - корень дерева, которому подчиняются другие сотрудники, которые могут иметь или не иметь подчинённых.

Задача

Задача может находиться в одном из трёх состояний:

  1. Open - задача создана, но к её выполнению ещё не приступили.
  2. Active - задача находится в процессе выполнения.
  3. Resolved - задача выполнена.

Сотрудник должен иметь возможность добавить комментарий к задаче. Все изменения (состояние/назначенный сотрудник/комментарий) должны фиксироваться во времени. При этом в системе должна быть возможность просмотреть, когда было сделано определённое изменение.

Система управления задачами должна поддерживать следующий функционал:

  • поиск задач по ID
  • поиск задач по времени создания/последнего изменения
  • поиск задач, закреплённых за определённым пользователем (сотрудником команды)
  • поиск задач, в которые пользователь вносил изменения
  • создание задачи, изменение её состояния, добавления к ней комментария, изменение назначенного за ней сотрудника
  • получение списка задач, которые назначены подчинённым определённого сотрудника

Отчёт

Необходимо реализовать возможность написания отчётов за весь спринт. В системе на каждый спринт создается драфт отчёта (то есть черновик, начальный проект отчёта за спринт, который в дальнейшем будет корректироваться), который заполняет каждый сотрудник. Для написания отчёта пользователю системы должна предоставляться возможность получить список всех своих задач за спринт, а также список отчётов своих подчиненных за спринт.

После окончания написания отчёта за спринт сотрудник должен сохранить его в системе. После этого отчёт считается завершённым, доступ на его редактирование закрывается. Тимлид должен иметь возможность видеть статус отчёта. Если отчёт завершённый, то он агрегирует в командный отчёт за спринт.

Интерфейс работы с пользователем

Слой представления должен быть реализовать в ввиде консольного клиента, все взаимодействие происходит через консоль. Требуется реализовать такой набор функционала:

  • Сотрудники
    • GetAll (с пагинацией)
    • GetById
    • Update
    • Delete
    • Create
  • Авторизация - выставление, что работа происходит от имени определенного сотрудника
  • Задачи
    • GetAll
    • поиск задач по ID
    • поиск задач по времени создания/последнего изменения
    • поиск задач, закреплённых за определённым пользователем (сотрудником команды)
    • поиск задач, в которые пользователь вносил изменения
    • создание задачи, изменение её состояния, добавления к ней комментария, изменение назначенного за ней сотрудника
    • получение списка задач, которые назначены подчинённым определённого сотрудника
    • Добавление задачи, обновление описания задачи
    • Изменение человека, который заасайнен
  • Недельный отчет (викли)
    • Создать викли отчет
    • Получить список задач за эту неделю
    • Получить список дейли отчетов подчиненных (для тех, кто написал. Отдельно список тех, кто еще не написал)
    • Добавление задачи в отчет
    • Обновление описания и состояния отчета

Детали реализации

В рамках лабораторной предполагается реализация многослойной архитектуры. В качестве UI слоя требуется реализация интерфейса для пользователя (консольного или иного на усмотрение пользователя). В качестве слоя данных требуется добавить хранение данных (рекомендуется использовать ORM).