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

Модель данных (ER)

Диаграмма отражает основные таблицы MariaDB и связи между ними.

uml diagram

Связи: - userscargo_requests (1:M) — владелец заявки. - usersdialogue_history (1:M) — история диалога по пользователю. - userstransporter_matches (1:M) — перевозчик в конкретном матче. - usersuser_state (1:0..1) — служебное состояние (JSON) для Telegram‑бота. - cargo_requeststransporter_matches (1:M) — матчи по заявке (один перевозчик на заявку по уникальному индексу).

Important

Telegram‑ID (tg_id) может не помещаться в 32‑битный INT, поэтому в MariaDB используйте BIGINT (это соответствует тому, как идентификаторы объявлены в коде Telegram‑бота).

Note

Канонический формат телефона в системе — 380XXXXXXXXX (E.164 без плюса). Телефон в этом виде хранится в users.phone и используется для сопоставления пользователя между сервисами. Формат с плюсом (+380...) применяется только там, где это требуется внешней библиотекой/интеграцией (например, Telethon), и не должен попадать в БД.

Note

Таблица user_state хранит JSON‑состояние, которое Telegram‑бот использует для служебных вещей: последняя роль, previous_response_id, doc‑flow и последние вызовы MCP‑инструментов. Если таблицы нет, бот будет работать, но часть поведения (например, «память» роли после перезапуска) пропадёт.

Таблица request_serials используется MCP‑инструментом send_docx_form для генерации последовательного номера заявки (через автоинкремент id).