Skip to main content

ТЗ на модуль Техника

СТРУКТУРА ТЕХНИЧЕСКОГО ЗАДАНИЯ МОДУЛЯ ТЕХНИКА

Оглавление

1. Общие положения

  • 1.1. Термины и определения (ссылка на общий глоссарий)
  • 1.2. Цель и назначение модуля техника
  • 1.3. Описание рабочих процессов техника
  • 1.4. Модель предметной области (ссылка на общую модель)
  • 1.5. Ролевая модель техника

2. Требования к функциональным блокам модуля техника

2.1. Блок «Управление рабочими сменами»

2.2. Блок «Управление маршрутами»

2.3. Блок «Выполнение заказов»

2.4. Блок «Взаимодействие с клиентами»

2.5. Блок «Мониторинг оборудования»

2.6. Блок «Навигация и геолокация»

2.7. Блок «Отчетность и история»

3. Требования к интерфейсу мобильного приложения

4. Требования к геолокации и автоматизации

5. Требования к безопасности и разграничению доступа

6. Интеграционные требования


СПИСОК ФУНКЦИЙ МОДУЛЯ ТЕХНИКА

2.1. Блок «Управление рабочими сменами»

  • UC001: Просмотр расписания рабочих смен
  • UC002: Начало рабочей смены
  • UC003: Завершение рабочей смены
  • UC004: Просмотр информации о текущей смене
  • UC005: Просмотр истории рабочих смен

2.2. Блок «Управление маршрутами»

  • UC006: Получение и просмотр назначенного маршрута
  • UC007: Принятие назначенного маршрута
  • UC008: Отклонение маршрута с указанием причины
  • UC009: Просмотр детальной информации маршрута
  • UC010: Отслеживание прогресса выполнения маршрута

2.3. Блок «Выполнение заказов»

  • UC011: Просмотр списка заказов в маршруте
  • UC012: Просмотр детальной информации заказа
  • UC013: Подтверждение выезда к клиенту ("Выехал")
  • UC014: Автоматическая отметка прибытия (по GPS)
  • UC015: Начало процесса зарядки с фотофиксацией
  • UC016: Мониторинг процесса зарядки в реальном времени
  • UC017: Завершение зарядки с фотоотчетом
  • UC018: Сообщение о проблемах при выполнении заказа
  • UC019: Просмотр истории выполненных заказов

2.4. Блок «Взаимодействие с клиентами»

  • UC020: Просмотр контактной информации клиента (без номера телефона)
  • UC021: Отправка сообщений в чат с клиентом
  • UC022: Получение сообщений от клиента
  • UC023: Просмотр истории переписки с клиентом по заказу

2.5. Блок «Мониторинг оборудования»

  • UC024: Просмотр статуса сервисного ТС
  • UC025: Просмотр статуса зарядной станции
  • UC026: Создание заявки на неисправность ТС
  • UC027: Создание заявки на неисправность зарядной станции
  • UC028: Просмотр истории заявок на неисправности
  • UC029: Просмотр технических характеристик оборудования

2.6. Блок «Навигация и геолокация»

  • UC030: Автоматическая передача GPS-координат в систему
  • UC031: Построение маршрута к адресу заказа
  • UC032: Пошаговая навигация к клиенту
  • UC033: Автоматическое определение прибытия в геозону заказа
  • UC034: Отображение текущего местоположения на карте

2.7. Блок «Отчетность и история»

  • UC035: Просмотр статистики выполненных заказов
  • UC036: Просмотр статистики рабочего времени
  • UC037: Формирование отчета о рабочем дне
  • UC038: Просмотр рейтинга и оценок от клиентов
  • UC039: Экспорт данных о выполненной работе

Ключевые особенности модуля:

Автоматизация на основе GPS:

  • Автоматическое переключение статусов при геособытиях
  • Отслеживание маршрута движения техника
  • Контроль соблюдения графика выполнения заказов

Фотодокументирование:

  • Обязательные фото при начале/завершении зарядки
  • Фотоотчеты при сообщении о проблемах
  • Привязка фото к конкретным заказам и оборудованию

Коммуникация:

  • Защищенный чат с клиентами без раскрытия телефонов
  • Автоматические уведомления клиентам о статусе заказа
  • Интеграция с системой уведомлений диспетчера

Мониторинг оборудования:

  • Получение данных о состоянии МЗС от серверной части
  • Система заявок на неисправности с фотофиксацией
  • Автоматический журнал операций с оборудованием

Предлагаемые действия техника по статусам

Рабочая смена:

  • PLANNED → ACTIVE: "Начать смену" (техник отмечается на работу)
  • ACTIVE → COMPLETED: "Завершить смену" (техник завершает рабочий день)

Маршрут:

  • ASSIGNED: Техник получает уведомление и может "Принять маршрут" или "Отклонить с причиной"
  • ASSIGNED → IN_PROGRESS: "Принять маршрут"
  • IN_PROGRESS → COMPLETED: автоматически при завершении всех заказов в маршруте

Заказ:

  • ASSIGNED → EN_ROUTE: "Выехал к клиенту" (или автоматически при начале движения)
  • EN_ROUTE → ARRIVED: автоматически по GPS при входе в геозону адреса (радиус ~100м)
  • ARRIVED → CHARGING: "Начать зарядку" + обязательное фото подключения
  • CHARGING → COMPLETED: "Завершить зарядку" + фото отключения и показаний счетчика
  • Любой статус → FAILED: "Сообщить о проблеме" + причина + фото

Блок «Управление рабочими сменами» - Модуль Техника

Общее описание блока

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

Основные возможности блока:

  • Просмотр расписания запланированных смен
  • Начало рабочей смены с геолокационным контролем
  • Мониторинг текущей активной смены
  • Завершение смены с указанием причин досрочного завершения
  • Отмена смены с выбором причины
  • Просмотр истории выполненных смен
  • Получение push-уведомлений о предстоящих сменах

UC001: Просмотр расписания рабочих смен

Актор: Техник

Описание: Техник просматривает свое расписание запланированных рабочих смен на определенный период с возможностью отмены смены.

Activity-диаграмма (Диаграмма деятельности)

graph TD
    Start([Начало]) --> A1[Техник: Открывает раздел 'Мои смены']
    A1 --> S1[Система: Загружает смены техника из WorkShifts]
    S1 --> S2[Система: Отображает календарь смен<br/>ссылка: ЭкранРасписанияСмен]
    S2 --> D1{Техник выбирает действие}
    D1 -->|Просмотр деталей| A2[Техник: Нажимает на смену]
    D1 -->|Отменить смену| A3[Техник: Нажимает 'Отменить смену']
    D1 -->|Изменить период| A4[Техник: Выбирает другой период]
    A2 --> S3[Система: Отображает детали смены]
    A3 --> S4[Система: Отображает форму отмены смены<br/>ссылка: ФормаОтменыСмены]
    A4 --> S5[Система: Загружает смены за выбранный период]
    S3 --> S2
    S4 --> A5[Техник: Выбирает причину отмены]
    S5 --> S2
    A5 --> A6[Техник: Опционально вводит комментарий]
    A6 --> A7[Техник: Подтверждает отмену]
    A7 --> S6[Система: Проверяет возможность отмены]
    S6 --> D2{Смену можно отменить?}
    D2 -->|Да| S7[Система: Изменяет статус смены на CANCELLED]
    D2 -->|Нет| S8[Система: Отображает сообщение об ошибке]
    S7 --> S9[Система: Уведомляет диспетчера об отмене]
    S8 --> S2
    S9 --> S10[Система: Отображает подтверждение отмены]
    S10 --> End([Конец])

Модель интерфейсов

classDiagram
    class ЭкранРасписанияСмен {
        <<Screen>>
        +ВыборПериода : DateRangePicker
        +КалендарьСмен : CalendarView
        +СписокСмен : ListView
        +КнопкаОбновить : Button
    }
    
    class КарточкаСмены {
        <<Area>>
        +ДатаСмены : Label
        +ВремяНачалаОкончания : Label
        +БазаНачала : Label
        +БазаОкончания : Label
        +СтатусСмены : StatusBadge
        +КнопкаОтменить : Button
    }
    
    class ФормаОтменыСмены {
        <<Screen>>
        +ИнформацияОСмене : Area
        +ПричинаОтмены : DropDown*
        +Комментарий : TextArea[300]
        +КнопкаПодтвердить : Button
        +КнопкаОтмена : Button
    }
    
    ЭкранРасписанияСмен *-- КарточкаСмены

Функциональные требования

RQ001. Требование к отображению расписания. Система должна отображать расписание смен техника в календарном и списочном виде с возможностью переключения между видами отображения.

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

RQ003. Требование к отображению информации о смене. Каждая смена должна отображать:

  • Дату и время смены
  • База начала и окончания смены
  • Статус смены (Запланирована/Активна/Завершена/Отменена)
  • Количество заказов в смене (если есть назначенные маршруты)

RQ004. Требование к возможности отмены. Техник может отменить смену только со статусом PLANNED не позднее чем за 2 часа до ее начала.

RQ005. Требование к причинам отмены. Система должна предоставлять список причин отмены:

  • Болезнь
  • Семейные обстоятельства
  • Технические проблемы с ТС
  • Форс-мажор
  • Другое (с обязательным комментарием)

RQ006. Требование к уведомлению диспетчера. При отмене смены техником система должна автоматически уведомить ответственного диспетчера с указанием причины и времени отмены.


UC002: Начало рабочей смены

Актор: Техник

Описание: Техник начинает запланированную рабочую смену с проверкой геолокации и временного интервала.

Activity-диаграмма (Диаграмма деятельности)

graph TD
    Start([Начало]) --> A1[Техник: Нажимает 'Начать смену']
    A1 --> S1[Система: Проверяет наличие запланированной смены]
    S1 --> D1{Есть запланированная смена?}
    D1 -->|Нет| S2[Система: Отображает сообщение об отсутствии смены]
    D1 -->|Да| S3[Система: Проверяет время начала смены]
    S3 --> D2{Время начала смены подошло?}
    D2 -->|Нет| S4[Система: Отображает время до начала смены]
    D2 -->|Да| S5[Система: Запрашивает текущую геолокацию]
    S5 --> S6[Система: Проверяет расстояние до базы начала смены]
    S6 --> D3{Техник находится рядом с базой?}
    D3 -->|Нет| S7[Система: Отображает сообщение о необходимости<br/>приблизиться к базе]
    D3 -->|Да| S8[Система: Отображает подтверждение начала смены<br/>ссылка: ЭкранПодтвержденияНачалаСмены]
    S8 --> A2[Техник: Подтверждает начало смены]
    A2 --> S9[Система: Изменяет статус смены на ACTIVE]
    S9 --> S10[Система: Устанавливает actualStartTime = текущее время]
    S10 --> S11[Система: Записывает GPS-координаты начала смены]
    S11 --> S12[Система: Отображает экран активной смены]
    S12 --> End([Конец])
    S2 --> End
    S4 --> End
    S7 --> End

Модель интерфейсов

classDiagram
    class ЭкранПодтвержденияНачалаСмены {
        <<Screen>>
        +ИнформацияОСмене : Area
        +ТекущееВремя : Label
        +БазаНачала : Label
        +ТекущееМестоположение : Label
        +КнопкаНачатьСмену : Button
        +КнопкаОтмена : Button
    }
    
    class ЭкранАктивнойСмены {
        <<Screen>>
        +СтатусСмены : StatusIndicator
        +ВремяНачала : Label
        +ПрошедшееВремя : Timer
        +ОставшеесяВремя : Label
        +КнопкаЗавершитьСмену : Button
        +КнопкаПросмотретьМаршруты : Button
    }

Функциональные требования

RQ007. Требование к временному окну начала смены. Техник может начать смену не ранее чем за 15 минут до запланированного времени начала и не позднее чем через 30 минут после запланированного времени.

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

RQ009. Требование к проверке предыдущей смены. Система должна проверить, что предыдущая смена техника завершена (статус COMPLETED или CANCELLED).

RQ010. Требование к автоматическим полям. При начале смены система должна автоматически:

  • Установить WorkShifts.status = ACTIVE
  • Установить WorkShifts.actualStartTime = текущее время
  • Записать GPS-координаты места начала смены
  • Создать запись в журнале операций техника

RQ011. Требование к обработке опозданий. Если техник начинает смену с опозданием более 15 минут, система должна зафиксировать опоздание и уведомить диспетчера.


UC003: Завершение рабочей смены

Актор: Техник

Описание: Техник завершает активную рабочую смену с возможностью досрочного завершения и указания причин.

Activity-диаграмма (Диаграмма деятельности)

graph TD
    Start([Начало]) --> A1[Техник: Нажимает 'Завершить смену']
    A1 --> S1[Система: Проверяет статус текущей смены]
    S1 --> D1{Есть активная смена?}
    D1 -->|Нет| S2[Система: Отображает сообщение об отсутствии активной смены]
    D1 -->|Да| S3[Система: Проверяет завершенность текущих маршрутов]
    S3 --> D2{Есть незавершенные маршруты?}
    D2 -->|Да| S4[Система: Отображает предупреждение о незавершенных маршрутах]
    D2 -->|Нет| S5[Система: Проверяет время завершения]
    S5 --> D3{Досрочное завершение?}
    D3 -->|Да| S6[Система: Отображает форму досрочного завершения<br/>ссылка: ФормаДосрочногоЗавершения]
    D3 -->|Нет| S7[Система: Отображает стандартную форму завершения<br/>ссылка: ФормаЗавершенияСмены]
    S6 --> A2[Техник: Выбирает причину досрочного завершения]
    S7 --> A3[Техник: Подтверждает завершение смены]
    A2 --> A4[Техник: Опционально добавляет комментарий]
    A4 --> A5[Техник: Подтверждает завершение]
    A3 --> S8[Система: Запрашивает геолокацию для завершения]
    A5 --> S8
    S8 --> S9[Система: Проверяет местоположение базы окончания]
    S9 --> D4{Техник рядом с базой окончания?}
    D4 -->|Нет| S10[Система: Отображает предупреждение о расстоянии]
    D4 -->|Да| S11[Система: Изменяет статус смены на COMPLETED]
    S11 --> S12[Система: Устанавливает actualEndTime = текущее время]
    S12 --> S13[Система: Записывает GPS-координаты завершения]
    S13 --> S14[Система: Рассчитывает общее время работы]
    S14 --> S15[Система: Отображает итоги смены]
    S15 --> End([Конец])
    S2 --> End
    S4 --> End
    S10 --> A6[Техник: Принимает решение]
    A6 --> D5{Завершить принудительно?}
    D5 -->|Да| S11
    D5 -->|Нет| End

Модель интерфейсов

classDiagram
    class ФормаЗавершенияСмены {
        <<Screen>>
        +ИтогиСмены : Area
        +ОтработанноеВремя : Label
        +КоличествоВыполненныхЗаказов : Label
        +ТекущееМестоположение : Label
        +БазаОкончания : Label
        +КнопкаЗавершить : Button
        +КнопкаОтмена : Button
    }
    
    class ФормаДосрочногоЗавершения {
        <<Screen>>
        +ИнформацияОСмене : Area
        +ПричинаДосрочногоЗавершения : DropDown*
        +Комментарий : TextArea[300]
        +КнопкаЗавершить : Button
        +КнопкаОтмена : Button
    }
    
    class ЭкранИтоговСмены {
        <<Screen>>
        +ОбщееВремяРаботы : Label
        +ВыполненоЗаказов : Label
        +СтатистикаДня : Area
        +КнопкаПродолжить : Button
    }

Функциональные требования

RQ012. Требование к проверке незавершенных маршрутов. Система должна предупреждать техника о незавершенных маршрутах и запрашивать подтверждение завершения смены.

RQ013. Требование к досрочному завершению. Если смена завершается более чем за 30 минут до запланированного времени, система должна запросить причину досрочного завершения:

  • Выполнены все задачи
  • Технические проблемы с оборудованием
  • Проблемы со здоровьем
  • Семейные обстоятельства
  • Форс-мажор
  • Другое (с обязательным комментарием)

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

RQ015. Требование к автоматическим полям при завершении. При завершении смены система должна:

  • Установить WorkShifts.status = COMPLETED
  • Установить WorkShifts.actualEndTime = текущее время
  • Рассчитать WorkShifts.totalWorkedMinutes
  • Записать GPS-координаты завершения смены
  • Обновить статистику техника

RQ016. Требование к принудительному завершению. Система должна позволить завершение смены вне геозоны базы окончания с обязательным указанием причины и уведомлением диспетчера.


UC004: Просмотр информации о текущей смене

Актор: Техник

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

Activity-диаграмма (Диаграмма деятельности)

graph TD
    Start([Начало]) --> A1[Техник: Переходит в раздел 'Текущая смена']
    A1 --> S1[Система: Проверяет наличие активной смены]
    S1 --> D1{Есть активная смена?}
    D1 -->|Нет| S2[Система: Отображает сообщение об отсутствии активной смены]
    D1 -->|Да| S3[Система: Загружает данные активной смены]
    S3 --> S4[Система: Загружает связанные маршруты]
    S4 --> S5[Система: Рассчитывает текущие метрики смены]
    S5 --> S6[Система: Отображает информацию о смене<br/>ссылка: ЭкранТекущейСмены]
    S6 --> D2{Техник выбирает действие}
    D2 -->|Просмотр маршрутов| A2[Техник: Нажимает 'Мои маршруты']
    D2 -->|Завершить смену| A3[Техник: Нажимает 'Завершить смену']
    D2 -->|Обновить данные| A4[Техник: Выполняет pull-to-refresh]
    A2 --> S7[Система: Переход к UC006 (Просмотр маршрутов)]
    A3 --> S8[Система: Переход к UC003 (Завершение смены)]
    A4 --> S5
    S7 --> End([Конец])
    S8 --> End
    S2 --> End

Модель интерфейсов

classDiagram
    class ЭкранТекущейСмены {
        <<Screen>>
        +СтатусСмены : StatusIndicator
        +ВременныеМетрики : ОбластьВременныхМетрик
        +ИнформацияОСмене : ОбластьИнформацииОСмене
        +ТекущиеМаршруты : ОбластьМаршрутов
        +КнопкаЗавершитьСмену : Button
        +КнопкаПросмотретьМаршруты : Button
    }
    
    class ОбластьВременныхМетрик {
        <<Area>>
        +ВремяНачала : Label
        +ТекущееВремя : LiveTimer
        +ОтработанноеВремя : Timer
        +ОставшеесяВремя : Label
        +ПрогрессБар : ProgressBar
    }
    
    class ОбластьИнформацииОСмене {
        <<Area>>
        +БазаНачала : Label
        +БазаОкончания : Label
        +ЗапланированноеВремя : Label
        +ТекущееМестоположение : LocationView
    }
    
    class ОбластьМаршрутов {
        <<Area>>
        +КоличествоМаршрутов : Label
        +ВыполненныеМаршруты : Label
        +ТекущийМаршрут : RouteCard
    }
    
    ЭкранТекущейСмены *-- ОбластьВременныхМетрик
    ЭкранТекущейСмены *-- ОбластьИнформацииОСмене
    ЭкранТекущейСмены *-- ОбластьМаршрутов

Функциональные требования

RQ017. Требование к отображению временных метрик. Система должна в реальном времени отображать:

  • Время начала смены
  • Текущее отработанное время
  • Оставшееся время до конца смены
  • Прогресс выполнения смены в процентах

RQ018. Требование к отображению информации о смене. Система должна показывать:

  • База начала и окончания смены
  • Запланированное время начала и окончания
  • Текущее местоположение техника
  • Статус смены

RQ019. Требование к отображению связанных маршрутов. Система должна показывать:

  • Количество назначенных маршрутов на смену
  • Количество выполненных маршрутов
  • Информацию о текущем активном маршруте
  • Прогресс выполнения заказов в маршрутах

RQ020. Требование к обновлению данных. Информация о текущей смене должна обновляться:

  • Автоматически каждые 30 секунд
  • При выполнении pull-to-refresh пользователем
  • При изменении статуса связанных маршрутов или заказов

RQ021. Требование к навигации. С экрана текущей смены должны быть доступны переходы:

  • К списку маршрутов смены
  • К завершению смены
  • К просмотру истории смен

UC005: Просмотр истории рабочих смен

Актор: Техник

Описание: Техник просматривает историю всех своих выполненных рабочих смен с детальной статистикой.

Activity-диаграмма (Диаграмма деятельности)

graph TD
    Start([Начало]) --> A1[Техник: Переходит в раздел 'История смен']
    A1 --> S1[Система: Загружает историю смен техника]
    S1 --> S2[Система: Отображает список смен с фильтрами<br/>ссылка: ЭкранИсторииСмен]
    S2 --> D1{Техник выбирает действие}
    D1 -->|Применить фильтр| A2[Техник: Выбирает параметры фильтрации]
    D1 -->|Просмотр деталей| A3[Техник: Нажимает на смену]
    D1 -->|Экспорт данных| A4[Техник: Нажимает 'Экспорт']
    A2 --> S3[Система: Применяет фильтры и обновляет список]
    A3 --> S4[Система: Загружает детальную информацию о смене]
    A4 --> S5[Система: Формирует и скачивает файл экспорта]
    S3 --> S2
    S4 --> S6[Система: Отображает детали смены<br/>ссылка: ЭкранДеталейСмены]
    S5 --> S2
    S6 --> A5[Техник: Просматривает детали]
    A5 --> A6[Техник: Нажимает 'Назад']
    A6 --> S2

Модель интерфейсов

classDiagram
    class ЭкранИсторииСмен {
        <<Screen>>
        +ПанельФильтров : ОбластьФильтров
        +СписокСмен : ListView
        +СтатистикаОбщая : ОбластьОбщейСтатистики
        +КнопкаЭкспорт : Button
    }
    
    class ОбластьФильтров {
        <<Area>>
        +ПериодДат : DateRangePicker
        +СтатусСмены : MultiSelectDropDown
        +СортировкаПо : DropDown
        +КнопкаПрименить : Button
        +КнопкаСброс : Button
    }
    
    class КарточкаИсторииСмены {
        <<Area>>
        +ДатаСмены : Label
        +ВремяСмены : Label
        +ДлительностьСмены : Label
        +КоличествоЗаказов : Label
        +СтатусСмены : StatusBadge
        +БазыНачалаОкончания : Label
    }
    
    class ЭкранДеталейСмены {
        <<Screen>>
        +ОсновнаяИнформация : Area
        +ВременныеМетрики : Area
        +СписокМаршрутов : ListView
        +СписокЗаказов : ListView
        +СтатистикаСмены : Area
    }
    
    ЭкранИсторииСмен *-- ОбластьФильтров
    ЭкранИсторииСмен *-- КарточкаИсторииСмены

Функциональные требования

RQ022. Требование к отображению истории. Система должна отображать все смены техника со статусами COMPLETED и CANCELLED, отсортированные по дате по убыванию.

RQ023. Требование к фильтрации истории. Система должна предоставлять фильтры:

  • По периоду (дата начала и окончания)
  • По статусу смены (Завершена/Отменена)
  • По длительности смены
  • По количеству выполненных заказов

RQ024. Требование к пагинации. Система должна загружать историю смен порциями по 20 записей с возможностью подгрузки следующих порций.

RQ025. Требование к детальной информации о смене. При просмотре деталей смены система должна отображать:

  • Основную информацию (даты, времена, базы, статус)
  • Фактическое время работы и отклонения от плана
  • Список выполненных маршрутов
  • Список выполненных заказов
  • Статистику эффективности

RQ026. Требование к экспорту данных. Система должна позволять экспорт истории смен в формате CSV с выбором периода и полей для экспорта.

RQ027. Требование к общей статистике. На экране истории должна отображаться сводная статистика:

  • Общее количество отработанных смен
  • Общее время работы
  • Среднее время смены
  • Количество выполненных заказов
  • Процент вовремя начатых/завершенных смен

Системные требования и интеграции

Требования к push-уведомлениям

RQ028. Требование к уведомлениям о смене. Система должна отправлять push-уведомления технику:

  • За 24 часа до начала смены: "Напоминание: завтра у вас запланирована смена с [время] до [время] на базе [название]"
  • За 1 час до начала смены: "Напоминание: через час начинается ваша рабочая смена"
  • В момент времени начала смены: "Пора начинать рабочую смену! Перейдите в приложение для активации"

RQ029. Требование к настройкам уведомлений. Техник должен иметь возможность настроить:

  • Включение/отключение уведомлений о сменах
  • Время предварительных уведомлений
  • Звуковые сигналы для уведомлений

Требования к геолокации

RQ030. Требование к точности геолокации. Система должна использовать GPS с точностью не менее 10 метров для определения местоположения техника.

RQ031. Требование к геозонам баз. Система должна определять геозоны баз с радиусом:

  • 500 метров для начала смены
  • 1000 метров для завершения смены

RQ032. Требование к работе в офлайн режиме. При отсутствии интернет-соединения система должна:

  • Сохранять GPS-координаты локально
  • Позволять начало/завершение смены с последующей синхронизацией
  • Уведомлять о работе в офлайн режиме

Требования к безопасности и доступу

RQ033. Требование к аутентификации. Доступ к функциям блока предоставляется только аутентифицированным техникам с активным статусом пользователя.

RQ034. Требование к ограничению доступа. Техник может управлять только своими сменами и не имеет доступа к сменам других техников.

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

  • Времени операции
  • GPS-координат
  • Типа операции
  • Результата операции

Требования к интеграции с другими блоками

RQ036. Требование к связи с блоком маршрутов. Система должна интегрироваться с блоком "Управление маршрутами" для:

  • Отображения маршрутов, назначенных на смену
  • Контроля завершенности маршрутов при завершении смены
  • Автоматического начала маршрутов при активации смены

RQ037. Требование к связи с блоком уведомлений. Система должна интегрироваться с сервисом уведомлений для:

  • Отправки push-уведомлений о сменах
  • Уведомления диспетчеров об отменах и опозданиях
  • Системных уведомлений о статусе смен

RQ038. Требование к синхронизации с модулем диспетчера. Изменения статусов смен должны мгновенно отображаться в модуле диспетчера для оперативного мониторинга.


Модель предметной области (Domain Model)

Основные сущности блока

classDiagram
    class РабочиеСмены {
        +Id : String
        +ТехникId : String
        +ДатаСмены : Date
        +ЗапланированноеВремяНачала : DateTime
        +ЗапланированноеВремяОкончания : DateTime
        +ФактическоеВремяНачала : DateTime
        +ФактическоеВремяОкончания : DateTime
        +Статус : СтатусыСмен
        +БазаНачала : String
        +БазаОкончания : String
        +GPS_Начала : Координаты
        +GPS_Окончания : Координаты
        +ПричинаОтмены : String
        +ПричинаДосрочногоЗавершения : String
        +Комментарий : String
        +ВсегоОтработаноМинут : Number
    }
    
    class СтатусыСмен {
        <<enumeration>>
        PLANNED
        ACTIVE  
        COMPLETED
        CANCELLED
    }
    
    class ПричиныОтменыСмен {
        <<enumeration>>
        Болезнь
        СемейныеОбстоятельства
        ТехническиеПроблемыСТС
        ФорсМажор
        Другое
    }
    
    class ПричиныДосрочногоЗавершения {
        <<enumeration>>
        ВыполненыВсеЗадачи
        ТехническиеПроблемыСОборудованием
        ПроблемыСоЗдоровьем
        СемейныеОбстоятельства
        ФорсМажор
        Другое
    }
    
    class Техники {
        +Id : String
        +Фамилия : String
        +Имя : String
        +Email : String
        +Статус : СтатусыТехников
        +ТекущаяСмена : РабочиеСмены
    }
    
    class УведомленияОСменах {
        +Id : String
        +ТехникId : String
        +СменаId : String
        +ТипУведомления : ТипыУведомленийОСменах
        +ВремяОтправки : DateTime
        +Статус : СтатусыУведомлений
        +ТекстСообщения : String
    }
    
    class ТипыУведомленийОСменах {
        <<enumeration>>
        За24Часа
        За1Час
        ВМоментНачала
        ОбОтмене
        ОбОпоздании
    }
    
    РабочиеСмены --> СтатусыСмен
    РабочиеСмены --> ПричиныОтменыСмен
    РабочиеСмены --> ПричиныДосрочногоЗавершения
    Техники --> РабочиеСмены
    УведомленияОСменах --> РабочиеСмены
    УведомленияОСменах --> ТипыУведомленийОСменах

Блок «Управление маршрутами» - Модуль Техника

Общее описание блока

Блок «Управление маршрутами» предоставляет технику возможности для работы с назначенными маршрутами в рамках его рабочей смены. Техник может просматривать назначенные маршруты, принимать или отклонять их, отслеживать прогресс выполнения и получать детальную информацию о каждом маршруте.

Основные функции блока:

  • Получение уведомлений о назначенных маршрутах
  • Принятие или отклонение маршрутов с указанием причин
  • Просмотр детальной информации о маршруте и входящих в него заказах
  • Отслеживание прогресса выполнения текущего маршрута
  • Автоматическое обновление статусов при выполнении заказов

UC006: Получение и просмотр назначенного маршрута

Описание: Техник получает уведомление о назначенном диспетчером маршруте и может просмотреть его основную информацию.

Activity-диаграмма (Диаграмма деятельности)

graph TD
    Start([Начало]) --> S1[Система: Получает уведомление о назначении маршрута]
    S1 --> S2[Система: Отображает push-уведомление технику]
    S2 --> A1[Техник: Открывает уведомление]
    A1 --> S3[Система: Отображает краткую информацию о маршруте<br/>ссылка: КарточкаНовогоМаршрута]
    S3 --> A2[Техник: Просматривает информацию о маршруте]
    A2 --> D1{Действие техника}
    D1 -->|Принять| A3[Техник: Нажимает 'Принять маршрут']
    D1 -->|Отклонить| A4[Техник: Нажимает 'Отклонить маршрут']
    D1 -->|Подробнее| A5[Техник: Нажимает 'Подробная информация']
    A3 --> S4[Система: Переход к UC007]
    A4 --> S5[Система: Переход к UC008]
    A5 --> S6[Система: Переход к UC009]
    S4 --> End([Конец])
    S5 --> End
    S6 --> End

Модель интерфейсов

classDiagram
    class КарточкаНовогоМаршрута {
        <<Screen>>
        +НомерМаршрута : Текст
        +СтатусМаршрута : СтатусИндикатор
        +ДатаМаршрута : Дата
        +ВремяНачалаОкончания : ВременнойИнтервал
        +КоличествоЗаказов : Число
        +БазаНачалаОкончания : Текст
        +КраткоеОписание : Текст
        +КнопкаПринять : Кнопка
        +КнопкаОтклонить : Кнопка
        +КнопкаПодробнее : Кнопка
    }
    
    class ПушУведомление {
        <<Area>>
        +ЗаголовокУведомления : Текст
        +ТекстСообщения : Текст
        +ВремяПолучения : Время
        +КнопкаОткрыть : Кнопка
    }

Функциональные требования

RQ040. Требование к получению уведомлений. Система должна отправлять технику push-уведомление при назначении нового маршрута со статусом ASSIGNED.

RQ041. Требование к отображению краткой информации. В карточке нового маршрута должна отображаться:

  • Номер маршрута из Routes.routeNumber
  • Дата маршрута из Routes.routeDate
  • Плановое время начала и окончания
  • Количество заказов в маршруте
  • База начала и окончания смены

RQ042. Требование к доступности маршрута. Техник может просматривать только маршруты, назначенные конкретно ему (Routes.idTechnician = ID текущего техника).

RQ043. Требование к временным ограничениям. Уведомление о маршруте должно отображаться до тех пор, пока техник не примет решение (принять/отклонить) или пока диспетчер не отменит назначение.


UC007: Принятие назначенного маршрута

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

Activity-диаграмма (Диаграмма деятельности)

graph TD
    Start([Начало]) --> A1[Техник: Нажимает 'Принять маршрут']
    A1 --> S1[Система: Отображает форму подтверждения<br/>ссылка: ФормаПринятияМаршрута]
    S1 --> S2[Система: Проверяет текущий статус маршрута]
    S2 --> D1{Маршрут доступен для принятия?}
    D1 -->|Нет| S3[Система: Отображает сообщение о недоступности]
    D1 -->|Да| A2[Техник: Подтверждает принятие маршрута]
    A2 --> S4[Система: Изменяет статус маршрута на IN_PROGRESS]
    S4 --> S5[Система: Устанавливает Routes.actualStartTime]
    S5 --> S6[Система: Изменяет статус рабочей смены на ACTIVE]
    S6 --> S7[Система: Отправляет уведомление диспетчеру]
    S7 --> S8[Система: Отображает подтверждение принятия]
    S8 --> S9[Система: Переадресует к текущему маршруту]
    S9 --> End([Конец])
    S3 --> End

Модель интерфейсов

classDiagram
    class ФормаПринятияМаршрута {
        <<Screen>>
        +ИнформацияОМаршруте : ОбластьИнформации
        +ПредупреждениеОВремени : ПредупреждениеБлок
        +ТекстПодтверждения : Текст
        +КнопкаПодтвердить : Кнопка
        +КнопкаОтмена : Кнопка
    }
    
    class ОбластьИнформации {
        <<Area>>
        +НомерМаршрута : Текст
        +ДатаМаршрута : Дата
        +КоличествоЗаказов : Число
        +ПлановоеВремя : ВременнойИнтервал
        +АвтомобильСтанция : ИнформацияОборудования
    }

Функциональные требования

RQ044. Требование к проверке доступности маршрута. Система должна проверять, что маршрут имеет статус ASSIGNED и назначен текущему технику.

RQ045. Требование к изменению статуса маршрута. При принятии маршрута Система должна:

  • Изменить Routes.status на IN_PROGRESS
  • Установить Routes.actualStartTime = текущее время
  • Обновить Routes.updatedBy = идентификатор техника

RQ046. Требование к активации рабочей смены. Система должна изменить статус связанной рабочей смены (WorkShifts.status) на ACTIVE.

RQ047. Требование к уведомлению диспетчера. При принятии маршрута техником Система должна отправить уведомление назначившему диспетчеру.

RQ048. Требование к блокировке повторного принятия. После принятия маршрута кнопка "Принять" должна стать недоступной для всех других уведомлений этого маршрута.


UC008: Отклонение маршрута с указанием причины

Описание: Техник отклоняет назначенный маршрут с обязательным указанием причины отклонения.

Activity-диаграмма (Диаграмма деятельности)

graph TD
    Start([Начало]) --> A1[Техник: Нажимает 'Отклонить маршрут']
    A1 --> S1[Система: Отображает форму отклонения<br/>ссылка: ФормаОтклоненияМаршрута]
    S1 --> S2[Система: Загружает список причин отклонения]
    S2 --> A2[Техник: Выбирает причину отклонения]
    A2 --> D1{Выбрана причина 'Другое'?}
    D1 -->|Да| A3[Техник: Вводит текстовый комментарий]
    D1 -->|Нет| A4[Техник: Опционально добавляет комментарий]
    A3 --> A5[Техник: Нажимает 'Отклонить']
    A4 --> A5
    A5 --> S3[Система: Валидирует данные]
    S3 --> D2{Данные корректны?}
    D2 -->|Нет| S4[Система: Отображает ошибки валидации]
    D2 -->|Да| S5[Система: Изменяет статус маршрута на CANCELLED]
    S5 --> S6[Система: Сохраняет причину отклонения]
    S6 --> S7[Система: Освобождает назначенные ресурсы]
    S7 --> S8[Система: Отправляет уведомление диспетчеру]
    S8 --> S9[Система: Отображает подтверждение отклонения]
    S9 --> End([Конец])
    S4 --> A2

Модель интерфейсов

classDiagram
    class ФормаОтклоненияМаршрута {
        <<Screen>>
        +ИнформацияОМаршруте : КраткаяИнформация
        +СписокПричин : СписокВыбора*
        +ПолеКомментария : ТекстовоеПоле[500]
        +ПредупреждениеОПоследствиях : ПредупреждениеБлок
        +КнопкаОтклонить : Кнопка
        +КнопкаОтмена : Кнопка
    }
    
    class КраткаяИнформация {
        <<Area>>
        +НомерМаршрута : Текст
        +ДатаВремяМаршрута : ДатаВремя
        +КоличествоЗаказов : Число
    }

Функциональные требования

RQ049. Требование к обязательному выбору причины. Техник обязан выбрать одну из предопределенных причин отклонения из системного справочника.

RQ050. Требование к списку причин отклонения. Система должна предоставлять следующие причины:

  • Болезнь
  • Семейные обстоятельства
  • Технические проблемы с оборудованием
  • Превышение рабочего времени
  • Конфликт с другими обязательствами
  • Недостаточно времени на подготовку
  • Другое (с обязательным комментарием)

RQ051. Требование к обязательному комментарию. При выборе причины "Другое" поле комментария становится обязательным для заполнения (максимум 500 символов).

RQ052. Требование к изменению статуса маршрута. При отклонении маршрута Система должна:

  • Изменить Routes.status на CANCELLED
  • Сохранить причину отклонения в Routes.cancellationReason
  • Сохранить комментарий техника в Routes.notes
  • Установить Routes.updatedBy = идентификатор техника

RQ053. Требование к освобождению ресурсов. Система должна освободить назначенные на маршрут ресурсы:

  • Изменить WorkShifts.status обратно на PLANNED
  • Изменить статус всех заказов в маршруте обратно на CONFIRMED
  • Освободить назначенное оборудование (ТС и станция)

RQ054. Требование к уведомлению диспетчера. Система должна немедленно уведомить диспетчера об отклонении маршрута с указанием причины и комментария.


UC009: Просмотр детальной информации маршрута

Описание: Техник просматривает подробную информацию о маршруте, включая список заказов, временную схему и информацию об оборудовании.

Activity-диаграмма (Диаграмма деятельности)

graph TD
    Start([Начало]) --> A1[Техник: Открывает детальную информацию]
    A1 --> S1[Система: Загружает полную информацию о маршруте]
    S1 --> S2[Система: Загружает список заказов из RoutePoints]
    S2 --> S3[Система: Загружает информацию об оборудовании]
    S3 --> S4[Система: Отображает детальную информацию<br/>ссылка: ДетальнаяИнформацияМаршрута]
    S4 --> A2[Техник: Просматривает информацию]
    A2 --> D1{Выбор раздела}
    D1 -->|Заказы| A3[Техник: Переключается на вкладку заказов]
    D1 -->|Временная схема| A4[Техник: Переключается на временную схему]
    D1 -->|Оборудование| A5[Техник: Переключается на информацию об оборудовании]
    D1 -->|Карта| A6[Техник: Переключается на карту маршрута]
    A3 --> S5[Система: Отображает список заказов]
    A4 --> S6[Система: Отображает временную линию]
    A5 --> S7[Система: Отображает информацию об оборудовании]
    A6 --> S8[Система: Отображает карту с точками маршрута]
    S5 --> End([Конец])
    S6 --> End
    S7 --> End
    S8 --> End

Модель интерфейсов

classDiagram
    class ДетальнаяИнформацияМаршрута {
        <<Screen>>
        +ЗаголовокМаршрута : Заголовок
        +ОсновнаяИнформация : ОбластьОсновнойИнформации
        +ВкладкиИнформации : ВкладкиКомпонент
        +КнопкиДействий : ГруппаКнопок
    }
    
    class ОбластьОсновнойИнформации {
        <<Area>>
        +НомерМаршрута : Текст
        +СтатусМаршрута : СтатусИндикатор
        +ДатаМаршрута : Дата
        +ВремяНачалаОкончания : ВременнойИнтервал
        +КоличествоЗаказов : Число
        +ОценочноеВремяВыполнения : Время
    }
    
    class ВкладкаЗаказов {
        <<Area>>
        +СписокЗаказов : СписокКарточек
        +СуммарнаяИнформация : СводкаПоЗаказам
    }
    
    class ВкладкаВременнойСхемы {
        <<Area>>
        +ВременнаяЛиния : ВременнаяЛинияКомпонент
        +ЛегендаСтатусов : Легенда
    }
    
    class ВкладкаОборудования {
        <<Area>>
        +ИнформацияАвтомобиля : КарточкаОборудования
        +ИнформацияСтанции : КарточкаОборудования
        +СтатусКомплекта : СтатусИндикатор
    }
    
    class ВкладкаКарты {
        <<Area>>
        +ИнтерактивнаяКарта : КартаКомпонент
        +ЛегендаТочек : Легенда
        +ИнформацияОМаршруте : СводкаМаршрута
    }
    
    ДетальнаяИнформацияМаршрута *-- ОбластьОсновнойИнформации
    ДетальнаяИнформацияМаршрута *-- ВкладкаЗаказов
    ДетальнаяИнформацияМаршрута *-- ВкладкаВременнойСхемы
    ДетальнаяИнформацияМаршрута *-- ВкладкаОборудования
    ДетальнаяИнформацияМаршрута *-- ВкладкаКарты

Функциональные требования

RQ055. Требование к отображению основной информации. Система должна отображать:

  • Полную информацию о маршруте из таблицы Routes
  • Текущий статус маршрута с цветовой индикацией
  • Плановые и фактические времена начала/окончания
  • Прогресс выполнения в процентах

RQ056. Требование к отображению заказов. Во вкладке "Заказы" должна отображаться информация:

  • Список всех заказов из RoutePoints с порядком выполнения
  • Статус каждого заказа
  • Адрес и время прибытия к клиенту
  • Информация о клиенте (ФИО, тип заказа)
  • Требуемый уровень зарядки

RQ057. Требование к временной схеме. Временная линия должна отображать:

  • Последовательность выполнения заказов
  • Плановые времена прибытия к каждому клиенту
  • Время на выполнение каждого заказа
  • Время перемещения между точками
  • Фактический прогресс выполнения

RQ058. Требование к информации об оборудовании. Система должна отображать:

  • Информацию о назначенном сервисном ТС (модель, номер, статус)
  • Информацию о зарядной станции (модель, мощность, статус)
  • Текущий уровень заряда автомобиля и станции
  • Техническое состояние оборудования

RQ059. Требование к отображению карты. Интерактивная карта должна показывать:

  • Все точки маршрута с номерами порядка выполнения
  • Оптимальные пути между точками
  • Текущее местоположение техника (для активных маршрутов)
  • Базу начала и окончания маршрута

UC010: Отслеживание прогресса выполнения маршрута

Описание: Техник отслеживает прогресс выполнения текущего активного маршрута, видит статусы заказов и общий прогресс.

Activity-диаграмма (Диаграмма деятельности)

graph TD
    Start([Начало]) --> A1[Техник: Открывает текущий маршрут]
    A1 --> S1[Система: Проверяет наличие активного маршрута]
    S1 --> D1{Есть активный маршрут?}
    D1 -->|Нет| S2[Система: Отображает сообщение об отсутствии активного маршрута]
    D1 -->|Да| S3[Система: Загружает информацию о текущем маршруте]
    S3 --> S4[Система: Загружает статусы всех заказов в маршруте]
    S4 --> S5[Система: Рассчитывает общий прогресс выполнения]
    S5 --> S6[Система: Отображает панель прогресса<br/>ссылка: ПанельПрогрессаМаршрута]
    S6 --> L1[Цикл: Автоматическое обновление данных]
    L1 --> S7[Система: Обновляет статусы заказов в реальном времени]
    S7 --> S8[Система: Пересчитывает прогресс выполнения]
    S8 --> S9[Система: Обновляет временные метрики]
    S9 --> D2{Маршрут завершен?}
    D2 -->|Нет| D3{Есть изменения в статусах?}
    D2 -->|Да| S10[Система: Отображает уведомление о завершении]
    D3 -->|Да| S11[Система: Обновляет интерфейс]
    D3 -->|Нет| L1
    S11 --> L1
    S10 --> End([Конец])
    S2 --> End

Модель интерфейсов

classDiagram
    class ПанельПрогрессаМаршрута {
        <<Screen>>
        +ЗаголовокТекущегоМаршрута : Заголовок
        +ОбщийПрогресс : ПрогрессБар
        +ВременныеМетрики : ОбластьВременныхМетрик
        +СписокЗаказовСПрогрессом : СписокПрогрессаЗаказов
        +КнопкиБыстрыхДействий : ГруппаКнопок
        +КнопкаОбновить : Кнопка
    }
    
    class ОбластьВременныхМетрик {
        <<Area>>
        +ВремяНачалаМаршрута : Время
        +ТекущееВремя : Время
        +ОстатокВремени : Время
        +ОтклонениеОтГрафика : ВременнойИндикатор
        +ПредполагаемоеВремяЗавершения : Время
    }
    
    class КарточкаПрогрессаЗаказа {
        <<Area>>
        +НомерЗаказа : Текст
        +АдресКлиента : Текст
        +СтатусЗаказа : СтатусИндикатор
        +ПлановоеВремя : Время
        +ФактическоеВремя : Время
        +ДействияПоЗаказу : ГруппаКнопок
    }
    
    ПанельПрогрессаМаршрута *-- ОбластьВременныхМетрик
    ПанельПрогрессаМаршрута *-- КарточкаПрогрессаЗаказа

Функциональные требования

RQ060. Требование к расчету общего прогресса. Система должна рассчитывать общий прогресс маршрута по формуле:

Прогресс = (Количество завершенных заказов / Общее количество заказов) × 100%

RQ061. Требование к отображению временных метрик. Система должна отображать:

  • Плановое время начала и окончания маршрута
  • Фактическое время начала
  • Текущее время
  • Расчетное время завершения на основе текущего прогресса
  • Отклонение от планового графика (с цветовой индикацией)

RQ062. Требование к статусам заказов в прогрессе. Для каждого заказа должна отображаться информация:

  • Текущий статус из Orders.status
  • Плановое время прибытия из RoutePoints.plannedArrivalTime
  • Фактическое время прибытия из Orders.actualArrivalTime (если есть)
  • Время выполнения заказа (если завершен)

RQ063. Требование к автоматическому обновлению. Система должна автоматически обновлять информацию о прогрессе каждые 30 секунд при активном маршруте.

RQ064. Требование к быстрым действиям. Панель прогресса должна предоставлять быстрый доступ к:

  • Текущему заказу (если есть активный)
  • Навигации к следующему клиенту
  • Детальной информации о маршруте
  • Связи с диспетчером

RQ065. Требование к уведомлениям о завершении. При завершении всех заказов в маршруте Система должна:

  • Автоматически изменить статус маршрута на COMPLETED
  • Отобразить уведомление технику о завершении маршрута
  • Предложить перейти к завершению рабочей смены

Общие требования к блоку «Управление маршрутами»

Требования к интеграции с другими блоками

RQ066. Требование к связи с блоком рабочих смен. Система должна интегрироваться с блоком "Управление рабочими сменами" для:

  • Автоматической активации смены при принятии маршрута
  • Проверки соответствия времени маршрута времени смены
  • Завершения смены при завершении маршрута

RQ067. Требование к связи с блоком выполнения заказов. Система должна интегрироваться с блоком "Выполнение заказов" для:

  • Автоматического обновления статусов заказов в маршруте
  • Отслеживания прогресса выполнения каждого заказа
  • Перехода к выполнению конкретного заказа

RQ068. Требование к связи с блоком навигации. Система должна интегрироваться с блоком "Навигация и геолокация" для:

  • Построения оптимального пути между точками маршрута
  • Автоматического определения прибытия в точки маршрута
  • Отслеживания местоположения техника на маршруте

Требования к уведомлениям

RQ069. Требование к push-уведомлениям. Система должна отправлять push-уведомления технику при:

  • Назначении нового маршрута
  • Изменении маршрута диспетчером
  • Критических задержках в выполнении маршрута
  • Сообщениях от диспетчера по маршруту

RQ070. Требование к внутрисистемным уведомлениям. Система должна отправлять уведомления диспетчеру при:

  • Принятии маршрута техником
  • Отклонении маршрута техником с причиной
  • Критических задержках в выполнении маршрута
  • Завершении маршрута

Требования к офлайн работе

RQ071. Требование к работе без интернета. При отсутствии интернет-соединения система должна:

  • Сохранять информацию о текущем маршруте локально
  • Позволять просмотр маршрута и заказов в офлайн режиме
  • Сохранять изменения статусов локально с последующей синхронизацией
  • Уведомлять техника о работе в офлайн режиме

RQ072. Требование к синхронизации данных. При восстановлении интернет-соединения система должна:

  • Автоматически синхронизировать все изменения статусов
  • Получить актуальную информацию о маршруте с сервера
  • Разрешить конфликты данных в пользу серверной версии
  • Уведомить техника об успешной синхронизации

Требования к безопасности и доступу

RQ073. Требование к аутентификации. Доступ к функциям блока предоставляется только аутентифицированным техникам с активным статусом пользователя.

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

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

  • Времени операции
  • GPS-координат (если доступны)
  • Типа операции (принятие, отклонение, просмотр)
  • Результата операции

Требования к производительности

RQ076. Требование к времени отклика. Загрузка информации о маршруте должна выполняться не более чем за 3 секунды при стабильном интернет-соединении.

RQ077. Требование к обновлению данных. Автоматическое обновление статусов и прогресса должно выполняться не более чем за 1 секунду.

RQ078. Требование к размеру кеша. Система должна кешировать информацию о текущем маршруте локально, занимая не более 50 МБ памяти устройства.


Интеграционные требования

Требования к взаимодействию с серверной частью

RQ079. Требование к API маршрутов. Мобильное приложение должно использовать следующие API endpoints:

  • GET /api/technician/routes - получение списка маршрутов техника
  • POST /api/technician/routes/{id}/accept - принятие маршрута
  • POST /api/technician/routes/{id}/reject - отклонение маршрута
  • GET /api/technician/routes/{id}/details - детальная информация о маршруте
  • GET /api/technician/routes/{id}/progress - прогресс выполнения маршрута

RQ080. Требование к WebSocket соединению. Для получения обновлений в реальном времени должно использоваться WebSocket соединение с событиями:

  • route_assigned - назначение нового маршрута
  • route_updated - изменение маршрута
  • order_status_changed - изменение статуса заказа в маршруте
  • route_cancelled - отмена маршрута диспетчером

Требования к обработке ошибок

RQ081. Требование к обработке сетевых ошибок. При сетевых ошибках система должна:

  • Отображать понятные пользователю сообщения об ошибках
  • Предлагать повторить операцию
  • Переходить в офлайн режим при длительном отсутствии соединения

RQ082. Требование к обработке ошибок сервера. При ошибках сервера система должна:

  • Логировать детальную информацию об ошибке
  • Отображать технику общее сообщение о технической проблеме
  • Предоставлять возможность связаться с технической поддержкой

Требования к интерфейсу мобильного приложения

Требования к удобству использования

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

RQ084. Требование к размеру элементов управления. Все кнопки и элементы управления должны иметь размер не менее 44x44 пикселей для удобного использования на мобильных устройствах.

RQ085. Требование к цветовой схеме. Система должна использовать единую цветовую схему для статусов:

  • Зеленый - завершено/активно
  • Желтый - в процессе/ожидание
  • Красный - отменено/ошибка
  • Серый - неактивно/недоступно

Требования к адаптивности

RQ086. Требование к поддержке ориентации. Интерфейс должен корректно отображаться как в портретной, так и в ландшафтной ориентации экрана.

RQ087. Требование к поддержке различных размеров экранов. Интерфейс должен адаптироваться под различные размеры экранов мобильных устройств (от 5 до 7 дюймов).

RQ088. Требование к доступности. Интерфейс должен соответствовать стандартам доступности для пользователей с ограниченными возможностями, включая поддержку screen readers.