Պահանջների վերջնական հաստատում Փուլ 1
Հիմքը՝ տեխնիկական առաջադրանքը (ՏՏ)։ Այս փաստաթուղթը ֆորմալիզացնում է պահանջները՝ նախքան ծրագրավորումը հաստատելու համար։
1․ Նպատակ և շրջանակ
Անկախ, անվտանգ, մասշտաբավորվող միջազգային B2B լոգիստիկ հարթակ՝ բեռների և ազատ մեքենաների բորսա, գնային առաջարկներից մինչև պատվերի ավարտ ամբողջական ցիկլ, ընկերությունների ստուգում, փաստաթղթաշրջանառություն, հաղորդակցություն, բաժանորդագրություններ, վիճակագրություն և ամբողջական Admin Panel։ Բոլոր գործառույթները պետք է ունենան իրական backend տրամաբանություն և պահպանվող տվյալներ։
2․ Դերեր և թույլտվություններ (RBAC)
| Գործողություն | Հյուր | Բեռնատեր | Փոխադրող | Ընկ. ադմին | Պլատֆ. ադմին |
| Բորսայի դիտում | ✓ | ✓ | ✓ | ✓ | ✓ |
| Գրանցում / մուտք | ✓ | ✓ | ✓ | ✓ | ✓ |
| Ընկերության ստեղծում | — | ✓ | ✓ | ✓ | — |
| Բեռի հրապարակում | — | ✓ | ✓* | ✓ | — |
| Մեքենայի հրապարակում | — | ✓* | ✓ | ✓ | — |
| Գնային առաջարկի ուղարկում | — | — | ✓ | ✓ | — |
| Առաջարկի ընդունում/մերժում | — | ✓ | ✓ | ✓ | — |
| Պատվերի կարգավիճակի փոփոխություն | — | ✓** | ✓** | ✓** | ✓ |
| Փաստաթղթի վերբեռնում (իր պատվերում) | — | ✓ | ✓ | ✓ | ✓ |
| Վարկանիշի տեղադրում | — | ✓*** | ✓*** | ✓*** | — |
| Ընկերության ստուգում (verify/reject) | — | — | — | — | ✓ |
| Օգտատերերի արգելափակում | — | — | — | իր ընկերությունում | ✓ |
| Բորսայի մոդերացիա | — | — | — | — | ✓ |
| Համակարգային կարգավորումներ | — | — | — | — | ✓ |
| Աուդիտի մատյան / վիճակագրություն | — | — | — | — | ✓ |
| Բաժանորդագրության կառավարում | — | — | — | ✓ | ✓ (դիտում) |
* Եթե ընկերության տեսակը both է՝ կրկնակի դեր։ ** Միայն իր կողմին թույլատրված անցումները (տես flow №5)։ *** Միայն ավարտված պատվերի համար, մեկ գնահատական մեկ կողմից։
3․ Ֆունկցիոնալ պահանջներ
FR-A․ Նույնականացում և ընկերություններ
- A1. Գրանցում email + հեռախոս + գաղտնաբառ + դեր (բեռնատեր/փոխադրող)՝ email հաստատմամբ։
- A2. Մուտք JWT-ով (access 15 ր + refresh ռոտացիայով), ընտրովի 2FA։
- A3. Գաղտնաբառի վերականգնում email-ով, մուտքերի rate-limit։
- A4. Ընկերության պրոֆիլ՝ անուն, երկիր, ՀՎՀՀ, տեսակ (shipper / carrier / both), լոգո, նկարագրություն։
- A5. Հիմնադիր փաստաթղթերի վերբեռնում ստուգման համար։
- A6. Ընկերության կարգավիճակ՝
pending → verified / rejected (պատճառով)․ միայն պլատֆորմի ադմինը։
- A7. Ընկերության ադմինը հրավիրում է աշխատակիցների և նշանակում դերեր։
- A8. Ստուգված չլինելու դեպքում՝ բորսայի դիտում թույլատրված է, հրապարակում/առաջարկ՝ ոչ։
FR-B․ Բորսա (բեռներ և մեքենաներ)
- B1. Բեռի հայտ՝ ուղղություն (երկիր/քաղաք), բեռնաթափման ամսաթիվ, քաշ, ծավալ, կենդանի/ապրանքային տեսակ, գին և արժույթ, նկարագրություն։
- B2. Մեքենայի հայտ՝ ուղղություն, ազատ լինելու ժամանակահատված, տեսակ, բեռնարկղ, գնի հուշում։
- B3. Կարգավիճակներ՝
active / paused / booked / expired / archived / removed։
- B4. Խմբագրում, դադարեցում, հեռացում մինչև առաջարկի ընդունումը։
- B5. Ժամկետանց հայտերի ավտոմատ արխիվացում (scheduled job)։
- B6. Որոնում ֆիլտրերով՝ ուղղություն, ամսաթիվ, քաշ, ծավալ, տեսակ, երկիր, գնի միջակայք, ընկերության վարկանիշ։
- B7. Տեսակավորում և էջավորում, պատասխանը <300ms (p95) ինդեքսներով։
- B8. (Փուլ 4) Պահպանված որոնումներ + նոր համապատասխան հայտի ծանուցում։
FR-C․ Գործարքներ
- C1. Գնային առաջարկ բեռին (փոխադրողից)՝ գին, արժույթ, մեկնաբանություն։
- C2. Բանակցություն առաջարկի շրջանակում՝ չատ + հակառակորդ գին։
- C3. Առաջարկի ընդունում → պատվերի ավտոմատ ստեղծում եզակի համարով (
ORD-YYYY-NNNN)։
- C4. Պատվերի կարգավիճակներ՝
created → confirmed → in_transit → delivered → completed, կողմնային ճյուղեր՝ cancelled / disputed։
- C5. Կարգավիճակի ամեն փոփոխություն → պատմության գրառում (ով, երբ, ումից ում) + ծանուցումներ։
- C6. Փաստաթղթեր պատվերին (պայմանագիր, CMR, հաշիվ, մաքսային)՝ փակ storage, ներբեռնում ստորագրված ժամանակավոր URL-ով։
- C7. Հաղորդագրություններ պատվերի շրջանակում՝ միայն կողմերի միջև։
- C8. Ծանուցումներ՝ in-app + email (նոր առաջարկ, կարգավիճակի փոփոխություն, նոր հաղորդագրություն, փաստաթուղթ)։
- C9. Վարկանիշ ավարտված պատվերից հետո՝ 1–5, մեկ գնահատական կողմից, միջինը՝ ընկերության պրոֆիլում։
- C10. Վիճարկում (dispute) → պլատֆորմի ադմինի միջամտություն, որոշման գրառում։
FR-D․ Վճարումներ և բաժանորդագրություններ
- D1. Պլաններ՝ Անվճար / Բազային / Պրո՝ սահմանափակումներով (հայտեր, առաջարկներ, օգտատերեր)։
- D2. Վճարումը ստեղծվում է
Idempotency-Key հեդերով․ նույն բանալիով կրկնվող հարցումը չի կրկնում գանձումը (ընդունման չափանիշ №8)։
- D3. Provider webhook-ների մշակում՝ ստորագրության ստուգմամբ, կրկնակի մշակման պաշտպանությամբ։
- D4. Բաժանորդագրության ավտոմատ երկարաձգում/դադարեցում, հաշիվ-ապրանքագրի ձևավորում։
- D5. (Փուլ 4) Հաշվետվությունների արտահանում CSV/Excel։
FR-E․ Admin Panel
- E1. Օգտատերերի ցանկ, որոնում, արգելափակում/արձակում։
- E2. Ընկերությունների ստուգում՝ փաստաթղթերի դիտում, verify/reject պատճառով։
- E3. Բորսայի մոդերացիա՝ կասկածելի հայտերի հեռացում։
- E4. Պատվերների դիտում և վիճարկումների կառավարում։
- E5. Համակարգային կարգավորումներ (արժույթներ, լեզուներ, պլաններ, commission)։
- E6. Աուդիտի մատյանի դիտում և վիճակագրության dashboard։
FR-F․ Լրացուցիչ (Փուլ 4)
- F1. Քարտեզ և երթուղու վիզուալիզացիա, GPS ինտեգրում։
- F2. Ավտոմատ համապատասխանեցում (բեռ ↔ մեքենա) և ծանուցում։
- F3. Բազմալեզու ինտերֆեյս՝ hy / ru / en։
- F4. Ընկերության վիճակագրություն և արտահանում։
4․ Ոչ ֆունկցիոնալ պահանջներ
| Ոլորտ | Պահանջ |
| Անվտանգություն | Argon2id/bcrypt գաղտնաբառեր, OWASP Top 10, rate-limit, CSRF/XSS/SQLi պաշտպանություն, ֆայլերի տիպի/չափի վալիդացիա |
| Բազմաընկերային մեկուսացում | Յուրաքանչյուր հարցում ստուգում է company_id պատկանելությունը․ ոչ մի cross-ընկերության տվյալ չի վերադարձվում (ընդունման չափանիշ №10) |
| Արդյունավետություն | API p95 < 300ms, որոնում՝ ինդեքսներով, բեռնվածության թեստ ըստ համաձայնեցված պրոֆիլի |
| Հասանելիություն | 99.5% uptime, health-check, մոնիթորինգ (Prometheus/Grafana կամ համարժեք) |
| Պահուստ | Օրական backup + WAL, restore-ի փորձարկում մինչև գործարկում (ընդունման չափանիշ №11) |
| Աուդիտ | Կարևոր գործողությունների անփոփոխ մատյան (append-only), IP և actor գրանցմամբ |
| UI | Ռեսպոնսիվ, մոբայիլից աշխատող, մատչելիության հիմունքներ |
| Փաստաթղթավորում | API (OpenAPI), deployment, admin ուղեցույց, user ուղեցույց, .env.example |
5․ Աուդիտի մատյան՝ գրանցվող իրադարձություններ
| Իրադարձություն | Երբ |
LOGIN / LOGIN_FAILED | Ամեն մուտք/ձախողում |
USER_CREATED / USER_BLOCKED | Գրանցում, արգելափակում |
COMPANY_CREATED / COMPANY_VERIFIED / COMPANY_REJECTED | Ընկերության կյանքի ցիկլ |
LISTING_PUBLISHED / LISTING_REMOVED | Բորսայի հայտեր |
OFFER_CREATED / OFFER_ACCEPTED / OFFER_REJECTED | Առաջարկներ |
ORDER_CREATED / ORDER_STATUS_CHANGED | Պատվերներ, ամեն անցում |
DOCUMENT_UPLOADED / DOCUMENT_DOWNLOADED | Փաստաթղթեր |
PAYMENT_SUCCEEDED / PAYMENT_FAILED | Վճարումներ, idempotency key-ով |
SETTINGS_CHANGED | Admin կարգավորումներ |
Բաց հարցեր՝ հաստատման համար․ բյուջե, առաջին երկրների ցանկ (որից կախված են տվյալների բառարանները՝ երկրներ/քաղաքներ), արտաքին API-ներ՝ քարտեզ (Mapbox/OSM), SMS, վճարային պրովայդեր (Stripe/PSP ըստ երկրի), արժույթների ցանկ, էլ․ ստորագրության անհրաժեշտություն։