Sub-task EP-10-T09-S02 Yuqori 06_orders erpbom-mobile

Yetkazildi tasdig'i — GPS va offline navbat

Bajarildi
Status:

Texnik ko'rsatma

Agent uchun

* Tasdiq bilan GPS (`delivery_gps_lat/lng`) yuboriladi. * 🔴 OFFLINE NAVBAT (§11 NFR): ulanish yo'q bo'lsa tasdiq qurilmada NAVBATGA olinadi va ulanish tiklanganda yuboriladi (GPS o'sha lahzadan). * 🔴 §3 p.8 — logout/rol almashtirishda navbat bo'sh bo'lmasa: ilova AVVAL yuborishga urinadi; ulanish yo'q bo'lsa ogohlantiradi ("Yuborilmagan N ta tasdiq bor...") va ikki tanlov beradi — Kutish (default) yoki Baribir chiqish (navbat o'chiriladi). JIM YO'QOTISH YO'Q. ⚠️ Spec'da bu band "taklif, tasdiq kutilmoqda" deb belgilangan — implementatsiya shu variantni bajaradi; biznes boshqacha qaror qilsa o'zgarishi mumkin.

Qabul mezonlari (DoD)

3 / 3 bajarildi

  • Ulanishsiz bosilgan tasdiq navbatga tushadi va ulanish qaytganda yuboriladi

    qa-ep-10-t09-s02 · 1 о аввал

  • Navbat bo'sh emas ekan logout bosilsa ogohlantirish va ikki tanlov chiqadi; jim yo'qotish yo'q

    qa-ep-10-t09-s02 · 1 о аввал

  • 5 km ogohlantirishi tasdiqni BLOKLAMAYDI

    qa-ep-10-t09-s02 · 1 о аввал

O'zgargan fayllar

35 ta

  • modified test/features/driver/deliveries/cubit/driver_delivery_list_cubit_test.dart
  • modified test/features/driver/deliveries/cubit/fail_delivery_cubit_test.dart
  • modified test/features/driver/deliveries/cubit/driver_delivery_detail_cubit_test.dart
  • added test/features/driver/deliveries/data/delivery_distance_calculator_test.dart
  • added lib/features/driver/deliveries/data/delivery_distance_calculator.dart
  • added lib/features/driver/deliveries/data/order_delivery_confirm_response.dart
  • modified lib/features/driver/deliveries/data/order_detail_response.dart
  • modified lib/features/driver/deliveries/data/order_response.dart
  • modified test/support/in_memory_delivery_confirmation_queue.dart
  • modified test/support/fake_delivery_location_provider.dart
  • modified test/features/driver/deliveries/view/driver_delivery_list_screen_test.dart
  • modified test/features/driver/deliveries/view/driver_delivery_detail_screen_test.dart
  • modified test/features/driver/deliveries/data/driver_delivery_api_test.dart
  • modified test/features/driver/deliveries/data/delivery_confirmation_sync_service_test.dart
  • modified test/features/driver/deliveries/data/delivery_confirmation_queue_test.dart
  • modified test/features/driver/deliveries/cubit/confirm_delivery_cubit_test.dart
  • modified test/core/router/app_router_test.dart
  • modified test/core/auth/role_session_controller_test.dart
  • modified lib/features/driver/deliveries/view/driver_delivery_list_screen.dart
  • modified lib/features/driver/deliveries/view/driver_delivery_detail_screen.dart
  • modified lib/features/driver/deliveries/data/pending_delivery_confirmation.g.dart
  • modified lib/features/driver/deliveries/data/pending_delivery_confirmation.freezed.dart
  • modified lib/features/driver/deliveries/data/pending_delivery_confirmation.dart
  • modified lib/features/driver/deliveries/data/driver_delivery_api.dart
  • modified lib/features/driver/deliveries/data/delivery_location_provider.dart
  • modified lib/features/driver/deliveries/data/delivery_confirmation_sync_service.dart
  • modified lib/features/driver/deliveries/data/delivery_confirmation_queue.dart
  • modified lib/features/driver/deliveries/cubit/driver_delivery_list_cubit.dart
  • modified lib/features/driver/deliveries/cubit/driver_delivery_detail_cubit.dart
  • modified lib/features/driver/deliveries/cubit/confirm_delivery_state.freezed.dart
  • modified lib/features/driver/deliveries/cubit/confirm_delivery_state.dart
  • modified lib/features/driver/deliveries/cubit/confirm_delivery_cubit.dart
  • modified lib/core/router/app_router.dart
  • modified lib/core/auth/role_session_controller.dart
  • modified lib/core/auth/pending_exit_guard.dart

Izoh qoldirish

Tarix

33 yozuv

  • ✎

    finalize-ep-10 yangiladi

    Yangilandi: commit_sha, pr_url

  • 💬

    worker-ep-10-t09 izoh qoldirdi

    Yakuniy commit (AC3750): 51f51ce65b214e046b3b2563fc14ad2c0a98402d — feat/EP-10-erpbom-mobile. Push qilinmadi (epic yakunlash fazasida).

  • ⇄

    qa-ep-10-t09-s02 statusni o'zgartirdi Review → Bajarildi

  • 💬

    qa-ep-10-t09-s02 izoh qoldirdi

    QA (worker-pm bajardi — QA subagent .env yo'q worktree'da to'xtab qolgan edi): AC3750 tasdiqlandi. Baseline: flutter analyze 0 issue, flutter test 770/770. Mutatsiya izolyatsiyalangan worktree'da: (1) warnThresholdMeters 5000->50000 -> FAQAT chegara testi (~5010m isFar TRUE) qizardi; (2) proceedAfterFarWarning submit o'chirildi -> AC3750 ning ikkala testi (cubit + detail screen) qizardi. Kontrakt: so'rov tanasi faqat gps_lat/gps_lng/confirmed_at (masofa/bayroq YO'Q); far_from_address bool? va true/false/null uchoviga test bor. Worktree o'chirildi, MUTANT qoldig'i yo'q, daraxt toza.

  • ✓

    qa-ep-10-t09-s02 qabul mezonini belgiladi

    ✓ 5 km ogohlantirishi tasdiqni BLOKLAMAYDI

  • ⇄

    coder-ep-10-t09-s02 statusni o'zgartirdi Ishlanyapti → Review

  • 💬

    coder-ep-10-t09-s02 izoh qoldirdi

    AC 3750 bajarildi. Kontrakt 2026-09-03 (Q9c variant A) OrderResponse/OrderDetailResponse ga customer_address/customer_lat/customer_lng qo'shdi; confirm-delivery javobi endi OrderDeliveryConfirmResponse (+ server hisoblagan far_from_address, nullable). Klient DeliveryDistanceCalculator (haversine, chegara 5000m, qat'iy >) bilan GPS-mijoz masofasini so'rov yuborilishidan OLDIN tekshiradi; 5 km dan uzoq bo'lsa ConfirmDeliveryCubit farWarning holatini emit qiladi, dialog 'Bekor qilish'/'Baribir tasdiqlash' beradi - ikkalasi ham so'rovni BLOKLAMAYDI (baribir tasdiqlash so'rovni yuboradi). So'rov tanasi o'zgarmadi (faqat gps_lat/gps_lng/confirmed_at) - masofa/bayroq serverga yuborilmaydi. flutter analyze: 0 issue. flutter test: 770/770 yashil (mavjud 173+ regressiyasiz - jami 770 ta, avvalgi barglar bilan o'sgan). Mutatsiya qo'lda tekshirildi: chegara 5000->50000 va `>`->`<` ikkalasi ham delivery_distance_calculator_test.dart ni qizartirdi, keyin tiklandi (grep MUTANT bo'sh). Board 'files'da ko'rsatilgan fayllardan tashqari test/features/driver/deliveries/cubit/driver_delivery_detail_cubit_test.dart va test/features/driver/deliveries/cubit/fail_delivery_cubit_test.dart ham OrderDetailResponse'ning yangi majburiy maydonlari (customer_address/lat/lng) uchun yangilandi - ular constructor argumentlari, boshqa hech narsa o'zgarmadi. Commit 51f51ce.

  • ✓

    coder-ep-10-t09-s02 qabul mezonini belgiladi

    ✓ 5 km ogohlantirishi tasdiqni BLOKLAMAYDI

  • 📄

    coder-ep-10-t09-s02 fayllarni qayd etdi

    19 ta fayl qayd etildi

  • ⇄

    coder-ep-10-t09-s02 statusni o'zgartirdi Backlog → Ishlanyapti

    Agent ishni boshladi

  • ⚑

    coder-ep-10-t09-s02 ishga oldi

  • ⇄

    team-lead-pm statusni o'zgartirdi Bloklangan → Backlog

    BLOK YECHILDI (2026-09-03, biznes qarori olindi — 05_customers Q9 + 06_orders Q9c = variant A). (1) Koordinata manbai: customers.address + customers.lat/lng — UCHALASI MAJBURIY, qolda kiritiladi (05 §2.1, AC13). (2) Snapshot YOQ: manzil ozgarsa ochiq buyurtma ham joriy koordinata bilan tekshiriladi. (3) 5 km hisobi: klient ogohlantirishni ozi korsatadi (offline, faqat korsatuv, tasdiqni BLOKLAMAYDI), lekin shubhali tasdiq bayrogini va order.delivery_far_from_address notificationini SERVER qoyadi — sorovdagi GPS bilan customers.lat/lng orasidagi masofani qayta hisoblab; klient yuborgan masofa/bayroq QABUL QILINMAYDI. Qolda tasdiqlangan yolda (GPS NULL) hisob yurgizilmaydi. (4) Ombor koordinatasi bu tekshiruvda ISHTIROK ETMAYDI — warehouses ga ustun qoshilmaydi. Doc: 06_orders R19c + AC13, 05_customers §2.1/UC1/AC13/Q9. KETMA-KETLIK: avval kontrakt (customers.yaml + orders.yaml) yangilanadi, keyin EP-10-T05-S07 (customers ustunlari), keyin shu barg.

  • 💬

    worker-ep-10-t09 izoh qoldirdi

    AC 3750 ("5 km ogohlantirishi tasdiqni BLOKLAMAYDI") BAJARIB BO'LMAYDI — spec bo'shligi, kod aybi emas. SABAB: yetkazish MANZILI va uning KOORDINATASI hech bir modelda saqlanmaydi — 06_orders §2.1 `orders` da manzil ustuni yo'q, 05_customers §2.1 `customers` da ham yo'q (muzlatilgan CustomerResponse: name/phone/sector_id...). Kontrakt buni ATAYLAB qayd etgan: openapi/v1/orders.yaml "SPEC BO'SHLIQLARI" p.1 va p.2. Demak tasdiq nuqtasi bilan manzil orasidagi masofa hisoblanmaydi va 5 km ogohlantirishi (R19c/E12/AC13) qurilmaydi. Manzil, koordinata yoki radius hisobi TO'QILMADI. QILINGANI (QA mustaqil tasdiqladi): AC 3748 — offline navbat (bosilgan lahzadagi GPS + confirmed_at saqlanadi; navbatga FAQAT dio ulanish xatosida tushadi, 409/403 tushmaydi; ulanish qaytganda yuboriladi va navbatdan o'chiriladi; shared_preferences persistensiyasi, FIFO). AC 3749 — logout VA switchRole ikkalasida ogohlantirish + "Kutish"/"Baribir chiqish"; jim yo'qotish yo'q. Mutatsiya sinovi: guard olib tashlash (logout va switchRole), "navbat bo'sh" yolg'oni, "Kutish" chiqishga ruxsat, .toUtc() — HAMMASI o'ldi. 173 test yashil, analyze toza. Commit: d9dca4e + b0f924d (branch feat/EP-10-erpbom-mobile). OCHILGANDA KERAK BO'LADI: (1) yetkazish manzili (matn) va koordinatasi (lat/lng) qaysi modelda saqlanishi — 06 `orders` da snapshot sifatidami yoki 05 `customers` da; majburiymi; kim va qachon kiritadi. (2) 5 km hisobi qayerda bajariladi (klient yoki server) va `order.delivery_far_from_address` notification triggeri qanday hujjatlanadi. (3) Kontraktga qo'shilishi kerak bo'lgani: javob DTO'sida `customer_address`/koordinata va "shubhali tasdiq" bayrog'i — faqat kontrakt o'zgarishi tartibi bilan. Bu bo'shliq erp/docs §5 savol-javob sikli orqali yopiladi (kodda taxmin qilinmadi).

  • ⇄

    worker-ep-10-t09 statusni o'zgartirdi Review → Bloklangan

    AC 3750 ("5 km ogohlantirishi tasdiqni BLOKLAMAYDI") BAJARIB BO'LMAYDI — spec bo'shligi, kod aybi emas. SABAB: yetkazish MANZILI va uning KOORDINATASI hech bir modelda saqlanmaydi — 06_orders §2.1 `orders` da manzil ustuni yo'q, 05_customers §2.1 `customers` da ham yo'q (muzlatilgan CustomerResponse: name/phone/sector_id...). Kontrakt buni ATAYLAB qayd etgan: openapi/v1/orders.yaml "SPEC BO'SHLIQLARI" p.1 va p.2. Demak tasdiq nuqtasi bilan manzil orasidagi masofa hisoblanmaydi va 5 km ogohlantirishi (R19c/E12/AC13) qurilmaydi. Manzil, koordinata yoki radius hisobi TO'QILMADI. QILINGANI (QA mustaqil tasdiqladi): AC 3748 — offline navbat (bosilgan lahzadagi GPS + confirmed_at saqlanadi; navbatga FAQAT dio ulanish xatosida tushadi, 409/403 tushmaydi; ulanish qaytganda yuboriladi va navbatdan o'chiriladi; shared_preferences persistensiyasi, FIFO). AC 3749 — logout VA switchRole ikkalasida ogohlantirish + "Kutish"/"Baribir chiqish"; jim yo'qotish yo'q. Mutatsiya sinovi: guard olib tashlash (logout va switchRole), "navbat bo'sh" yolg'oni, "Kutish" chiqishga ruxsat, .toUtc() — HAMMASI o'ldi. 173 test yashil, analyze toza. Commit: d9dca4e + b0f924d (branch feat/EP-10-erpbom-mobile). OCHILGANDA KERAK BO'LADI: (1) yetkazish manzili (matn) va koordinatasi (lat/lng) qaysi modelda saqlanishi — 06 `orders` da snapshot sifatidami yoki 05 `customers` da; majburiymi; kim va qachon kiritadi. (2) 5 km hisobi qayerda bajariladi (klient yoki server) va `order.delivery_far_from_address` notification triggeri qanday hujjatlanadi. (3) Kontraktga qo'shilishi kerak bo'lgani: javob DTO'sida `customer_address`/koordinata va "shubhali tasdiq" bayrog'i — faqat kontrakt o'zgarishi tartibi bilan. Bu bo'shliq erp/docs §5 savol-javob sikli orqali yopiladi (kodda taxmin qilinmadi).

  • 💬

    qa-ep-10-t09-s02 izoh qoldirdi

    QA qayta tekshiruv (b0f924d, TOR doira) — QABUL QILINDI. lib/ ga tegilmagan (git diff d9dca4e..b0f924d -- lib bo'sh), shuning uchun AC 3748 oldingi turdagi tasdiq kuchida qoladi; faqat test qatlami tekshirildi. Mutatsiya (izolyatsiyalangan worktree /tmp/qa-EP-10-T09-S02b, HEAD b0f924d): g (_switchRole dan `if (!await _confirmExit()) return;` olib tashlandi) -> O'LDI: ikkala yangi 'Rolni almashtirish' testi yiqildi (171 +/-2). Oldingi turda TIRIK qolgan edi — bo'shliq yopildi. e (_confirmExit doim 'navbat bo'sh' deb qaytaradi) -> O'LDI: endi 4 ta test yiqiladi (2 logout + 2 switchRole; avval 2 edi). f ('Kutish' chiqishga ruxsat beradi) -> O'LDI: logout 'Kutish' + switchRole 'Kutish' testlari (2 ta). utc (driver_delivery_api.dart dan .toUtc() olib tashlandi) -> O'LDI: yangi lokal-DateTime testi tutdi. Eski testlar buzilmadi (e/f mutantlarida oldingi logout testlari ham yiqilishda davom etadi; toza daraxtda 173/173 yashil). Yangi testlar sifati: tautologik EMAS — 'Kutish' shoxobchasida uchta mustaqil da'vo tekshiriladi (DriverHomeScreen hali ochiq, RoleSelectScreen findsNothing, navbat hasLength(1) + orderId 11 daxlsiz); 'Baribir chiqish' da RoleSelectScreen + navbat isEmpty. UTC testi qiymat tengligidan tashqari endsWith('Z') bilan isUtc bayrog'ini alohida tutadi, ya'ni host TZ = UTC bo'lganda ham mutantni ushlaydi. Fixture: yangi api testi ataylab LOKAL DateTime(2026-08-28 17:30) — mavjud UTC 12:30 fixturedan farqli. Router testlarining seed'i bitta element (order 11) — dialog/guard yo'li uchun yetarli va allaqachon qabul qilingan logout testlari bilan bir xil naqsh. Bloklovchi bo'lmagan kuzatuv: seed doim 1 element bo'lgani uchun dialog matnidagi N sanog'ini 1 ga qotirib qo'yadigan mutant tirik qolardi (kelajakda ikki elementli seed bilan yopilishi mumkin). Testlar: flutter test test/features/driver test/core -> 173 passed, 0 failed. flutter analyze lib test -> No issues found. Worktree o'chirildi (worktree list bitta qator), MUTANT/.orig qoldig'i yo'q, ish daraxti toza. AC 3749 -> is_met=true. AC 3750 ga TEGILMADI, status `review` da qoldirildi.

  • ✓

    qa-ep-10-t09-s02 qabul mezonini belgiladi

    ✓ Navbat bo'sh emas ekan logout bosilsa ogohlantirish va ikki tanlov chiqadi; jim yo'qotish yo'q

  • ⇄

    coder-ep-10-t09-s02 statusni o'zgartirdi Ishlanyapti → Review

  • ✎

    coder-ep-10-t09-s02 yangiladi

    Yangilandi: commit_sha

  • 📄

    coder-ep-10-t09-s02 fayllarni qayd etdi

    2 ta fayl qayd etildi

  • ✓

    coder-ep-10-t09-s02 qabul mezonini belgiladi

    ✓ Navbat bo'sh emas ekan logout bosilsa ogohlantirish va ikki tanlov chiqadi; jim yo'qotish yo'q

  • 💬

    qa-ep-10-t09-s02 izoh qoldirdi

    QA (mustaqil o'lchov, d9dca4e) — QAYTARILDI. AC 3748 = TASDIQLANDI: offline aniqlash faqat dio ulanish turlari bilan (driver_delivery_api.dart:100-104, _connectivityErrorTypes), 409/403 status kodli javob ApiException bo'lib navbatga TUSHMAYDI (har ikki tarmoq api va cubit testlarida qamralgan); navbat elementi bosilgan lahzadagi confirmed_at + GPS ni saqlaydi (confirm_delivery_cubit.dart:47-48, 61-68), flush saqlangan qiymatni yuboradi va muvaffaqiyatdan keyin o'chiradi; shared_preferences persistensiyasi va FIFO tartibi sinalgan. Kontrakt: gps_lat/gps_lng/confirmed_at, ortiqcha maydon yo'q, yo'l/javob mos. Manzil/radius/masofa TO'QILMAGAN. AC 3749 = QAYTARILDI (test bo'shlig'i, kod emas). Kod darajasida guard IKKALA yo'lda ham bor (app_router.dart:525 _switchRole, :535 _logout -> _confirmExit), chetlab o'tadigan uchinchi yo'l yo'q. LEKIN mutatsiya tekshiruvi bo'shliq topdi: MUTANT g: app_router.dart:525 dagi `if (!await _confirmExit()) return;` qatorini _switchRole dan OLIB TASHLADIM -> 170 testning HAMMASI YASHIL QOLDI (TIRIK MUTANT). Ya'ni 'Rolni almashtirish' yo'lida navbat bo'sh emas ekan ogohlantirishsiz chiqish regressiyasi hech qanday test bilan ushlanmaydi. test/core/router/app_router_test.dart:263-415 dagi AC3749 guruhida faqat 'Chiqish' (logout) yo'li sinalgan. Kerak: test/core/router/app_router_test.dart AC3749 guruhiga 'Rolni almashtirish' uchun kamida bitta widget testi — seedPendingQueue() + connectionError flush, menyudan 'Rolni almashtirish', ogohlantirish chiqishi, 'Kutish' -> RoleSelectScreen'ga O'TMAYDI va navbat daxlsiz qoladi. (Ixtiyoriy: driver_delivery_api_test.dart:245 `body['confirmed_at']` ni UTC bo'lmagan (lokal) DateTime bilan ham tekshiring — hozir fixture UTC bo'lgani uchun .toUtc() mutanti ham tirik qoladi.) Boshqa mutantlar O'LDIRILDI: a1 (api: har qanday DioException -> NetworkException) api+widget testi; a2 (cubit: ApiException ham navbatga) cubit+widget testi; b (enqueue o'chirildi) cubit+widget; c1 (flush'da DateTime.now()/null GPS) sync testi; c2 (enqueue'da DateTime.now()/null) cubit+widget; d (muvaffaqiyatdan keyin remove yo'q) sync+router testi; e (guard 'navbat bo'sh' deydi) router 2 test; f ('Kutish' chiqishga ruxsat) router testi. Fixture xilma-xilligi: QONIQARLI (queue/sync/api testlarida ikki farqli element — farqli order_id/confirmed_at, biri GPS bilan biri GPS'siz). AC 3750 ga TEGILMADI (spec bo'shlig'i, worker PM hal qiladi). Testlar: flutter test test/features/driver test/core -> 170 passed, 0 failed. flutter analyze lib test -> No issues found. Worktree /tmp/qa-EP-10-T09-S02 o'chirildi, MUTANT qoldig'i yo'q.

  • ⇄

    qa-ep-10-t09-s02 statusni o'zgartirdi Review → Ishlanyapti

  • ✓

    qa-ep-10-t09-s02 qabul mezonini belgiladi

    ✗ Navbat bo'sh emas ekan logout bosilsa ogohlantirish va ikki tanlov chiqadi; jim yo'qotish yo'q

  • ✓

    qa-ep-10-t09-s02 qabul mezonini belgiladi

    ✓ Ulanishsiz bosilgan tasdiq navbatga tushadi va ulanish qaytganda yuboriladi

  • 💬

    coder-ep-10-t09-s02 izoh qoldirdi

    AC 3750 (5 km ogohlantirishi) ATAYLAB bajarilmadi va is_met=true qilinmadi: yetkazish manzili va uning koordinatasi hech bir modelda saqlanmaydi (orders.yaml fayl boshi, SPEC BO'SHLIQLARI p.1/p.2 — 05_customers da ham manzil yo'q). Masofa hisoblash uchun asos yo'q, hardcode/soxta maydon qo'shilmadi. Board holatini blocked qilmadim — vazifa ko'rsatmasiga ko'ra buni team-lead hal qiladi.

  • ⇄

    coder-ep-10-t09-s02 statusni o'zgartirdi Ishlanyapti → Review

  • ✎

    coder-ep-10-t09-s02 yangiladi

    Yangilandi: branch, commit_sha

  • ✓

    coder-ep-10-t09-s02 qabul mezonini belgiladi

    ✓ Navbat bo'sh emas ekan logout bosilsa ogohlantirish va ikki tanlov chiqadi; jim yo'qotish yo'q

  • ✓

    coder-ep-10-t09-s02 qabul mezonini belgiladi

    ✓ Ulanishsiz bosilgan tasdiq navbatga tushadi va ulanish qaytganda yuboriladi

  • 📄

    coder-ep-10-t09-s02 fayllarni qayd etdi

    27 ta fayl qayd etildi

  • ⇄

    coder-ep-10-t09-s02 statusni o'zgartirdi Backlog → Ishlanyapti

    Agent ishni boshladi

  • ⚑

    coder-ep-10-t09-s02 ishga oldi

  • ✦

    pm-agent yaratdi

    Yetkazildi tasdig'i — GPS va offline navbat

Ma'lumot

Agent
coder-ep-10-t09-s02
Olingan
1 о аввал
Boshlandi
29.08.2026 03:17
Tugadi
03.09.2026 08:43
Baho
8 soat
Spec
erp/docs/modules/06_orders.md#11
Branch
feat/EP-10-erpbom-mobile
Commit
8db361948222

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-T09-S02/claim \
  -H "X-Agent: backend-dev-1"

Tugatgach:

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