7.6 KiB
7.6 KiB
8. Структура данных и модель базы данных
8.1 Общие положения
Основное хранилище данных программного продукта реализуется на PostgreSQL. Прикладной доступ к данным осуществляется через Prisma ORM.
Модель данных должна обеспечивать хранение:
- пользователей и ролей
- компаний и профилей контрагентов
- адресов доставки
- каталога и складских остатков
- корзины и ее позиций
- заявок и заказов
- событий изменения статусов
- уведомлений и мессенджерных подключений
- бонусных и реферальных сущностей
8.2 Логические группы сущностей
В модели базы данных выделяются следующие логические группы:
- справочник пользователей и компаний
- каталог и складской контур
- заказный контур
- контур уведомлений и мессенджеров
- бонусный и реферальный контур
- административные настройки каталога
8.3 Справочник пользователей и компаний
Базовые сущности группы:
UserCompanyCounterpartyProfileDeliveryAddressRegistrationRequestInvitationMessengerConnection
Назначение группы:
- хранение учетных записей пользователей
- хранение принадлежности пользователя к компании
- хранение полного профиля контрагента
- хранение адресов доставки
- хранение заявок на подключение и приглашений
- хранение подключений Telegram и MAX
Связи группы:
- одна компания может иметь нескольких пользователей
- один пользователь может иметь один профиль контрагента
- один пользователь может иметь несколько адресов доставки
- один пользователь может иметь несколько подключенных мессенджеров
8.4 Каталог и складской контур
Базовые сущности группы:
ProductWarehouseProductStockCatalogProductTypeSetting
Назначение группы:
- хранение товарных позиций и SKU
- хранение параметров товара
- хранение остатков по складам
- хранение правил отображения и кастомизации по типам товара
Основные поля сущности Product:
skunameproductTypewidthMmlengthMthicknessMicronsleeveBrandquantityPerBoxtagsdescriptionisCustomizableisActive
Основные поля сущности CatalogProductTypeSetting:
- признак показа транспортных и упаковочных параметров
- разрешение на индивидуальную длину
- минимальная, максимальная длина и шаг
- разрешение на индивидуальную втулку
- разрешение на индивидуальную надпись
- списки стандартных значений ширины, длины, толщины, втулки, цвета и надписи
8.5 Корзина и заказный контур
Базовые сущности группы:
CartCartItemOrderOrderItemOrderStatusEvent
Назначение группы:
- хранение состава клиентской корзины
- фиксация параметров выбранного товара
- хранение заявки и заказа
- хранение истории изменения статусов
Ключевые особенности:
- корзина привязана к конкретному пользователю
- позиции корзины хранят снимок SKU, имени товара и параметров
- заказ хранит состав позиций, статус, стоимость, условия поставки и историю изменений
- события статуса обеспечивают аудит переходов между состояниями
8.6 Бонусный и реферальный контур
Базовые сущности группы:
ReferralLinkBonusTransactionRewardWithdrawalRequest
Назначение группы:
- хранение реферальных связей между клиентами
- хранение бонусных начислений и списаний
- хранение заявок на использование либо вывод бонусов
8.7 Основные связи между сущностями
Укрупненная структура связей определяется следующими правилами:
Companyобъединяет пользователей одной клиентской организацииUserсвязан сCounterpartyProfile,DeliveryAddress,MessengerConnection,Cart,Order,BonusTransactionиRewardWithdrawalRequestCartсодержит наборCartItem, привязанных к конкретнымProductOrderсодержит наборOrderItemи историюOrderStatusEventProductсвязан с остаткамиProductStock, распределенными по сущностямWarehouse- настройки параметров по товарному направлению хранятся в
CatalogProductTypeSetting - реферальные связи реализуются через
ReferralLink, связывающий одного пользователя с другим пользователем
8.8 Требования к хранению прикладных данных
Модель базы данных должна обеспечивать:
- уникальность ключевых идентификаторов
- хранение дат создания и изменения сущностей
- хранение параметров товарных позиций в структурированном виде
- хранение истории статусов и действий
- хранение интеграционных идентификаторов для связи с внешними системами
8.9 Требования к расширяемости модели
Структура базы данных должна позволять:
- добавлять новые типы продукции без изменения базовой логики ролей и заказов
- расширять набор параметров каталога
- развивать бонусный контур без нарушения заказного контура
- расширять интеграции с 1С и иными внешними системами