ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ "ИНТЕЛЛА АЙТИ" 6671329002/667101001
Описание технической архитектуры программного обеспечения «Автоматизированная Интеллектуальная Система Транспортных процессов (АИСТ)».
Уровень | Компонент | Технология |
Представление | Клиентское веб-приложение (SPA) | React 19 + Vite |
Бизнес-логика | Два REST API-сервиса | Python / FastAPI |
Данные | Реляционная СУБД | PostgreSQL |
Библиотека / Инструмент | Назначение |
React 19 | UI-фреймворк, компонентная модель |
Vite 7 | Сборщик, dev-сервер с прокси |
React Router DOM 7 | Клиентская маршрутизация (SPA) |
OpenLayers | Интерактивная карта, работа с геоданными |
Lucide React | Иконки интерфейса |
proj4 | Перепроецирование координат |
jsPDF + jspdf-autotable | Генерация PDF-отчётов |
ExcelJS + file-saver | Экспорт данных в Excel |
Модуль | Основные компоненты | Назначение |
Карта | MapComponent, StationOverlay, WeatherOverlay, ClusterDeviceList | Интерактивная карта устройств с кластеризацией и оверлеями |
Видеостена | VideoWall, VideoWallCameraItem, CameraArchiveView | Мониторинг нескольких камер одновременно |
Метеостена | MeteoWall, WeatherRulesSettingsModal, WeatherNotificationsPanel | Таблица данных АСМО с цветовой индикацией |
Модуль | Основные компоненты | Назначение |
Заявки | EventList, EventFilterPanel, EventModal, CreateIssueForm | Журнал заявок: создание, просмотр, фильтрация |
ТПИ | TpiModal, ImagesModal, TextImageEditor, ScenarioModal | Управление табло: сценарии, изображения |
Интенсивность | IntensitySegmentModal, IntensityPointOverlay | Визуализация интенсивности движения на карте |
Пользователи | UsersList, UsersModal, AddUserModal, EditUserModal | Управление учётными записями |
Документы / Контракты | DocumentsList, ContractsList, AddModal, EditModal | Хранение и учёт документов и договоров |
Настройки | SettingsModal, Sidebar, Header | Фильтры, параметры карты, вид приложения |
Ресурс | Маршруты | Описание |
/routes/ | GET (list, get) | Справочник автодорог (маршрутов) |
/camera/ | GET (list, get, last, current) | Список видеокамер и их текущий статус |
/station/ | GET (list, get, archive, last_report) | Список метеостанций АСМО и архивные данные |
/tpi_device/ | GET (list, get) | Список устройств ТПИ |
/puid/ | GET (list, get, last_reports, last_data) | Список ПУИД и последние данные по интенсивности |
/puids/last_reports/ | GET | Последние отчёты по всем ПУИД |
Ресурс | Маршруты | Описание |
/puids/last_data/ | GET | Агрегированные данные по всем ПУИД |
Модуль | Маршруты | Операции |
Аутентификация | /api/token | POST (получение JWT) |
Пользователи | /api/site/{site_id}/users/, /api/users/info/, /api/users/change_password/ | CRUD, смена пароля |
Площадки и регионы | /api/site/, /api/site/{id}/region/ | GET |
ТПИ-устройства | /api/region/{region_id}/tpi/tpi _device/ | CRUD, apply (применить сценарий), apply_alert, status, script |
ТПИ-изображения | /api/site/{id}/tpi/tpi_image/, /tpi_image_dir/, /tpi_pict/ | CRUD, загрузка файлов |
ТПИ-сценарии | /api/region/{id}/tpi/tpi_devic e/{id}/tpi_script_item/ | CRUD (позиции сценария) |
Сохранённые сценарии | /api/site/{id}/tpi/saved_tpi_sc enario/, | CRUD |
Модуль | Маршруты | Операции |
| saved_tpi_script_item/, saved_tpi_script_item_image/ |
|
Метео-оповещения (правила) | /api/site/{id}/tpi/meteo_alert_ rule/, meteo_rule_cond/, meteo_rule_image/, meteo_alert/ | CRUD |
Метео-каналы | /api/meteo_channel/ | GET |
Камеры (статус, снимки) | /api/site/{id}/camera_status/, camera/{id}/samples/, camera/{id}/params/ | GET, POST |
Заявки | /api/site/{id}/issue/issue/ | CRUD + загрузка файлов, сообщения, сроки |
Инциденты/ДТП | /api/site/{id}/accidents/accide nt/ | CRUD |
Договоры | /api/site/{id}/contract/contrac t/, contractor/, official/, curator/, contract_route/, contract_route_curator/ | CRUD |
Документы ПОДД | /api/site/{id}/podd/podd_file/ | CRUD + загрузка файлов |
Справочники | /api/issue_status/, incident_type/, submission_status/, issue/user_role/, img_ratio/ | GET |
Права доступа | /api/site/{id}/permission | GET |
Группа | Сущности |
Справочник дорог | routes |
Устройства | camera, station, tpi_device, puid |
Телеметрия | данные последних отчётов устройств (last_report, архивы станций, отчёты ПУИД) |
Группа | Сущности |
Организационная структура | site, region, routes |
Пользователи | users, roles, permissions |
ТПИ-контент | tpi_image, tpi_image_dir, tpi_pict, tpi_script_item |
ТПИ-сценарии | saved_tpi_scenario, saved_tpi_script_item, saved_tpi_script_item_image |
Метео-правила | meteo_alert_rule, meteo_rule_cond, meteo_rule_image, meteo_alert, meteo_channel |
Камеры (статус) | camera_status, camera_samples, camera_params |
Заявки | issue, issue_status, issue_file, issue_message, issue_deadlines, user_role |
Инциденты | accident, incident_type, submission_status |
Договоры | contract, contractor, official, curator, contract_route, contract_route_curator |
Документы ПОДД | podd_file |
Справочники | img_ratio |
Система | Адрес | Тип вызова | Назначение |
Softlogic AI Demo | .ai/api (/api/v3) | Браузер → через Nginx-прокси | Синхронизация заявок, ИИ-распознавание нарушений |
Softlogic Download | https://download-demo.softlogic.ai | Браузер → через Nginx-прокси | Хранилище медиафайлов (изображения заявок) |
Яндекс.Карты | *.maps.yandex.net, api-maps.yandex.ru | Браузер → напрямую | Тайловая основа карты, слой пробок, |
Система | Адрес | Тип вызова | Назначение |
|
|
| слой дорожных событий |
Weather Proxy | https://weather-proxy-sy5z.onrender.com | Браузер → напрямую | Погодные тайловые слои на карте (обёртка над OpenWeatherMap) |
Соединение | Протокол | Формат | Особенности |
Браузер ↔ Nginx | HTTPS | — | TLS- терминирование |
Nginx ↔ bob_front | HTTP | JSON | Basic Auth в заголовке Authorization |
Nginx ↔ aist_front | HTTP/HTTPS | JSON | Bearer JWT в заголовке Authorization |
FastAPI ↔ PostgreSQL | TCP (PostgreSQL wire protocol) | — | ORM (предположительно SQLAlchemy) |
Браузер → Softlogic | HTTPS через Nginx-прокси | JSON | Bearer Auth |
Браузер → Изображения | HTTPS через Nginx-прокси | binary | — |
bob_front ↔ Устройства | TCP (IP) | XML / проприетарный | Прямое соединение с устройствами |
Тип | objectType | Источник статуса | Логика |
Видеокамера | camera | last_report (время последнего снимка) | < 2 ч — активна; 2– 6 ч — предупреждение; ≥ 6 ч — неактивна |
Метеостанция | station | поле active | 1 — активна, иначе — неактивна |
ТПИ | tpi | поле active | 1 — активно, иначе — неактивно |
ПУИД | puid | поле active | 1 — активен, иначе — неактивен |
Заявка | event | status_id | new / in_work / completed / rejected / verification_required / to_implementation |
Сервис | Стратегия | TTL / Интервал |
weatherDataService | Кэш в памяти + автообновление | каждые 10 мин, синхронизировано с часами |
weatherAnalyticsService | Автообновление + pub/sub | каждые 60 сек |
tpiImageCache | Кэш в памяти, пакетная загрузка (3 шт.) | TTL 15 мин |
meteoDataService | Простой кэш | TTL 5 мин |
Настройки / фильтры | localStorage | Постоянно (до явного сброса) |
Категория | Технология | Версия | Назначение |
Frontend | React | 19 | UI-фреймворк |
| Vite | 7 | Сборка, HMR, dev-прокси |
| React Router DOM | 7 | Клиентская маршрутизация |
| OpenLayers | — | Интерактивная карта |
Категория | Технология | Версия | Назначение |
| proj4 | — | Перепроецирование координат |
| Lucide React | — | Иконки |
| jsPDF + autotable | — | Генерация PDF |
| ExcelJS + file-saver | — | Экспорт Excel |
Backend | Python | 3.x | Язык разработки сервисов |
| FastAPI | — | REST API- фреймворк (bob_front, aist_front) |
| Uvicorn / Gunicorn | — | ASGI-сервер |
База данных | PostgreSQL | — | Реляционная СУБД |
Инфраструктура | Nginx | — | Reverse proxy, раздача статики, TLS |
Безопасность | HTTP Basic Auth | — | Аутентификация bob_front |
| OAuth2 + JWT | — | Аутентификация aist_front |
Внешние сервисы | Яндекс.Карты | — | Тайловая основа карты, пробки, дорожные события |
| OpenWeatherMap (через прокси) | — | Погодные слои на карте |
| Softlogic AI | — | ИИ-распознавание, синхронизация заявок |