Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет_пкапи_логистическая платформа.docx
Скачиваний:
12
Добавлен:
02.12.2025
Размер:
658 Кб
Скачать
☆

2. Архангельский Максим Вячеславович — Роль: Архитектор приложения

В рамках текущего проекта были спроектированы следующие модули:

  • Order Service

  • Courier Service

  • Route Optimization Service

  • Notification Service

  • Tracking Service

  • Config Server

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

  1. Order Service

Ответственность:

  • Полный жизненный цикл заказа: создание, редактирование, отмена.

  • Управление статусами заказа (новый, назначен, в доставке, доставлен, отменен).

  • Назначение заказов курьерам с учетом их доступности и загрузки.

  • Валидация бизнес-правил при работе с заказами.

  1. Courier Service

Ответственность:

  • Управление профилями курьеров (личные данные, статус, типы доставки).

  • Контроль доступности курьеров (активен/неактивен).

  • Назначение текущих заданий и отслеживание загрузки.

  • Расчет производительности и статистики курьеров.

  1. Route Optimization Service

Ответственность:

  • Геокодирование адресов в координаты через внешние API.

  • Расчет оптимальных маршрутов с использованием алгоритмов TSP/VRP.

  • Определение времени прибытия (ETA) с учетом дорожной ситуации.

  • Кэширование результатов для снижения нагрузки.

  1. Notification Service

Ответственность:

  • Управление шаблонами сообщений для разных каналов.

  • Роутинг уведомлений по каналам доставки (SMS/email).

  • Интеграция с внешними провайдерами рассылок.

  • Обработка событий из брокера сообщений.

  1. Tracking Service

Ответственность:

  • Прием GPS-координат от мобильных устройств.

  • Валидация и фильтрация данных о местоположении.

  • Генерация гео-событий (прибытие в зону, приближение к точке).

  • Хранение и предоставление актуального местоположения курьеров.

  1. Config Server

Ответственность:

  • Централизованное хранение конфигураций всех микросервисов.

  • Version-controlled управление настройками через Git.

  • Предоставление конфигураций по запросу сервисов.

  • Обеспечение согласованности настроек across всех инстансов.

Параметры поведения приложения, вынесенные в конфигурацию

  1. Order Service

Параметры:

Yaml

order:

validation:

max-order-weight-kg: 50

allowed-delivery-timeframes: ["09:00-18:00", "19:00-23:00"]

assignment:

auto-assignment-enabled: true

max-orders-per-courier: 10

Причины выноса:

  • max-order-weight — ограничения могут меняться в зависимости от типа транспорта.

  • delivery-timeframes — временные окна доставки могут адаптироваться под сезонность.

  • auto-assignment — возможность быстрого переключения между ручным и автоматическим назначением.

  1. Courier Service

Параметры:

Yaml

courier:

status:

auto-inactive-after-minutes: 120

performance:

min-delivery-score: 4.5

max-active-orders: 5

Причины выноса:

  • auto-inactive — автоматическое снятие с линии при простое.

  • delivery-score — пороговые значения для отсева некачественных курьеров.

  • max-active-orders — ограничение нагрузки на курьера для обеспечения качества.

  1. Route Optimization Service

Параметры:

yaml

routing:

optimization:

algorithm: "time_based"

constraints:

max-route-duration-minutes: 480

Причины выноса:

  • algorithm — смена стратегии оптимизации без переписывания кода.

  • max-route-duration — compliance с трудовым законодательством.

  1. Notification Service

Параметры:

yaml

notification:

rules:

order-created:

channels: ["sms", "email"]

order-delayed:

channels: ["sms"]

Причины выноса:

  • channels — гибкое управление каналами коммуникации с клиентами.

  1. Tracking Service

Параметры:

yaml

tracking:

location:

update-interval-seconds: 30

events:

geofence:

radius-meters: 150

Причины выноса:

  • update-interval — баланс между точностью и энергопотреблением.

  • radius-meters — настройка чувствительности гео-событий.

  1. Config Server

Параметры:

yaml

config:

server:

git-uri: "https://gitlab.com/logistics-platform/config-repo.git"

refresh-rate: "30s"

encrypt:

enabled: true

key: "${CONFIG_ENCRYPTION_KEY}"

Причины выноса:

  • git-uri — возможность быстрого переключения между staging/prod репозиториями.

  • refresh-rate — контроль частоты обновления конфигов без перезапуска сервисов.

  • encrypt — безопасное хранение чувствительных данных (пароли, API-ключи).

Примеры сценариев

Сценарий 1. Автоназначение заказов

Если в конфиге указано:

yaml

order:

assignment:

auto-assignment-enabled: true

max-orders-per-courier: 8

Тогда Order Service автоматически назначает заказы свободным курьерам, но не более 8 заказов на одного курьера.

Сценарий 2: Контроль качества курьеров

Если в конфиге указано:

yaml

courier:

performance:

min-delivery-score: 4.7

auto-inactive-after-minutes: 90

Тогда Courier Service автоматически переводит в неактивный статус курьеров с рейтингом ниже 4.7 и тех, кто не подтверждал активность более 90 минут.

Сценарий 3: Временные ограничения доставки

Если в конфиге указано:

yaml

order:

validation:

allowed-delivery-timeframes: ["09:00-13:00", "14:00-18:00"]

max-order-weight-kg: 30

Тогда Order Service отклоняет заказы с весом более 30кг и заказы на доставку вне разрешенных временных окон.

Сценарий 4: Уведомления о задержках

Если в конфиге указано:

yaml

notification:

rules:

order-delayed:

channels: ["sms", "email"]

delay-threshold-minutes: 15

Тогда Notification Service отправляет SMS и email уведомления клиентам, если заказ задерживается более чем на 15 минут.

Взаимодействие с другими частями системы

Взаимодействие с Config Server

При запуске каждого сервиса:

  1. Сервис читает из переменных окружения адрес Config Server

  2. Запрашивает свою конфигурацию по имени (order-service.yml, courier-service.yml)

  3. Получает и применяет настройки

  4. Подписывается на обновления (webhook или polling)

Пример конфигурации для Order Service:

yaml

# order-service.yml

server:

port: 8080

spring:

datasource:

url: jdbc:postgresql://${DB_HOST:localhost}:5432/order_db

order:

validation:

max-weight: 50

allowed-timeframes: ["09:00-23:00"]

Взаимодействие между сервисами:

  1. Order Service взаимодействует с:

  • Courier Service для проверки доступности и назначения курьеров.

  • Route Optimization Service для расчета маршрутов при создании заказа.

  • Config Server — загрузка настроек при старте.

  • Брокером сообщений — публикует события ORDER_CREATED, ORDER_STATUS_CHANGED.

  1. Courier Service взаимодействует с:

  • Order Service — предоставляет информацию о доступных курьерах.

  • Config Server — загрузка настроек при старте.

  • Tracking Service — получает актуальное местоположение курьеров.

  1. Route Optimization Service взаимодействует с:

  • Order Service — получает данные о заказах для маршрутизации.

  • Внешними картографическими API для геокодирования и построения маршрутов.

  • Config Server — загрузка настроек при старте.

  • Redis для кэширования результатов.

  1. Tracking Service взаимодействует с:

  • Мобильными приложениями курьеров — прием GPS-данных.

  • Брокером сообщений — публикует события о перемещениях.

  • Config Server — загрузка настроек при старте.

  • Redis — хранение актуальных позиций.

  1. Notification Service взаимодействует с:

  • Брокером сообщений — подписывается на события для триггеров уведомлений.

  • Config Server — загрузка настроек при старте.