Epic EP-10 Kritik 06_orders erpbom-backend backend

06_orders — Buyurtmalar (rezerv, netting, picking, yetkazish)

Bajarildi
100% 45/45
Status:

Tavsif

Buyurtma moduli — 06_orders spetsifikatsiyasining to'liq kodlashtirilishi. Buyurtma ikki kanaldan (tizim useri / mijoz mobil ilovasi) yaratiladi, maxsus huquq bilan qabul qilinadi, ombor qoldig'i bo'yicha QISMAN rezerv qilinadi, yetishmagan qism ishlab chiqarishga (07_tasks) uzatiladi, so'ng Yuklovchi tomonidan yig'iladi va shafyor orqali yetkaziladi. 06 — buyurtma holat mashinasining va NETTING ning egasi. U ombor qoldig'ini o'zi yozmaydi (03_warehouse servislari), task/works modelini qurmaydi (07_tasks dvigateli), narx qiymatlarini belgilamaydi (02_products) va qarz hisobini yuritmaydi (08_finance — bu epicda port).

Texnik ko'rsatma

Agent uchun

Holat mashinasi (§4.1): created -> received -> (ready_to_deliver | in_progress) -> picking -> picked -> delivering -> delivered; cancelled: created..picked. delivering dan keyin bekor YO'Q (R20/R21). Eng kritik nuqta — REZERV (§4.3): qisman rezerv, `received_at` navbati, `stock` qatori qulfi ostida yozish, ko'p qatorli qulf tartibi R26 (`(warehouse_id, product_variant_id, condition) ASC`, mavjud bo'lmagan qator uchun `pg_advisory_xact_lock` AYNI SHU tartibda, `SET LOCAL lock_timeout='3s'`, `40P01`/`55P03` da max 2 retry + jitter 50-200 ms, so'ng `409 stock_busy`). CROSS_CUTTING Q — butun tizim uchun. Asinxronlik — outbox + `@Scheduled` worker (CROSS_CUTTING F, AR-3; RabbitMQ YO'Q). Idempotentlik kaliti — `order_id` + hodisa turi. Naqsh: `common/outbox/AbstractOutboxWorker` merosi (V28/V31 precedenti). Qatlam qoidasi (ADR-001 §2.3): modullararo murojaat FAQAT service orqali — 06 hech qachon 03/07/04 `repository`/`entity` siga tegmaydi.

Qabul mezonlari (DoD)

0 / 3 bajarildi

  • 06_orders.md §12 dagi AC1-AC19 dan qamrovga kirganlari test bilan yopilgan (limit/overdue AC lari — 08_finance ga qoldirilgan, YAML sarlavhasidagi qamrov izohiga qara)

  • Kontrakt (openapi/v1/orders.yaml) muzlatilgan va drift gate toifa siyosati bo'yicha yashil (ratchet oshmagan)

  • Barcha 3 repo (backend, web, mobile) o'z branchida; main ga tegilmagan

Ichki ishlar

12 ta

Izoh qoldirish

Tarix

17 yozuv

  • ⇄

    system statusni o'zgartirdi Ishlanyapti → Bajarildi

    Bolalardan avtomatik hisoblandi

  • ⇄

    system statusni o'zgartirdi Bajarildi → Ishlanyapti

    Bolalardan avtomatik hisoblandi

  • ⇄

    system statusni o'zgartirdi Ishlanyapti → Bajarildi

    Bolalardan avtomatik hisoblandi

  • ⇄

    system statusni o'zgartirdi Bajarildi → Ishlanyapti

    Bolalardan avtomatik hisoblandi

  • ⇄

    system statusni o'zgartirdi Ishlanyapti → Bajarildi

    Bolalardan avtomatik hisoblandi

  • 💬

    finalize-ep-10 izoh qoldirdi

    EP-10 yakunlash — IKKINCHI topilma (finalize-EP-10, 2026-09-03): klient tomonidagi kontrakt drifti. `POST /orders/{id}/fail-delivery` 2026-09-02 da kontraktdan olib tashlangan (Q14=C, kontrakt 976717f; backendda EP-10-T05-S06 olib tashlagan), lekin ikkala klient hali chaqiradi: - erpbom-mobile: driver_delivery_api.dart + fail_delivery_cubit + haydovchi ekranidagi tirik tugma -> EP-10-T09-S03 `blocked` (ishlab chiqarishda 404) - erpbom-web: order-workflow.api.ts + orders.store.ts, UI'ga ulanmagan o'lik kod -> EP-10-T07-S01 `blocked` Usul: mobil `*_api.dart` va web `*.api.ts` fayllaridagi HAMMA yo'l 181 ta muzlatilgan kontrakt yo'li bilan solishtirildi. Kontraktdan tashqarida faqat shu bitta yo'l (+ EP-10 ga aloqasiz, hech qayerda ishlatilmaydigan eski `/health/sample-items` qoldig'i mobil health_api.dart da — alohida tozalash uchun). XULOSA — EP-10 da 3 ta blok: T02-S04 (backend: 3 endpoint yozilmagan), T09-S03 (mobil: fail-delivery), T07-S01 (web: fail-delivery). Uch repo ham push qilinmadi, PR ochilmadi, main'ga tegilmadi. Barcha 42 bargda branch/commit_sha to'ldirildi (10 tasi bo'sh edi — web/mobil).

  • 💬

    finalize-ep-10 izoh qoldirdi

    EP-10 YAKUNLASH TO'XTATILDI (finalize-EP-10, 2026-09-03) — drift gate qizil, push/PR bajarilmadi. 1) DRIFT (erpbom-backend, ilova HEAD=a054e3c dan qurilib :18080 da o'lchandi, prism mock o'chirilgan, provenance 'Generated server url' tasdiqlangan): scripts/openapi-diff.sh v1/orders -> exit=1, verdikt=blocking A (BLOKLOVCHI) 3 ta: paths.deleted /api/v1/orders/me, /api/v1/orders/me/deliveries, /api/v1/orders/me/picking -> EP-10-T02-S04 `blocked` qilindi (sabab itemda batafsil). 2) B/D o'lchovi (orders moduli baseline'i hali YOZILMAGAN — barcha delta baseline=0 dan): responses=95 enum=39 parameters=40 content=42 nullable=65 pattern=0 style_explode=8 other=275 Yangi weaker (C) 7 ta — 5 tasi boshqa 7 modulda allaqachon qabul qilingan artefaktning aynan o'zi (`sort` pattern x4, OrderCancelRequest.reason.minLength 1->0 x2); 1 tasi yangi: GET /orders query `order_number` maxLength 20 -> yo'q (kod kontraktdan zaifroq). Baseline satri va CI gate ro'yxatiga `orders` qo'shish ATAYLAB qilinmadi: EP-06/07/08 naqshi bo'yicha u faqat A=0 tasdiqlangach yoziladi. A yopilgach qayta o'lchash shart. 3) Repo holati (uchalasi ham toza, mutant/probe qoldig'i yo'q, sir tekshiruvi toza — faqat test fixture'lari): erpbom-backend feat/EP-10-erpbom-backend 53 commit HEAD=a054e3c -> PUSH QILINMADI (drift manbai) erpbom-web feat/EP-10-erpbom-web 14 commit HEAD=892dfe1 -> PUSH QILINMADI (klientlari yo'q endpointga tayanadi) erpbom-mobile feat/EP-10-erpbom-mobile 13 commit HEAD=51f51ce -> PUSH QILINMADI (ayni sabab) Eslatma: erpbom-backend'da EP-07 davridan qolgan eskirgan stash bor (stash@{0}) — relizga aloqasi yo'q. 4) Keyingi qadam (team-lead): 3 ta yo'qolgan endpoint uchun yangi backend barg oching (kontrakt avtoritet — kod kontraktga moslashadi), bajarilgach finalize qayta yurgizilsin.

  • ⇄

    system statusni o'zgartirdi Bajarildi → Ishlanyapti

    Bolalardan avtomatik hisoblandi

  • ⇄

    system statusni o'zgartirdi Ishlanyapti → Bajarildi

    Bolalardan avtomatik hisoblandi

  • 💬

    team-lead-pm izoh qoldirdi

    SESSIYA YAKUNI (2026-09-03) — hamma agent toxtatildi, holat shu yerda saqlanadi. HOLAT: 40/41 barg done. Ochiq: (1) EP-10-T05-S09 (backlog, low) — lat/lng eksponent yozuvi (4.1E+1) kontrakt patterniga zid, hali qabul qilinadi; S08 bilan bir sinf, epicni ushlamaydi. (2) EP-10-T05 konteyneri in_progress — S09 yopilgach ozi yopiladi. SHU SESSIYADA: T03 (3 barg), T05 (S01-S04, S06, S07, S08), T06 (3 barg), T09-S02, T11-S01 (yangi task) yopildi; T05-S05 CANCELLED (biznes qarori). Kontrakt IKKI MARTA qayta muzlatildi: 976717f (fail-delivery olib tashlandi) va cbecc07 (customers address/lat/lng majburiy + OrderResponse ga customer_address/lat/lng + confirm-delivery javobiga far_from_address). BIZNES QARORLARI (erp/docs ga singdirildi, LEKIN HALI COMMIT QILINMAGAN — foydalanuvchi soradi): 06_orders Q14=C (muvaffaqiyatsiz yetkazish mexanizmi bekor), Q15 (ozi olib ketish/pickup — R27, yangi delivery_type ustuni va picked->delivered otishi), 05_customers Q9 (address+lat/lng majburiy), 06_orders Q9c=A (5 km hisobi serverda). KEYINGI SESSIYA TARTIBI: (a) EP-10-T05-S09 ni bitta worker bilan yop; (b) lead ozi mobil bargni olchasin — men flutter test/analyze ni MUSTAQIL yurgizmadim (worker va QA 770 test yashil dedi, commit 51f51ce); (c) Faza D — epic-finalize (drift/oasdiff, mock ochirish, sir tekshiruvi, uch repo uchun push + PR: feat/EP-10-erpbom-backend @ b200638, feat/EP-10-erpbom-web @ 892dfe1, feat/EP-10-erpbom-mobile @ 51f51ce); (d) erp/ dagi spec ozgarishlarini commit qilish (foydalanuvchi tasdigi bilan). EP-10 DAN TASHQARI QOLGAN ISH: pickup (06 R27) uchun kod hali YOZILMAGAN — alohida epic/task kerak; R27(e) va R27(f) ikki mexanik detali hali TAKLIF holatida, foydalanuvchi tasdigi kutilmoqda. TOZALIK: uch repo ham oz branchida, daraxtlar toza, yetim worktree yoq (mobil QA worktreei ochirildi), MUTANT qoldigi yoq, push qilinmagan.

  • ⇄

    system statusni o'zgartirdi Backlog → Ishlanyapti

    Bolalardan avtomatik hisoblandi

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-08

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-07

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-06

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-04

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-02

  • ✦

    pm-agent yaratdi

    06_orders — Buyurtmalar (rezerv, netting, picking, yetkazish)

Ma'lumot

Agent
—
Olingan
—
Boshlandi
28.08.2026 10:30
Tugadi
04.09.2026 02:56
Baho
190 soat
Spec
erp/docs/modules/06_orders.md
Branch
—
Commit
—

Bog'liqliklar

Agent uchun

Bu ishni AI agent quyidagicha oladi:

curl -s -X POST https://pmboard.ferp.uz/api/items/EP-10/claim \
  -H "X-Agent: backend-dev-1"

Tugatgach:

curl -s -X POST https://pmboard.ferp.uz/api/items/EP-10/status \
  -H "X-Agent: backend-dev-1" \
  -H "Content-Type: application/json" \
  -d '{"status":"review","note":"..."}'