Короткая карта доменной модели. Детальные классы перечислены в Backend code map, а сценарии - в Backend flows.
client - пользователь, который создает событие/order.provider - пользователь-владелец sheet.issuer - provider внутри event model.support user - служебный пользователь поддержки, создаваемый chat_bridge.authentication.User хранит профиль, phone/email, verification state, avatar_url, строковый address, preferred_language and favorite sheets.
base.Address связан с пользователями через many-to-many. Текущая public validation временно ограничивает пользователя одним адресом. Первый адрес пользователя используется для nearby search.
UserAvatar наследует photo contract и хранит файл, URL, crop metadata и original_name.
BaseSheet - общая сущность карточки услуги/provider offer:
providercurrencysearch_tagsservice_typeservice_location_typetitle, descriptionrating, review_countstatusДоменные sheets:
JobSheet - услуги по времени, booking_mode, break_duration.BringingSheet - перевозка/доставка, capacity и параметры машины.ContractSheet - контрактное хранение/услуга, storage_time.StorageSheet - хранение товара, supports_pickup, supports_delivery, service_radius.Sheet statuses:
in_moderation, is_active, active, archived
SheetInModeration is a proxy/admin-oriented view of sheets waiting for moderation.
Products/jobs:
JobInstance - job позиция с price, duration, is_countable, maximum_one_time_count.BringingProduct - product с trunk_capacity, price, minimum.ContractProduct - product с price_minimum, price_maximum, текущим полем кода minimum_diration и maximum_duration.StorageProduct - product с price, minimum.StorageProductStock - stock rows for storage products.Фото sheet/product/job/hot ad используют общий contract BaseAbstractPhoto: file, url, is_primary, crop fields, original_name.
CalendarTemplate задает типизированный шаблон пользователя. template_type принимает job, bringing или storage_contract. Для привоза рабочие границы имеют семантику окна продаж, а order_closing_minutes хранит срок закрытия заявок. CalendarDay задает конкретный материализованный день. Breaks есть на уровне template и day.
Сервисная логика поддерживает один default template, но CalendarTemplateSerializer сейчас не экспонирует is_default наружу.
Event создается в доменном module:
JobEventBringingEventContractEventStorageEventEvent хранит issuer, client, location, price, status, cancellation metadata и доменные поля времени/даты.
Каждый event получает internal order:
JobOrderBringingOrderContractOrderStorageOrderInternal order хранит user, user_card, amount, currency, status.
Event statuses:
created, issuer_approval, client_time_move_approval, issuer_time_move_approval,
pending, in_progress, canceled, done, controversy
Internal order statuses:
created, pending_payment_method, pending, inprocess, funds_holded,
success, canceled, refunded, error
Nearby search зависит от:
service_type, service_location_type, storage receiving flags;User.favorite_sheets and exposed through is_favorite serializer fields.На PostgreSQL используется trigram similarity. На других БД остается fallback через icontains.
HotAd принадлежит пользователю и содержит icon, location, currency, title, description, price, category, is_active, service_radius.
is_active read-only в serializer и меняется actions activate/freeze. Лимит активных free hot ads контролируется HotAdService.
Billing layer now includes both internal orders and public card/payment endpoints.
Core models:
ProviderUserCardUserCardTokenizationSessionCardIssuingBankCardPaymentSystemAirBaPayProviderResponseIokaProviderResponseFreedomPayProviderResponseBaseInternalOrderCard usages:
client, business
Business card holder types:
self_employed, individual_entrepreneur, organization
Card tokenization statuses:
initiated, completed, failed
FreedomPay is the current public card tokenization/payment webhook implementation. Ioka and AirBaPay provider layers remain present.
reviews.Review belongs to author and base_sheet, stores author_name, rating from 1 to 5 and text. Create/update/delete recalculates BaseSheet.rating and review_count.
base.UserFeedback stores authenticated user feedback and is throttled by cache to one item per user per 5 minutes.
notifications.PushDevice stores user push tokens with platform, device id, app version, locale and invalidation metadata.
Push platforms:
android, ios, web
Notification types include high-level categories (new_order, status, change, message, system) and event-specific payload types such as event_order_created, event_order_paid, event_time_changed and event_order_canceled.
Go chat service владеет таблицами:
chatschat_messageschats хранит ordered user pair и last_message_id. chat_messages хранит sender, client_message_id, body, delivery/read timestamps.
Django chat_bridge добавляет support behavior: создает support user и support chat, а также добавляет is_support column в chats, если таблица уже существует.