Архитектура и интеграции¶
Архитектура¶
Контейнерная диаграмма (C4 Container)¶
C4Container
title Диаграмма контейнеров для Botanical SaaS MVP
Person(user, "Пользователь")
System_Boundary(sys, "Система") {
Container(spa, "Single Page Application", "Angular 21, OpenLayers", "Пользовательский интерфейс")
Container(static, "Frontend Static", "nginx", "Контейнер для хранения<br/> статических frontend-файлов")
Container(backend, "Backend Business Logic", "Spring Boot", "Бизнес-логика")
ContainerDb(reldb, "Relational DB", "PostgreSQL + PostGIS", "Экземпляры растений, списки,<br/> пользователи, RBAC-роли")
ContainerDb(objStore, "Object Storage", "MinIO", "Фотографии и мультимедиа.<br/> Файлы импорта коллекций")
}
Boundary(ext, "Внешние системы", "") {
Container_Ext(global, "global", "Таксономический справочник")
Container_Ext(vernacular, "WikiData", "Справочник народных названий<br/> растений")
Container_Ext(llm, "LLM", "Интеллектуальное распознавание<br/> видов")
}
Rel(user, spa, "Использует для<br/> управления коллекциями растений")
Rel(spa, static, "Получает Angular<br/> static UI bundles", "HTTPS")
Rel(spa, backend, "Отправляет API-вызовы", "HTTPS REST")
Rel(backend, reldb, "Читает/записывает данные", "SQL")
Rel(backend, objStore, "Загружает/читает медиа", "S3 API")
Rel(backend, global, "Запрашивает таксоны/культивары,<br/> записывает культивары", "HTTPS/REST")
Rel(backend, vernacular, "Получает названия видов<br/> на национальных языках", "HTTPS/REST")
Rel(backend, llm, "Использует LLM API<br/> для получения подсказок по названиям видов", "HTTPS/OpenAI API compatible")
UpdateLayoutConfig($c4ShapeInRow="5", $c4BoundaryInRow="3")
Потоки интеграции¶
Импорт каталога таксономии¶
Система включает ручной механизм обновления внутреннего справочника таксонов из выгрузки xls с сохранением идентификаторов.
Пополнение национальных названий таксонов¶
Система включает автоматический механизм пополнения внутреннего справочника народных названий растений из открытых источников с учетом ограничений публичного API.
Smart Import¶
Платформа включает мастер импорта XLS для переноса существующих коллекций растений в систему.
Поток поддерживает загрузку файла, выбор листа, сопоставление колонок (в том числе с помощью ИИ), определение значений, нечеткое совпадение, асинхронную обработку, построчные результаты, экспорт Excel с ошибочными строками.
Для сопоставления названий колонок атрибутам сущностей системы, а также для более точного распознавания вида, культивара или перечисления(enum'а) предусмотрена интеграция с LLM и легкая обвязка(harness). Подтверждение распознавания (если оно не было 100%) осуществляется пользователем.