Перейти к содержанию

Обзор схемы БД

База данных — MySQL 8.0 (taomaster), ≈ 80 таблиц. Схема разворачивается миграциями Laravel (database/migrations/, ≈ 116 файлов). Тесты используют SQLite in-memory.

Полное описание каждой таблицы и колонки — в Справочнике таблиц. Ниже — карта доменов.

Домены данных

Схема разбита на домены. Связь между доменами — по ключевым сущностям (agents → clients → orders → shipments → deliveries):

flowchart LR
    A["Арендаторы и доступ<br/>agents · agent_staff · access_*"]
    C["Клиенты и тарифы<br/>users · clients · client_tariffs"]
    O["Заказы<br/>orders · order_items · item_groups"]
    L["Логистика<br/>shipments · deliveries · каталоги"]
    F["Финансы<br/>balance_ops · invoices · rates"]
    M["Чат и сервис<br/>chats · messages · translations"]

    A --> C --> O --> L
    A -.СРМ-тарифы.-> F
    O --> F
    O --> M

Состав каждого домена — в таблицах ниже; полное описание колонок — в Справочнике таблиц.

Группы таблиц

Арендаторы, СРМ-тарифы и доступ

Таблица Назначение
agents Посредник (арендатор): тариф СРМ, баланс ¥, поддомен, статус
agent_staff Сотрудники посредника
crm_tariffs Тарифы СРМ (подписка посредника)
crm_charges Аудит списаний по тарифу СРМ
agent_invoices Счета СРМ посреднику (пополнение баланса)
srm_admins Администраторы СРМ
access_objects Объекты доступа
access_groups Группы прав (per-agent, клонируются из эталонных)
access_group_permissions Матрица прав (уровни × scope)

Клиенты и тарифы

Таблица Назначение
users Пользователь (телефон)
clients Клиент посредника
client_memberships Связь пользователь ↔ клиент (роль, invite_hash)
client_tariffs Тарифы клиента (комиссия)
client_subtariffs Подтарифы по сайтам выкупа
client_tariff_steps Ступени комиссии (ладдер)
client_addresses / client_recipients Адреса и получатели клиента
messenger_contacts Привязка телефон ↔ chat_id (Telegram/MAX)

Заказы

Таблица Назначение
orders Заказ
order_items Позиции заказа (+ переопределения посредника agent_*)
item_groups Группы консолидации внутри заказа
order_calc_snapshots Снимок расчёта на момент оплаты
order_status_history История смены статусов
order_activities Журнал событий заказа

Логистика (отгрузки, грузы, каталоги доставки)

Таблица Назначение
shipments Отгрузка (часть заказа в одной посылке)
shipment_items Позиции отгрузки (дробление товара)
shipment_services Услуги отгрузки (доставка/страховка/доп)
deliveries Груз (набор оплаченных отгрузок)
delivery_shipments Связь груз ↔ отгрузка
delivery_history История груза
delivery_countries / delivery_cities Каталог стран/городов
cargo_methods / cargo_speed_methods Способы доставки из Китая + скорости
delivery_packagings / delivery_insurances Упаковки / страховки (расширенные)
delivery_transport_companies / delivery_pickup_points ТК / пункты самовывоза
agent_catalog_disables Отключение системного дефолта каталога у посредника
delivery_methods / packagings / insurances / transport_companies / pickup_points Простые справочники (legacy, оставлены для совместимости)

Финансы, курсы, оплата

Таблица Назначение
client_balance_accounts Счета клиента (RUR / CNY)
balance_ops Единый леджер операций
invoices Счёт-реквизиты в чате
requisite_codes Короткие коды реквизитов (/r/{code})
payment_cards Карты посредника для оплаты (номер шифруется)
buyout_accounts Выкупные аккаунты на площадках
buyout_sites Каталог сайтов выкупа
rates Курс посредника ¥→₽
rate_steps Ступенчатые курсы (ладдер)
agent_rate_settings Настройки курса ($, кросс, тексты доставки)
currencies / agent_currencies Справочник валют / валюты посредника
wallet_topups Пополнение Alipay/WeChat (доп.услуга)
bestchange_rates / bestchange_changers Данные bestchange

Чат и коммуникации

Таблица Назначение
chats Чат заказа (метки прочтения, автоподпись)
messages Сообщения (тип отправителя, meta: реакции/файлы/перевод)

Доп. услуги к товарам

Таблица Назначение
services Каталог услуг (фото/видео/обмер/пересчёт)
agent_service_settings Подключение услуги посредником (free/paid)
agent_service_prices Цена услуги по валюте заказа
order_item_services Заказанная услуга на позиции
service_media Медиа услуги/позиции (фото/видео)
service_upload_tokens Токены публичной загрузки медиа (/su/{token})

Локализация и сервис

Таблица Назначение
translations Локальный словарь (overlay)
translation_cache Кэш автопереводов Google
checklist_steps Шаги стартового чек-листа посредника
agent_preferences Настройки посредника (уведомления, время работы, самовыкуп, оплата)
app_settings Глобальные key-value настройки приложения
custom_notifications Кастомные уведомления (посредник/СРМ → клиентам)
notes Заметки сотрудников (личные и по объектам)
topup_requests Запросы пополнения (по заказу или вне заказа)
extension_tokens Токены Chrome-расширения клиента
agent_countries Справочник стран посредника (онбординг)
product_categories Категории товаров (система + свои)
site_favicons Кэш фавиконов площадок
feedback_tickets Тикеты обратной связи (скриншот + контекст)

Инфраструктура Laravel

sessions, password_reset_tokens, cache, jobs, job_batches, failed_jobs.