На уровне концептуального проектирования архитектура FoodLifeCycle изолирует данные каждого контекста. Межсервисные связи лишены физических ограничений FOREIGN KEY и реализуются асинхронно.
Ниже представлена концептуальная схема взаимодействия 6 распределенных баз данных:
2. Физическая ER-модель. Часть 1: Домены IAD и Engagement
В этой части подробно декомпозированы структуры баз данных auth_db и notification_db. Они отвечают за управление сессиями, правами мультитендентных групп (HOME / OFFICE) и логирование пуш-нотификаций.
3. Физическая ER-модель. Часть 2: Домен Мастер-Данных (MDM)
Эта часть детально описывает физическую топологию базы данных mdm_db. СУБД выступает в роли изолированного статического ядра, обслуживающего recipes-service. Она хранит нормативные константы пищевой ценности, связи штрих-кодовых маппингов, а также технологические карты для кулинарного цикла.
Сюда же вынесен изолированный контур асинхронного накопления тикетов ручной модерации (moderation_tickets), который собирает грязный вывод GPU-воркеров (image-processor, grpc-analytics) при нечетком сканировании ОФД-чеков или голосовых рапортов. Это исключает блокировки операционной базы склада при ожидании ручного подтверждения от пользователя во Flutter-приложении.
4. Физическая ER-модель. Часть 3: Операционный домен склада (INVENTORY)
Данный раздел детально описывает транзакционную структуру базы данных fridge_db. В соответствии с бизнес-логикой симулятора, эта СУБД объединяет в себе все операционные таблицы движения ресурсов. Сюда инкапсулированы партионный учет остатков, фискальные чеки ОФД (store_receipts), каскадный кулинарный контур приготовления (cooking_history), а также сессии порционного съедения (consumption_sessions) и порчи продуктов (waste_logs).
Схлопывание разрозненных черновиков в единую базу данных fridge_db позволило выполнять сложные уменьшения весов по алгоритму FIFO (ORDER BY created_at ASC) и реактивные пересчеты меню в рамках одной СУБД [bupar-audit-service]. Это исключило распределенные блокировки таблиц и гарантировало высокую отказоустойчивость при пиковых нагрузках со смартфона.
5. Физическая ER-модель. Часть 4: Аналитика и Сквозной Процессный Аудит
Заключительная часть физической ER-модели консолидирует структуры данных предиктивного домена AFFINITY и контура сквозного процессного майнинга PMA. Эти домены функционируют в режиме накопления и обработки аналитических метрик (OLAP), изолируя тяжелые математические расчеты и сбор сквозных трейсов от операционного ядра склада.
Связующими звеньями между транзакционным слоем (fridge_db) и аналитикой здесь выступают: * product_id / master_product_id — связывает локальные Read-модели дефолтных весов номенклатуры. * case_id — сквозной идентификатор экземпляра процесса (ID конкретной партии еды), связывающий шаги закупки, готовки, порционного съедения и утилизации в единый направленный граф векторов для Process Mining пакета bupar.
6. Физическая DDL-спецификация структуры affinity_db и bupar_db
Скрипт разворачивает финальные аналитические таблицы персистентного слоя и оптимизирующие индексы для фоновых математических планировщиков Celery Beat.
-- ============================================================================-- СХЕМА АНАЛИТИЧЕСКОЙ СУБД РЕКОМЕНДАЦИЙ (affinity_db)-- ============================================================================CREATEDATABASE affinity_db;\c affinity_db;-- 1. Таблица разреженной матрицы предпочтений группCREATETABLE user_product_affinity ( home_group_id VARCHAR(50) NOTNULL, master_product_id VARCHAR(50) NOTNULL, score INTEGERNOTNULLCHECK (score BETWEEN0AND100), last_interaction TIMESTAMPWITHTIMEZONEDEFAULT NOW(),PRIMARYKEY (home_group_id, master_product_id));-- 2. Локальный кэш-справочник базовых весов (Read-модель репликации из MDM)CREATETABLE affinity_product_reference ( product_id VARCHAR(50) PRIMARYKEY, base_affinity_score INTEGERNOTNULLCHECK (base_affinity_score BETWEEN0AND100));-- Индекс для ночного Крон-движка деградации весов (03:00)CREATEINDEX idx_affinity_cron_decay ON user_product_affinity (last_interaction ASC) WHERE score >10;-- ============================================================================-- СХЕМА АНАЛИТИЧЕСКОЙ СУБД PROCESS MINING (bupar_db)-- ============================================================================CREATEDATABASE bupar_db;\c bupar_db;CREATE EXTENSION IFNOTEXISTS"pgcrypto";-- Плоский журнал логов событий (Event Log) для Process MiningCREATETABLE bupar_event_logs ( event_id UUID PRIMARYKEYDEFAULT gen_random_uuid(), case_id VARCHAR(50) NOTNULL, -- Сквозной маркер партии/цепочки еды trace_id VARCHAR(50) NOTNULL, -- Ссылка на технический UUID трейсинга логов Loki home_group_id VARCHAR(50) NOTNULL, activity_name VARCHAR(100) NOTNULL, -- Шаги: PRODUCT_BATCH_PURCHASED, MANUAL_DISH_COOKED, FOOD_CONSUMED, FOOD_WASTED payload_details JSONB NOTNULL, -- Слепок физических параметров мутации event_timestamp TIMESTAMPWITHTIMEZONEDEFAULT NOW());-- Композитный индекс: критически важен для пакета bupar при сборке хронологических графовCREATEINDEX idx_bupar_case_id_timeline ON bupar_event_logs(case_id, event_timestamp ASC);-- Индекс для мгновенной фильтрации технического следа по trace_id шлюза NginxCREATEINDEX idx_bupar_logs_trace_id ON bupar_event_logs(trace_id);SELECT'ПРОЕКТИРОВАНИЕ ФИЗИЧЕСКОГО И СТРУКТУРНОГО СЛОЯ ЕДИНЫХ ER-ДИАГРАММ 6 СУБД ЗАВЕРШЕНО!'AS progress;
Дополнение 1
Физическая топология и сквозные связи слоев данных (ERD Model)
Ниже представлена концептуальная схема взаимодействия и изоляции баз данных проекта FoodLifeCycle, построенная на основе развернутых в манифесте SQL DDL миграций и Redis/Kafka контрактов.
Дополнение 2
Физическая топология и сквозные связи слоев данных (ERD Model)
Ниже представлена исчерпывающая физическая схема взаимодействия и изоляции баз данных проекта FoodLifeCycle, содержащая все 22 таблицы и структуры, зафиксированные в топологии физического слоя архитектурного манифеста.
Дополнение 3
8.1. Физическая ER-модель базы данных: auth_db (SECURITY)
Ниже представлена детальная физическая ER-диаграмма контура авторизации, управления группами, b2b-клиентами и динамического маппинга системных ошибок СУБД auth_db.
8.1. Физическая ER-модель базы данных: auth_db (auth-service)
8.1. Физическая ER-модель базы данных: auth_db (auth-service)
8.2. Физическая ER-модель базы данных: notification_db (notification-service)