(Задание: описать принципиальную схему вашей системы)
По-скольку, описанное здесь может попадать под NDA, все конкретные наименования заменены псевдонимами (к сожалению, с некоторым обобщением). Можете считать, что здесь описан поток данных для админки, в которой рисуются таблички и графики. Функциональными объектами здесь являются сервисы/модули/кусочки кода, которые выполняют функционально-значимые преобразования объектов данных.
Для начала деревом:
- XE (сервис провайдер данных)
- Обработчик вызовов
- Проверятель доступов
- Доставатель из кэша
- Обработчик ошибок
- Билдер запроса
- Запрашиватель ГЕО-данных
- Запрашиватель АБ-групп
- Парсер данных из url-а
- Парсер header-ов
- Клиенты/Запрашиватели данных из внешних источников (не для запроса)
- Запрашиватель сырого отчета
- Скачиватель конфигурации
- Калькулятор
- Калькулятор модели
- Калькулятор SHAP-ов
- Калькулятор бустингов
- Сохранятель в кэш
- Обработчик вызовов
- BFF (backend for frontend)
- Обогатитель данными
- Обогатитель картинок
- Обогатитель данными по товару
- Обогатитель данными по продавцу
- Обогатитель маркетинговыми акциями
- Билдер ответа фронтовому сервису
- Объединитель фрагментов данных
- Обогатитель данными
- FRONT
- Билдер ответа для клиента
- Браузер
- Рендеринг страницы для пользователя
Если переложить это в принципиальную схему, где есть потоки данных, то получается так:
- START
- Проверятель доступов
- CONDITION Если доступа нет
- Вернуть ошибку END
- Доставатель из кэша
- CONDITION Если есть в кэше
- Обогатитель данными
- Билдер ответа фронту
- Билдер HTML
- Прописыватель js-скриптов END
- Запрашиватель ГЕО-данных
- Запрашиватель АБ-групп
- Парсер данных из url-а
- Парсер header-ов
- Запрашиватель сырого отчета
- Скачиватель конфигурации
- Калькулятор модели
- Калькулятор SHAP-ов
- Калькулятор бустингов
- Сохранятель в кэш
- Обогатитель данными
- Билдер ответа фронту
- Билдер ответа для клиента
- Рендеринг страницы для пользователя END
- CONDITION Если есть в кэше
- CONDITION Если доступа нет
Это существующая схема, описанная кодом и визуализированная (с помощью plantUML) sequence-диаграммой.