ServerSource Պահանջներ User flow-եր Տվյալների մոդել Ճարտարապետություն և API UI/UX նախատիպ

Ճարտարապետություն և API պայմանագիր Փուլ 1

Մոդուլային մոնոլիտ՝ ըստ ՏՏ-ի խորհուրդի․ մեկ ծրագր, հստակ սահմանված մոդուլներ, որոնցից յուրաքանչյուրը հետագայում կարելի է անջատել ծառայության։

1․ Ճարտարապետություն

SPA (React/Vue) + Admin SPA→ Nginx / LB→ REST API + WebSocket→ PostgreSQLRedisS3 (MinIO)

API-ի մոդուլները՝ auth · companies · listings · search · offers · orders · documents · messaging · notifications · billing · admin · audit։ Առանձին worker-ներ՝ email/push ծանուցումներ, ժամկետանց հայտերի արխիվացում, (Փ4) ավտոմատ համապատասխանեցում։

ԲաղադրիչԸնտրություն (առաջարկ)Հիմնավորում
BackendNestJS (Node) կամ Django RESTհասուն RBAC/ORM էկոհամակարգ, մոդուլային կառուցվածք
ԲազաPostgreSQL 16ACID, jsonb, լիատեքստային որոնում, enum-ներ
Հերթ/քեշRedisworker առաջադրանքներ, rate-limit, WebSocket presence
ՖայլերS3-համատեղելի (MinIO)փակ bucket + ստորագրված ժամանակավոր URL-ներ
FrontendReact/Vue SPA + առանձին admin bundleնույն API-ն, տարբեր դերեր
DeploymentDocker Compose → VPS/cloudapp, worker, db, redis, minio, nginx

2․ API սկզբունքներ

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "weight_kg must be a positive integer",
    "details": [ { "field": "weight_kg", "rule": "positive" } ]
  }
}

3․ Endpoint-ների պայմանագիր

Auth և պրոֆիլ

ՄեթոդՈւղիԴերՆկարագրություն
POST/auth/registerհյուրգրանցում + email հաստատում
POST/auth/loginհյուրJWT զույգ, audit LOGIN
POST/auth/refreshհյուրrefresh ռոտացիա
POST/auth/logoutօգտատերrefresh-ի չեղարկում
POST/auth/password-resetհյուրվերականգնման հղում
GET / PATCH/meօգտատերսեփական պրոֆիլ, լեզու

Ընկերություններ

ՄեթոդՈւղիԴերՆկարագրություն
POST/companiesօգտատերստեղծում → status pending
GET / PATCH/companies/{id}անդամ / company_adminդիտում / խմբագրում
POST/companies/{id}/documentscompany_adminհիմնադիր փաստաթղթեր
POST / GET/companies/{id}/memberscompany_adminհրավեր, դերերի կառավարում
GET/companies/{id}/ratingsբոլորվարկանիշների ցանկ
POST/admin/companies/{id}/verifyplatform_adminverify / reject պատճառով

Բորսա և որոնում

ՄեթոդՈւղիԴերՆկարագրություն
POST/cargoshipper/bothբեռի հայտ → active
GET/cargoբոլորֆիլտրեր, էջավորում, sort
GET / PATCH / DELETE/cargo/{id}տիրոջ ընկերությունքարտ / խմբագրում / հեռացում
POST/cargo/{id}/pause | activateտիրոջ ընկերությունկարգավիճակի կառավարում
POST / GET / …/vehicles…carrier/bothնույն հավաքածուն՝ մեքենաների համար
GET/search/cargo · /search/vehiclesբոլորօպտիմիզացված որոնում՝ <300ms p95

Առաջարկներ և բանակցություններ

ՄեթոդՈւղիԴերՆկարագրություն
POST/cargo/{id}/offerscarrier/bothգնային առաջարկ, notification.new
GET/cargo/{id}/offersտիրոջ ընկերությունստացված առաջարկներ
POST/offers/{id}/messagesկողմերբանակցություն, status→negotiating
POST/offers/{id}/acceptտիրոջ ընկերություն→ order ստեղծում, listing→booked
POST/offers/{id}/reject | withdrawկողմերմերժում / հետկանչ

Պատվերներ

ՄեթոդՈւղիԴերՆկարագրություն
GET/ordersկողմերմիայն իր պատվերները
GET/orders/{id}կողմեր / adminամբողջական քարտ
POST/orders/{id}/statusըստ անցման աղյուսակիվալիդ անցում → history + ծանուցում
GET/orders/{id}/historyկողմեր / adminկարգավիճակների պատմություն
POST / GET/orders/{id}/documentsկողմեր / adminվերբեռնում, ներբեռնում՝ ժամանակավոր URL
POST/orders/{id}/ratingկողմեր, completed-ից հետո1–5 + comment, unique(order, from)
POST/orders/{id}/disputeկողմերվիճարկում → admin հերթ

Հաղորդագրություններ, ծանուցումներ, վճարումներ

ՄեթոդՈւղիԴերՆկարագրություն
GET/conversations · /conversations/{id}/messagesմասնակիցներզրույցներ, չատ
GET / POST/notifications · /notifications/{id}/readօգտատերin-app ծանուցումներ
GET/plansբոլորպլանների ցանկ
POST/subscriptionscompany_adminբաժանորդագրություն
POST/payments/intentscompany_adminIdempotency-Key պարտադիր
POST/webhooks/payments/{provider}provider (ստորագրությամբ)կրկնակի մշակման պաշտպանություն

Admin Panel

ՄեթոդՈւղիԴերՆկարագրություն
GET/admin/statsplatform_admindashboard ցուցանիշներ
GET / PATCH/admin/usersplatform_adminցանկ, block/unblock
GET/admin/companies?status=pendingplatform_adminստուգման հերթ
GET / PATCH/admin/listingsplatform_adminմոդերացիա
GET/admin/ordersplatform_adminբոլոր պատվերները, disputes
GET / PUT/admin/settingsplatform_adminհամակարգային կարգավորումներ
GET/admin/auditplatform_adminաուդիտի մատյան, ֆիլտրերով
GET/admin/reports/export?type=…&format=csvplatform_adminարտահանում (Փ4)

4․ Կարգավիճակների enum-ներ

EnumԱրժեքներ և թույլատրելի անցումներ
order_statuscreated→confirmed→in_transit→delivered→completed․ cancelled՝ created/confirmed-ից․ disputed՝ ցանկացածից (admin որոշմամբ վերադարձ)
offer_statusnew→negotiating→accepted|rejected|withdrawn
listing_statusactive↔paused→booked→(completed)→archived․ expired՝ job-ով․ removed՝ admin
company_statuspending→verified|rejected (rejected-ից վերաստուգում հնարավոր է)
payment_statuspending→succeeded|failed, succeeded→refunded

5․ Deployment և .env.example (ուրվագիծ)

DATABASE_URL=postgres://…        REDIS_URL=redis://…
JWT_SECRET=…                     ACCESS_TTL=15m
S3_ENDPOINT=…  S3_BUCKET=…       S3_KEY=…  S3_SECRET=…
SMTP_HOST=…  SMTP_USER=…         SMS_API_KEY=…
PAYMENT_PROVIDER=stripe          PAYMENT_API_KEY=…
APP_URL=https://serversource.us  WS_URL=wss://…

Փուլ 2-ի սկզբում այս պայմանագրից կգեներացվի OpenAPI 3.1 spec (Swagger UI-ով), իսկ frontend-ը կկապվի իրական API-ին՝ նախատիպի էկրանները մնալով անփոփոխ։