WEB UI на Python для запуска скриптов по генерации маршрутов Багажа
| docs | ||
| src | ||
| .dockerignore | ||
| .gitignore | ||
| docker-compose.yml | ||
| Dockerfile | ||
| README.md | ||
| requirements.txt | ||
VKO Test Scripts - Web UI
Веб-интерфейс на Flask для запуска тестовых сценариев генерации маршрутов отслеживания багажа.
Возможности
- Два режима запуска:
- Одиночный запуск: Быстрый запуск любого скрипта с указанием параметров.
- Пакетный запуск: Создание, сохранение и запуск сложных планов, состоящих из нескольких сценариев.
- Динамическое обнаружение скриптов: Новые файлы
.py, добавленные в папкуscripts, автоматически появляются в UI. - Централизованная конфигурация: Все настройки (URL, подключения к БД) и определения скриптов находятся в одном файле —
config.yaml. - Настройка параметров запуска:
- Дата, номер рейса, номер LPN (с автогенерацией), направление.
- Для пакетного режима: количество повторов и распределение запусков по времени.
- Сохранение и загрузка планов: Пакетные сценарии можно сохранять в виде
.jsonфайлов и загружать их. - Отображение логов: Результаты выполнения скриптов выводятся на страницу.
Установка и запуск
-
Убедитесь, что у вас установлен Python 3.10+.
-
Настройте виртуальное окружение и установите зависимости:
# Создать виртуальное окружение python -m venv venv # Активировать его # Windows venv\Scripts\activate # macOS/Linux # source venv/bin/activate # Установить зависимости pip install -r requirements.txt -
(Опционально) Перед первым запуском просмотрите и при необходимости отредактируйте файл
config.yaml. -
Запустите Flask-приложение:
python app.py -
Откройте браузер и перейдите по адресу:
http://localhost:5000
Конфигурация (config.yaml)
Это центральный файл для всех настроек.
settings: Секция содержит глобальные параметры, такие как URL-адреса API и строки подключения к базам данных.scripts: Секция определяет доступные для запуска скрипты.- Ключ (например,
vko_normal_bag): Уникальный идентификатор скрипта. title: Название, которое отображается в выпадающих списках в UI.module: Имя файла скрипта в папкеscripts(без расширения.py).function: Имя функции внутри модуля, которая будет вызвана.
- Ключ (например,
Важно! При добавлении нового
.pyфайла в папкуscriptsприложение автоматически добавит его вconfig.yamlпри следующем запуске. Однако вам может понадобиться вручную указать правильное имяfunctionдля этого нового скрипта.
Использование
Одиночный запуск
- Перейдите на вкладку "Одиночный запуск".
- Выберите скрипт из выпадающего списка.
- Укажите параметры (или оставьте значения по умолчанию).
- Нажмите "Запустить скрипт".
Пакетный запуск
- Перейдите на вкладку "Пакетный запуск".
- Для создания нового плана:
- Нажимайте "Добавить строку" для каждого шага сценария.
- В каждой строке выберите скрипт и задайте его параметры: рейс, направление, количество повторов и общее время выполнения.
- Для сохранения плана:
- Введите имя для файла в поле "Имя плана для сохранения".
- Нажмите кнопку "Сохранить". План будет сохранен в папку
docs.
- Для загрузки плана:
- Выберите нужный план из выпадающего списка. Он загрузится автоматически.
- Для запуска:
- Нажмите "Запустить пакет".
Структура файлов
app.py: Основное Flask-приложение, которое обслуживает UI и динамически запускает скрипты.config.yaml: Центральный файл конфигурации.templates/index.html: HTML-шаблон веб-интерфейса.scripts/: Папка для хранения всех тестовых Python-скриптов.SvoTestTools.py: Модуль со вспомогательными функциями, используемыми в тестах.docs/: Папка для сохранения и загрузки планов пакетного запуска в формате.json.requirements.txt: Список зависимостей Python.
Описание тестовых сценариев
1. Сценарий vko_normal_bag_bpi (Нормальная обработка багажа)
- Назначение: Эмуляция стандартного пути багажа с имитацией ошибки (потеря трекинга) и последующего восстановления.
- Ключевые шаги:
- Регистрация: Отправляется BSM-сообщение, багаж регистрируется в системе (
RegisterPackage) на ПЛК01. - Досмотр: Багаж проходит все уровни досмотра (1, 2, 3) и радиационный контроль. На каждом этапе отправляется
PackageReportс результатом "чисто". - Имитация сбоя: Отправляется сообщение о потере трекинга (
DeregisterPackageс причинойMISSING). - Восстановление: Сразу после "потери" отправляется сообщение о нахождении "неизвестного" багажа (
RegisterPackageс причинойUnexpected). - Сортировка: Багаж отправляется на сортировщик и успешно сортируется в нужный выход.
- Регистрация: Отправляется BSM-сообщение, багаж регистрируется в системе (
2. Сценарий vko_ebs_bpi (Ранний багаж и хранение)
- Назначение: Тестирование системы раннего хранения багажа (Early Baggage Storage, EBS).
- Ключевые шаги:
- Активация EBS: Перед началом в систему отправляются сообщения о готовности и опустошении всех линий EBS.
- Регистрация и досмотр: Багаж регистрируется и проходит все уровни досмотра, как в нормальном сценарии.
- Отправка на хранение: Система направляет багаж на одну из линий EBS, что эмулируется сообщением
DeregisterPackageв соответствующей зоне. - Хранение: Скрипт ожидает 120 секунд, имитируя нахождение багажа на хранении.
- Выгрузка из EBS: По истечении времени отправляются сообщения для активации выгрузки со всех линий EBS.
- Сортировка: "Выгруженный" багаж отправляется на сортировщик и обрабатывается штатно.
3. Сценарий vko_mcs_bpi (Ручная кодировка)
- Назначение: Тестирование сценария, когда багажная бирка не может быть прочитана автоматически (No-Read), и багаж отправляется на станцию ручной кодировки (Manual Coding Station, MCS).
- Ключевые шаги:
- BSM и регистрация: Стандартная регистрация багажа.
- Имитация No-Read: На этапе считывания бирки (
ATR PackageReport) вместо реального LPN отправляется заглушка"??????????". - Досмотр: Багаж проходит досмотр, но система не знает его LPN.
- Перенаправление на MCS: Сортировщик, не сумев определить направление, отправляет багаж на специальный выход, ведущий к MCS (выход 93).
- Обработка на MCS:
- Скрипт эмулирует прибытие багажа на станцию MCS.
- Вызываются API-методы MCS:
mcs/handle(оператор "взял" багаж в работу),mcs/bag(оператор сканирует LPN вручную),mcs/bag(оператор сохраняет LPN, "привязывая" его к багажу).
- Финальная сортировка: После ручной кодировки багаж снова отправляется на сортировщик и на этот раз успешно сортируется, так как его LPN теперь известен системе.
4. Сценарий vko_mir_bpi (Ручной досмотр)
- Назначение: Тестирование сценария, когда багаж не проходит один из уровней автоматического досмотра и отправляется в комнату ручного досмотра (Manual Inspection Room, MIR).
- Ключевые шаги:
- Регистрация и досмотр (сбой): Багаж регистрируется. На 1-м уровне досмотра отправляется отчет с результатом "загрязненный" (
explosive_result = 2). - Маршрутизация на досмотр: Багаж проходит остальные уровни и, согласно результатам, система направляет его в зону ручного досмотра (КРД ВВЛ).
- Обработка в MIR:
- Эмулируется прибытие багажа в КРД и его "выбытие" из автоматической системы (
DeregisterPackage). - Вызываются API-методы MIR:
mir/handle(оператор "берет" багаж),mir/deregister(багаж удаляется из системы для ручного досмотра).
- Эмулируется прибытие багажа в КРД и его "выбытие" из автоматической системы (
- "Очистка" багажа: После "ручной проверки" вызывается API
recheck, который устанавливает багажу статус "чистый" (CLEAR). - Возврат в систему: Багаж снова регистрируется в системе через API
mir/register, как будто он выехал из комнаты досмотра. - Финальная сортировка: Багаж успешно отправляется на сортировщик.
- Регистрация и досмотр (сбой): Багаж регистрируется. На 1-м уровне досмотра отправляется отчет с результатом "загрязненный" (