@startuml
left to right direction
skinparam packageStyle rectangle

actor "Клиент" as Client
actor "Франчайзи" as Franchisee
actor "Сервисный инженер" as Engineer
actor "Администратор системы" as Admin
actor "Система мониторинга" as System

rectangle "Система управления торговыми автоматами" {
  
  package "Модуль клиента (Desktop)" {
    usecase "Авторизация" as UC1
    usecase "Просмотр эффективности сети" as UC2
    usecase "Просмотр состояния ТА" as UC3
    usecase "Просмотр динамики продаж" as UC4
    usecase "Просмотр сводки" as UC5
    usecase "Получение push-уведомлений" as UC6
    usecase "Просмотр критических ошибок" as UC7
    usecase "Просмотр предупреждений" as UC8
  }
  
  package "Модуль франчайзера (Web)" {
    usecase "Загрузка данных ТА" as UC9
    usecase "Импорт из Excel/CSV" as UC10
    usecase "Валидация данных" as UC11
    usecase "Просмотр календаря обслуживания" as UC12
    usecase "Фильтрация по ТА" as UC13
    usecase "Просмотр графика работ" as UC14
    usecase "Создание заявок на обслуживание" as UC15
    usecase "Назначение сотрудников" as UC16
    usecase "Автоматическое распределение задач" as UC17
    usecase "Перераспределение задач (Drag&Drop)" as UC18
    usecase "Обработка аварийных заявок" as UC19
    usecase "Подтверждение графика" as UC20
    usecase "Просмотр истории статусов" as UC21
  }
  
  package "Управление пользователями" {
    usecase "Регистрация пользователя" as UC22
    usecase "Хеширование пароля" as UC23
    usecase "Генерация JWT токена" as UC24
    usecase "Управление ролями" as UC25
  }
  
  package "API и интеграция" {
    usecase "Получение данных о ТА" as UC26
    usecase "Обновление статусов" as UC27
    usecase "Получение уведомлений" as UC28
    usecase "Синхронизация данных" as UC29
  }
}

' Связи клиента
Client --> UC1
Client --> UC2
Client --> UC3
Client --> UC4
Client --> UC5
Client --> UC6

' Связи франчайзи
Franchisee --> UC1
Franchisee --> UC9
Franchisee --> UC12
Franchisee --> UC14
Franchisee --> UC15
Franchisee --> UC18
Franchisee --> UC20

' Связи инженера
Engineer --> UC1
Engineer --> UC14
Engineer --> UC21

' Связи администратора
Admin --> UC22
Admin --> UC25
Admin --> UC26
Admin --> UC27

' Связи системы
System --> UC6
System --> UC15
System --> UC17
System --> UC28
System --> UC29

' Отношения include
UC1 ..> UC23 : <<include>>
UC1 ..> UC24 : <<include>>
UC6 ..> UC7 : <<include>>
UC6 ..> UC8 : <<include>>
UC9 ..> UC10 : <<include>>
UC9 ..> UC11 : <<include>>
UC14 ..> UC16 : <<include>>
UC15 ..> UC17 : <<include>>
UC18 ..> UC27 : <<include>>
UC20 ..> UC27 : <<include>>
UC20 ..> UC21 : <<include>>

' Отношения extend
UC15 ..> UC19 : <<extend>>
UC12 ..> UC13 : <<extend>>
UC16 ..> UC17 : <<extend>>

' Отношения generalization
UC7 --|> UC6
UC8 --|> UC6

@enduml