Обзор схемы БД
База данных — 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.