10 KiB
10 KiB
4. Требования к данным и сущностям
4.1 Общие требования к данным
Основное хранилище данных программного продукта реализуется на PostgreSQL. Прикладной доступ к данным осуществляется через Prisma ORM.
Система должна обеспечивать хранение:
- пользователей и ролей
- компаний и профилей контрагентов
- адресов доставки
- каталога и складских остатков
- корзины и ее позиций
- заявок и заказов
- событий изменения статусов
- уведомлений и мессенджерных подключений
- бонусных и реферальных сущностей
4.2 Логические группы сущностей
В модели данных выделяются следующие логические группы:
- справочник пользователей и компаний
- каталог и складской контур
- корзина и заказный контур
- контур уведомлений и мессенджеров
- бонусный и реферальный контур
- административные настройки каталога
4.3 Пользователи и компании
Базовые сущности группы:
UserCompanyCounterpartyProfileDeliveryAddressRegistrationRequestInvitationMessengerConnection
Назначение группы:
- хранение учетных записей пользователей
- хранение принадлежности пользователя к компании
- хранение полного профиля контрагента
- хранение адресов доставки
- хранение заявок на подключение и приглашений
- хранение подключений Telegram и MAX
Обязательные данные:
- пользователь: идентификатор, имя, email, телефон, роль, статус, связанная компания
- компания: идентификатор, наименование, ИНН, КПП, юридический адрес, закрепленный менеджер
- профиль контрагента: реквизиты, контактные лица, служебные признаки синхронизации
- адрес доставки: идентификатор, владелец, адрес, комментарий, признак основного адреса
- заявка на подключение: инициирующая компания или контакт, статус, дата создания, комментарий менеджера
- приглашение: получатель, токен или ссылка, срок действия, статус использования
- подключение мессенджера: тип канала, внешний идентификатор, статус подключения
4.4 Каталог и складской контур
Базовые сущности группы:
ProductWarehouseProductStockCatalogProductTypeSetting
Назначение группы:
- хранение товарных позиций и SKU
- хранение параметров товара
- хранение остатков по складам
- хранение правил отображения и кастомизации по типам товара
Обязательные данные по товару:
- внутренний идентификатор
- SKU
- наименование
- тип продукции
- доступные параметры выбора
- доступные варианты товара
- складские остатки
- признаки доступности и кастомизации
Основные поля сущности Product:
skunameproductTypewidthMmlengthMthicknessMicronsleeveBrandquantityPerBoxtagsdescriptionisCustomizableisActive
Основные поля сущности CatalogProductTypeSetting:
- разрешение на индивидуальную длину
- минимальная, максимальная длина и шаг
- разрешение на втулку с логотипом
- разрешение на индивидуальную надпись
- списки стандартных значений ширины, длины, толщины, втулки, цвета и надписи
- пользовательские описания параметров
4.5 Корзина, заявки и заказы
Базовые сущности группы:
CartCartItemOrderOrderItemOrderStatusEvent
Дополнительно в прикладной модели должны существовать сущности сценариев:
- заявка на заказ
- заявка на расчет индивидуальной продукции
Назначение группы:
- хранение состава клиентской корзины
- фиксация параметров выбранного товара
- хранение заказной заявки и расчетной заявки
- хранение заказа и истории изменения статусов
Обязательные данные:
- корзина: идентификатор, владелец, состав позиций, даты создания и изменения
- позиция корзины: товар, снимок параметров, количество, комментарий
- заявка на заказ: идентификатор, пользователь-клиент, дата создания, состав позиций, комментарий, статус, закрепленный менеджер, стоимость после обработки, условия поставки
- заявка на расчет: идентификатор, пользователь-клиент, дата создания, тип продукции, параметры изделия, комментарий, статус, закрепленный менеджер, стоимость после обработки, условия поставки
- заказ: внутренний идентификатор, внешний идентификатор учетной системы, статус, состав заказа, стоимость, условия поставки, ссылка на исходную заявку
- событие статуса: объект, предыдущее состояние, новое состояние, дата и время, источник изменения, комментарий
4.6 Бонусный и реферальный контур
Базовые сущности группы:
ReferralLinkBonusTransactionRewardWithdrawalRequest
Назначение группы:
- хранение реферальных связей между клиентами
- хранение бонусных начислений и списаний
- хранение заявок на использование либо вывод бонусов
Обязательные данные:
- реферальная связь: участники связи, дата создания, статус
- бонусная операция: идентификатор операции, клиент, тип операции, сумма или объем операции, основание операции, дата и время, текущий статус
- заявка на использование или вывод: клиент, тип действия, сумма, статус, комментарии менеджера
4.7 Основные связи между сущностями
Укрупненная структура связей определяется следующими правилами:
Companyобъединяет пользователей одной клиентской организацииUserсвязан сCounterpartyProfile,DeliveryAddress,MessengerConnection,Cart,Order,BonusTransactionиRewardWithdrawalRequestCartсодержит наборCartItem, привязанных к конкретнымProductOrderсодержит наборOrderItemи историюOrderStatusEventProductсвязан с остаткамиProductStock, распределенными по сущностямWarehouse- настройки параметров по товарному направлению хранятся в
CatalogProductTypeSetting - реферальные связи реализуются через
ReferralLink, связывающий одного пользователя с другим пользователем
4.8 Структура хранения и модель базы данных
Модель базы данных должна обеспечивать:
- уникальность ключевых идентификаторов
- хранение дат создания и изменения сущностей
- хранение параметров товарных позиций в структурированном виде
- хранение истории статусов и действий
- хранение интеграционных идентификаторов для связи с внешними системами
- расширение состава параметров товаров без разрушения базовой структуры ролей и заказов