1:N
1:N
1:N
1:1
1:N
1:N
companies ընկերություններ
users օգտատերեր
notifications ծանուցումներ
audit_log աուդիտ (append-only)
cargo_listings բեռների հայտեր
offers առաջարկներ
vehicle_listings մեքենաների հայտեր
conversations զրույցներ
order_status_history կարգավիճակների պատմություն
orders պատվերներ
order_documents պատվերի փաստաթղթեր
messages հաղորդագրություններ
plans պլաններ
ratings վարկանիշներ
subscriptions բաժանորդագրություններ
payments վճարումներ (idempotent)
Շարունակական գիծ՝ հիմնական կապ, կետագիծ՝ երկրորդական։ Մնացած կապերը (company→subscription, user→messages և այլն) տրված են FK-ներով ստորև։
Դաշտ Տիպ Նշում
id uuid PK
name varchar օր․ «Հայ Տրանզիտ» LLC
type enum(shipper, carrier, both) որոշում է հասանելի դերերը
country / tax_id char(2) / varchar ստուգման համար
status enum(pending, verified, rejected) միայն պլատֆ. ադմինը փոխում է
rating numeric(3,2) materialized միջին՝ ratings-ից
reject_reason, verified_by, verified_at text / uuid FK / timestamptz աուդիտի հետք
Դաշտ Տիպ Նշում
id, company_id, created_by uuid PK, FK, FK մեկուսացման բանալին՝ company_id
from_country, from_city, to_country, to_city char(2), varchar ×2 որոնման ինդեքս (from,to,load_date)
load_date date expires_at՝ load_date + 1 օր
weight_kg, volume_m3 int / numeric ֆիլտրեր
vehicle_type enum(tent, ref, isotherm, platform, tanker, other) բառարան՝ settings-ում
price, currency numeric / char(3)
status enum(active, paused, booked, expired, archived, removed) ժամկետանց՝ job-ով expired
Դաշտ Տիպ Նշում
id, listing_id, listing_type uuid PK, uuid, enum(cargo, vehicle) պոլիմորֆ FK
from_user_id, from_company_id uuid FK ×2 ով է առաջարկում
price, currency, comment numeric / char(3) / text
status enum(new, negotiating, accepted, rejected, withdrawn) accepted → order ստեղծում
Դաշտ Տիպ Նշում
id uuid PK
number varchar UNIQUE ORD-2025-0001՝ sequence-ով
offer_id uuid FK→offers UNIQUE 1:1, պատվերը առաջարկից
cargo_id / vehicle_id uuid FK NULL կախված listing_type-ից
customer_company_id, carrier_company_id uuid FK ×2 երկու կողմերը
agreed_price, currency numeric / char(3) վերջնական համաձայնեցված գին
status enum(created, confirmed, in_transit, delivered, completed, cancelled, disputed) անցումները՝ flow №5
created_by, created_at, completed_at uuid FK, timestamptz ×2
Դաշտ Տիպ Նշում
conversations.id, order_id, offer_id uuid PK, FK NULL ×2 CHECK․ գոնե մեկը լցված է
conversations.company_a_id, company_b_id uuid FK ×2 մասնակիցները
messages.id, conversation_id, sender_id uuid PK, FK, FK INDEX(conversation_id, created_at)
messages.body, attachment_key, read_at text / varchar / timestamptz read receipts
Դաշտ Տիպ Նշում
plans.id, code, price, period, limits uuid PK, varchar UNIQUE, numeric, enum(month,year), jsonb limits․ {"offers_per_month":null,"users":5,"priority":true}
subscriptions.id, company_id, plan_id, status uuid PK, FK, FK, enum(active, past_due, cancelled, expired) մեկ ակտիվ subscription ընկերության համար
payments.id, company_id, subscription_id uuid PK, FK, FK NULL
payments.idempotency_key varchar UNIQUE ընդունման չափանիշ №8՝ կրկնվող հարցումը չի կրկնում գանձումը
payments.provider, provider_payment_id varchar ×2 UNIQUE(provider, provider_payment_id)՝ webhook-ի կրկնակի մշակման պաշտպանություն
payments.amount, currency, status numeric / char(3) / enum(pending, succeeded, failed, refunded)
Դաշտ Տիպ Նշում
ratings.id, order_id, from_company_id, to_company_id uuid PK, FK ×3 UNIQUE(order_id, from_company_id)՝ մեկ գնահատական կողմից
ratings.score, comment smallint CHECK 1–5 / text միջինը materialized է companies.rating-ում
audit_log.id bigserial PK append-only․ UPDATE/DELETE-ը արգելված է DB մակարդակում
audit_log.actor_user_id, actor_company_id, action, entity_type, entity_id, details, ip uuid FK / varchar / varchar / varchar / jsonb / inet ընդունման չափանիշ №9
settings.key, value varchar PK / jsonb արժույթներ, լեզուներ, vehicle_type բառարան, commission