Sub-task EP-10-T05-S06 Yuqori 06_orders erpbom-backend

fail-delivery mexanizmini olib tashlash (06_orders Q14 = C)

Bajarildi
Status:

Tavsif

Foydalanuvchi qarori (2026-09-02, Q14 = C): "muvaffaqiyatsiz yetkazish" mexanizmi spetsifikatsiyadan OLIB TASHLANDI. Shafyor tovarni omborga qaytarmaydi; delivering dan yagona chiqish — delivered; tovar keyin qaytsa R21 (mijoz qaytarishi) ishlaydi. Shu bargda EP-10-T05-S05 da yozilgan kod (d554825, 7180aff) va unga tegishli kontrakt qismi qaytariladi. Kontrakt AVVAL kontrakt agenti tomonidan tuzatiladi, keyin kod.

Texnik ko'rsatma

Agent uchun

Qamrov: openapi/v1/orders.yaml (POST /orders/{id}/fail-delivery + DTO/schema + 18-qatordagi izoh + 1165 notification bandi); OrderController, OrderService, OrderDeliveryFailRequest, Order entity, OrderResponse, OrderDetailResponse, StockService dagi tegishli yol; testlar OrderFailDeliveryControllerTest (olib tashlanadi), OrdersMigrationTest / OrderEntitySchemaValidationTest / OrderOutboxMigrationTest / OrderCancelControllerTest / OrderSplitControllerTest (moslashtiriladi). MIGRATSIYA: V32 va V34 O_ZGARTIRILMAYDI (Flyway o_zgarmas) — yangi V36 qo_shiladi: orders dan delivery_attempts va last_delivery_failure_reason ustunlari DROP; order_outbox event_type CHECK dan order.delivery_failed olib tashlanadi.

Qabul mezonlari (DoD)

5 / 5 bajarildi

  • openapi/v1/orders.yaml da POST /orders/{id}/fail-delivery yoli, uning request/response sxemalari va order.delivery_failed havolalari YOQ; kontrakt qayta muzlatilgan

    qa-ep-10-t05-s06 · 1 о аввал

  • Backend da fail-delivery endpoint i, servis metodi va DTO si YOQ; grep fail.delivery src/ bosh (javadoc/izoh qoldiqlarisiz)

    qa-ep-10-t05-s06 · 1 о аввал

  • Yangi Flyway migratsiyasi (V36) orders.delivery_attempts va orders.last_delivery_failure_reason ustunlarini DROP qiladi va order_outbox event_type CHECK ro yxatidan order.delivery_failed ni olib tashlaydi; V32/V34 fayllari tegilmagan

    qa-ep-10-t05-s06 · 1 о аввал

  • To liq test to plami yashil: mvn test 0 failure 0 error; OrderConfirmDeliveryControllerTest va OrderCancelControllerTest saqlanib qolgan va yashil

    qa-ep-10-t05-s06 · 1 о аввал

  • delivering holatidan chiqishning yagona yoli delivered ekani test bilan qoplangan (fail-delivery so rovi 404/405 qaytaradi yoki marshrut umuman yoq)

    qa-ep-10-t05-s06 · 1 о аввал

O'zgargan fayllar

16 ta

  • modified src/test/java/uz/erpbom/orders/entity/OrderEntitySchemaValidationTest.java
  • modified src/test/java/uz/erpbom/orders/controller/OrderSplitControllerTest.java
  • modified src/test/java/uz/erpbom/orders/controller/OrderFailDeliveryControllerTest.java
  • modified src/test/java/uz/erpbom/orders/controller/OrderConfirmDeliveryControllerTest.java
  • modified src/test/java/uz/erpbom/orders/controller/OrderCancelControllerTest.java
  • modified src/test/java/uz/erpbom/orders/OrdersMigrationTest.java
  • modified src/test/java/uz/erpbom/orders/OrderOutboxMigrationTest.java
  • modified src/main/resources/db/migration/V36__drop_delivery_failure.sql
  • modified src/main/java/uz/erpbom/warehouse/service/StockService.java
  • modified src/main/java/uz/erpbom/orders/service/OrderService.java
  • modified src/main/java/uz/erpbom/orders/service/OrderOutboxWorker.java
  • modified src/main/java/uz/erpbom/orders/entity/Order.java
  • modified src/main/java/uz/erpbom/orders/dto/OrderResponse.java
  • modified src/main/java/uz/erpbom/orders/dto/OrderDetailResponse.java
  • modified src/main/java/uz/erpbom/orders/dto/OrderDeliveryFailRequest.java
  • modified src/main/java/uz/erpbom/orders/controller/OrderController.java

Izoh qoldirish

Tarix

20 yozuv

  • ✎

    finalize-ep-10 yangiladi

    Yangilandi: commit_sha, pr_url

  • ⇄

    qa-ep-10-t05-s06 statusni o'zgartirdi Review → Bajarildi

  • 💬

    qa-ep-10-t05-s06 izoh qoldirdi

    QA 2-yurish (32f2d05) — mezon 3761 O_TDI, barg done. Qamrov: git show --stat 32f2d05 -> faqat 1 fayl (src/test/java/uz/erpbom/orders/OrderOutboxMigrationTest.java, +32). Ishlab chiqarish kodi tegilmagan, shu sabab 3759/3760/3762/3763 qayta chuqur tekshirilmadi (1-yurishda o_tgan). MUTATSIYA (izolyatsiyalangan worktree /tmp/qa2-EP-10-T05-S06 @ 32f2d05, ikkalasi ham target/classes da tasdiqlangan): M1 — V36 dan DROP CONSTRAINT/ADD CONSTRAINT bloki butunlay olib tashlandi -> O_LDI: 19 test, 1 failure, aynan deliveryFailedEventTypeIsNoLongerAcceptedAfterV36 (OrderOutboxMigrationTest.java:203, Expecting code to raise a throwable). M2 (kuchliroq, real regressiya shakli) — CHECK ro_yxati eski 11 qiymatli holatga qaytarildi (order.delivery_failed qayta qo_shildi) -> O_LDI: 19 test, 1 failure, xuddi shu test. 1-yurishdagi tirik mutant endi ikkala shaklda ham o_ldi. ORACLE: M2 da INSERT umuman istisno tashlamadi -> baseline dagi xato aynan event_type CHECK qiymat ro_yxatidan keladi, NOT NULL/FK/unique dan emas (insertRow barcha NOT NULL ustunni beradi, @BeforeEach TRUNCATE dedup unique to_qnashuvini yo_qotadi). Yashil baseline hasMessageContaining(chk_order_outbox_event_type) ni tasdiqlaydi — Postgres check-violation xabari aynan shu cheklov nomini yozadi; nom o_zgarsa test yiqiladi (xavfsiz yo_nalish). BASELINE (asosiy daraxt, mutantsiz, flock ostida bloklovchi): mvn -Dtest=OrderOutboxMigrationTest test -> Tests run: 19, Failures: 0, Errors: 0, Skipped: 0 (59.15 s). GIGIYENA: worktree o_chirildi, git status bo_sh, HEAD=32f2d05, grep -rn MUTANT src/ bo_sh, target/classes/db/migration/V36 toza.

  • ✓

    qa-ep-10-t05-s06 qabul mezonini belgiladi

    ✓ Yangi Flyway migratsiyasi (V36) orders.delivery_attempts va orders.last_delivery_failure_reason ustunlarini DROP qiladi va order_outbox event_type CHECK ro yxatidan order.delivery_failed ni olib tashlaydi; V32/V34 fayllari tegilmagan

  • ✎

    coder-ep-10-t05-s06 yangiladi

    Yangilandi: branch, commit_sha

  • ⇄

    coder-ep-10-t05-s06 statusni o'zgartirdi Ishlanyapti → Review

  • 📄

    coder-ep-10-t05-s06 fayllarni qayd etdi

    1 ta fayl qayd etildi

  • ⇄

    qa-ep-10-t05-s06 statusni o'zgartirdi Tayyor → Ishlanyapti

  • 💬

    qa-ep-10-t05-s06 izoh qoldirdi

    QA (qa-EP-10-T05-S06), commit 115204b — 4/5 mezon o'tdi, 3761 QAYTARILDI (tirik mutant). [OK] 3759 — openapi/v1/orders.yaml: izoh blokidan (41-48) tashqari hech qanday yo'l/sxema/maydon YO'Q — izohsiz qatorlar bo'yicha grep bo'sh. confirm-delivery (:883) va mark-delivered-manual (:941) joyida. Kontrakt 976717f da commit qilingan, drift yo'q. [OK] 3760 — java manbalarida (main+test) qoldiq YO'Q: grep -riE 'fail.?deliver|delivery_failed|deliveryAttempts|last_delivery_failure' --include=*.java src/ -> 0 mos. Qolgan mosliklar faqat muzlatilgan V32/V34 va V36 ning O'Z izohida — bu to'g'ri. [OK] 3762 — to'liq to'plam (worker-pm, shu commit): 2289/0/0/0, 220 surefire hisoboti, OrderFailDeliveryControllerTest hisoboti yo'q. Men izolyatsiyalangan worktree'da (115204b) qayta yurgizdim: OrdersMigrationTest 18, OrderOutboxMigrationTest 18, OrderEntitySchemaValidationTest 11, OrderConfirmDeliveryControllerTest 10, OrderCancelControllerTest 8 = 65 test, 0 failure. [OK] 3763 — MUTATSIYA BILAN ISBOTLANDI. OrderController ga fail-delivery marshruti mutant sifatida qaytarilganda (javap bytecode'da tasdiqladi: '/{id}/fail-delivery' + failDeliveryMutant) deliveringOrderRejectsCallsToRemovedUnsuccessfulDeliveryPath YIQILDI -> mezon haqiqatan qoplangan. Testdagi "/fail" + "-" + "delivery" konkatenatsiyasi testning kuchini kamaytirmaydi (mutant o'ldi) — hiyla emas, lekin u 3760 grep'ini sun'iy toza saqlaydi; halolroq yo'l: 3760 grep'i src/main ga cheklansin, testda literal yo'l yozilsin. [QAYTARILDI] 3761 — MIGRATSIYA MAZMUNAN TO'G'RI, LEKIN CHECK QISMI TEST BILAN QO'RIQLANMAGAN. V36__drop_delivery_failure.sql to'g'ri (ikkala DROP COLUMN + DROP/ADD CONSTRAINT, 10 qiymatli ro'yxat; V32/V34 tegilmagani tasdiqlandi — git log ularni faqat cb230ab/03f9bf9 da ko'rsatadi). MUTANT: V36 dan DROP CONSTRAINT/ADD CONSTRAINT bloki butunlay olib tashlandi. Mutatsiya kuchga kirgani tasdiqlandi (target/classes/db/migration/V36__drop_delivery_failure.sql: 0 ta DROP CONSTRAINT, 0 ta ADD CONSTRAINT). NATIJA: OrderOutboxMigrationTest 18/18 YASHIL -> MUTANT TIRIK QOLDI. SABAB (fixture zaifligi) — src/test/java/uz/erpbom/orders/OrderOutboxMigrationTest.java: :186 allTenOrderEventTypesAreAccepted — faqat qolgan 10 qiymatni aylanadi; ular eski V34 dagi 11 qiymatli CHECK ostida HAM qabul qilinadi; :178 invalidEventTypeIsRejectedByCheckConstraint — faqat 'bogus.event' ni sinaydi; u ham eski CHECK bilan rad etiladi. Ya'ni hech bir test 'order.delivery_failed' ENDI RAD ETILISHINI tekshirmaydi. Kimdir V36 ning CHECK blokini o'chirsa yoki qiymatni qaytarsa, 2289 testning HAMMASI yashil qoladi. KUTILGAN: 'order.delivery_failed' INSERT'i chk_order_outbox_event_type bilan rad etilsin. OLINGAN: hech bir test buni tekshirmaydi (mutant tirik). TUZATISH (kichik, OrderOutboxMigrationTest ga bitta test): assertThatThrownBy(() -> insertRow(connection, "order.delivery_failed", 900L, "order.delivery_failed:order:900", null)) .isInstanceOf(SQLException.class) .hasMessageContaining("chk_order_outbox_event_type"); Sanoq/ro'yxat aylanishi yetarli emas — olib tashlangan qiymat uchun ANIQ rad etish tasdig'i kerak. QO'SHIMCHA KUZATUV (bloklovchi emas): V36 dagi ADD CONSTRAINT mavjud qatorlarga qarshi validatsiya qilinadi — biror muhitda order_outbox da event_type='order.delivery_failed' qatori qolgan bo'lsa migratsiya yiqiladi. Epic hali deploy qilinmagani uchun hozir xavf yo'q; ehtiyot chorasi — ADD CONSTRAINT dan oldin shu qiymatli qatorlarni tozalash. ORTIQCHA O'CHIRISH TEKSHIRUVI (hammasi o'tdi): - StockService.findMovementsByTypeAndSourceRef() o'chirilishi XAVFSIZ: 115204b^ da yagona chaqiruvchi OrderService.createFailedDeliveryStockReturn edi (git grep bilan butun src/ bo'ylab tasdiqlandi); asosidagi repository metodi findByMovementTypeAndSourceRefIdOrderBy... WarehouseTransferReceivePoster:102 da ishlatilishda davom etadi — yetim qolmadi. - findDeliveringOrderForUpdate saqlangan, endi 2 chaqiruvchi: confirmDelivery (:1547), markDeliveredManual (:1600) — ikkala yo'l ham buzilmagan, @Transactional joyida, javadoc Q14=C bo'yicha yangilangan. - MUTANT 2 (V36 dan bitta DROP COLUMN olib tashlandi) O'LDI: OrderEntitySchemaValidationTest.orderEntityColumnsMatchOrdersTableColumns yiqildi (ikki tomonlama information_schema solishtiruvi). DIQQAT: OrdersMigrationTest bu mutantni USHLAMADI (18/18 yashil) — ustun qo'riqchisi FAQAT OrderEntitySchemaValidationTest da. GIGIYENA: mutatsiya izolyatsiyalangan git worktree'da (/tmp/qa-EP-10-T05-S06) o'tkazildi va --force bilan butunlay o'chirildi. Asosiy daraxt: grep -rn MUTANT src/ BO'SH, git status TOZA, git worktree list da qoldiq YO'Q, openapi/ ga tegilmadi, surefire hisobotlari saqlandi.

  • ✓

    qa-ep-10-t05-s06 qabul mezonini belgiladi

    ✓ delivering holatidan chiqishning yagona yoli delivered ekani test bilan qoplangan (fail-delivery so rovi 404/405 qaytaradi yoki marshrut umuman yoq)

  • ✓

    qa-ep-10-t05-s06 qabul mezonini belgiladi

    ✓ To liq test to plami yashil: mvn test 0 failure 0 error; OrderConfirmDeliveryControllerTest va OrderCancelControllerTest saqlanib qolgan va yashil

  • ✓

    qa-ep-10-t05-s06 qabul mezonini belgiladi

    ✓ Backend da fail-delivery endpoint i, servis metodi va DTO si YOQ; grep fail.delivery src/ bosh (javadoc/izoh qoldiqlarisiz)

  • ✓

    qa-ep-10-t05-s06 qabul mezonini belgiladi

    ✓ openapi/v1/orders.yaml da POST /orders/{id}/fail-delivery yoli, uning request/response sxemalari va order.delivery_failed havolalari YOQ; kontrakt qayta muzlatilgan

  • 💬

    worker-ep-10-t05 izoh qoldirdi

    Coder subagent navbatni kutish bilan yopib qo'ydi (background mvn). worker-pm to'liq to'plamni o'zi bloklovchi holda yurgizdi: Tests run 2289, Failures 0, Errors 0, Skipped 0 (220 klass, BUILD SUCCESS, 1h36m). Commit 115204b, 16 fayl, openapi/ tegilmagan. QA kutilmoqda.

  • 📄

    worker-ep-10-t05 fayllarni qayd etdi

    16 ta fayl qayd etildi

  • ⇄

    system statusni o'zgartirdi Ishlanyapti → Tayyor

    Avtomatik bo'shatildi: 60 daqiqa signal yo'q

  • ⚐

    system bo'shatdi

    Avtomatik bo'shatildi: 60 daqiqa signal yo'q

  • ⇄

    coder-ep-10-t05-s06 statusni o'zgartirdi Backlog → Ishlanyapti

    Agent ishni boshladi

  • ⚑

    coder-ep-10-t05-s06 ishga oldi

  • ✦

    team-lead-pm yaratdi

    fail-delivery mexanizmini olib tashlash (06_orders Q14 = C)

Ma'lumot

Agent
—
Olingan
—
Boshlandi
02.09.2026 06:09
Tugadi
02.09.2026 11:41
Baho
3 soat
Spec
docs/modules/06_orders.md §4, §5 R19(d) BEKOR, §12 AC14 BEKOR; changelog 2026-09-02
Branch
feat/EP-10-erpbom-backend
Commit
b6a7516c9f5d

Bog'liqliklar

Bundan oldin tugashi kerak

Yo'q — bu ish mustaqil.

Agent uchun

Bu ishni AI agent quyidagicha oladi:

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

Tugatgach:

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