Sub-task EP-12-T09-S01 O'rta 08_finance erpbom-mobile

Sverka aktini tasdiqlash / rad etish (Ta'minotchi, Mijoz)

Bajarildi
Status:

Tavsif

Yuborilgan akt (F2 raqamlari bilan) ko'rinadi; hamkor tasdiqlaydi yoki izoh yozib rad etadi (`disputed`).

Texnik ko'rsatma

Agent uchun

* Rad etishda `dispute_comment` majburiy. * Yangi versiya akt kelganda eskisi tarixda ko'rinadi. * `aud=supplier` / `aud=customer`.

Qabul mezonlari (DoD)

2 / 2 bajarildi

  • Izohsiz rad etib bo'lmaydi

    qa-ep-12-t09-s01 · 1 о аввал

  • Tasdiqlangach aktda `confirmed_by=partner` ko'rinadi

    qa-ep-12-t09-s01 · 1 о аввал

O'zgargan fayllar

22 ta

  • modified test/features/shared/reconciliations/view/reconciliation_detail_screen_test.dart
  • modified test/features/shared/reconciliations/view/reconciliation_list_screen_test.dart
  • modified test/features/shared/reconciliations/cubit/reconciliation_detail_cubit_test.dart
  • modified test/features/shared/reconciliations/cubit/reconciliation_list_cubit_test.dart
  • modified test/features/shared/reconciliations/data/reconciliation_api_test.dart
  • modified lib/features/shared/reconciliations/view/reconciliation_entry.dart
  • modified lib/features/shared/reconciliations/view/reconciliation_detail_screen.dart
  • modified lib/features/shared/reconciliations/view/reconciliation_list_screen.dart
  • modified lib/features/shared/reconciliations/cubit/reconciliation_detail_cubit.dart
  • modified lib/features/shared/reconciliations/cubit/reconciliation_detail_state.dart
  • modified lib/features/shared/reconciliations/cubit/reconciliation_list_cubit.dart
  • modified lib/features/shared/reconciliations/cubit/reconciliation_list_state.dart
  • modified lib/features/shared/reconciliations/data/reconciliation_api.dart
  • modified lib/features/shared/reconciliations/data/reconciliation_dispute_request.dart
  • modified lib/features/shared/reconciliations/data/reconciliation_response.dart
  • modified lib/features/shared/reconciliations/data/decimal_converters.dart
  • modified lib/features/shared/reconciliations/data/reconciliation_confirmed_by.dart
  • modified lib/features/shared/reconciliations/data/reconciliation_status.dart
  • modified lib/features/supplier/home/view/supplier_home_screen.dart
  • modified lib/features/customer/home/view/customer_home_screen.dart
  • modified lib/core/router/app_routes.dart
  • modified lib/core/router/app_router.dart

Izoh qoldirish

Tarix

16 yozuv

  • ✎

    finalize-ep-12 yangiladi

    Yangilandi: branch, commit_sha, pr_url

  • ✎

    pm-agent yangiladi

    Yangilandi: estimate_hours

  • ✎

    pm-agent yangiladi

    Yangilandi: estimate_hours

  • ✎

    team-lead-pm yangiladi

    Yangilandi: estimate_hours

  • ⇄

    qa-ep-12-t09-s01 statusni o'zgartirdi Review → Bajarildi

  • 💬

    qa-ep-12-t09-s01 izoh qoldirdi

    QA (qa-EP-12-T09-S01) — mustaqil tekshiruv, commit adde570. VERDIKT: done. TESTLAR: 38/38 yashil (izolyatsiyalangan `git worktree`da, adde570 HEAD). `flutter analyze` — "No issues found!". Eslatma: `.env` gitignore'da, worktree'da yo'q edi -> `flutter test` "No file or variants found for asset: .env" bilan yiqilardi; `cp` bilan qo'yib yurgizildi (kod nuqsoni EMAS, muhit sozlamasi). MEZONLAR (ikkalasi ham kod darajasida tasdiqlandi): * #4232 "Izohsiz rad etib bo'lmaydi" — reconciliation_detail_screen.dart:368 `onPressed: trimmed.isEmpty ? null : ...` (trim qilingan bo'sh matn ham bloklanadi), TextField `maxLength: 500` kontrakt maxLength bilan mos; server tarafi ham qoplangan (api_test: 400 VALIDATION_ERROR). * #4233 "confirmed_by=partner ko'rinadi" — reconciliation_detail_screen.dart:211-215 ("Kim tasdiqladi" qatori), reconciliation_confirmed_by.dart:14-17 (partner->"Siz", internal->"Kompaniya" — farq ko'rinadi). MUTATSIYA TEKSHIRUVI (4 mutant, izolyatsiyalangan worktree'da, hammasi USHLANDI): * M1 bo'sh izoh validatsiyasi olib tashlandi -> detail_screen_test yiqildi; * M2 partner yorlig'i internal bilan bir xil qilindi -> yiqildi; * M3 "Kim tasdiqladi" qatori yashirildi -> yiqildi; * M4 wire drift: JSON kaliti confirmed_by -> confirmedBy (.g.dart) -> reconciliation_api_test yiqildi (ya'ni testlar HAQIQIY JSON parse qiladi, faqat modelni qo'lda qurmaydi). Mutantlar `cp *.orig` bilan tiklandi; `git grep MUTANT HEAD` bo'sh, worktree o'chirildi, asosiy daraxtga TEGILMADI (EP-12-T09-S02 ishi buzilmagan). KONTRAKT DRIFTI (finance.yaml, maydon darajasida solishtirildi): drift YO'Q. Modeldagi har maydon nomi/tipi/nullable'ligi kontraktga mos — period_id/version/currency_code/status/confirmed_by/confirmed_at/ dispute_comment/sent_at/created_at + 4 ta pul maydoni `type: string` (18,2) DecimalConverter bilan (double.parse ishlatilmagan). Enumlar to'liq: status draft|sent|confirmed|disputed, confirmed_by partner|internal. ReconciliationPage — common.yaml Page (items,page,size,total_items,total_pages) bilan mos. ReconciliationDisputeRequest: dispute_comment required/minLength 1. Kuzatuv (nuqson emas): model kontraktdagi account_id/counterparty_type/ counterparty_id/counterparty_name/confirmed_by_user_id/created_by_user_id maydonlarini ataylab olmagan (hamkor rolida ortiqcha, kodda izohlangan) — ortiqcha JSON kalitlari e'tiborsiz qoladi, runtime crash xavfi yo'q. FIXTURE XILMA-XILLIGI: qotib qolgan qiymat topilmadi — status sent(10)/ confirmed(9)/disputed(9) (`draft` ataylab yo'q: hamkorga yuborilmagan akt so'ralmaydi), confirmed_by partner(5) VA internal(1), version 1 va 2 (>1), dispute_comment bo'sh/bo'shliqli/to'ldirilgan holatlari alohida testlarda. TEXNIK SHARTLAR: `latest_only` default `false` (reconciliation_api.dart:35,45) -> "Tarix" tabida eski versiyalar ko'rinadi, testda qoplangan. Ekran ikkala rolda: supplier_home_screen.dart:40 va customer_home_screen.dart:48 bir xil ReconciliationEntry (features/shared/) ni ishlatadi.

  • ✓

    qa-ep-12-t09-s01 qabul mezonini belgiladi

    ✓ Tasdiqlangach aktda `confirmed_by=partner` ko'rinadi

  • ✓

    qa-ep-12-t09-s01 qabul mezonini belgiladi

    ✓ Izohsiz rad etib bo'lmaydi

  • ⇄

    coder-ep-12-t09-s01 statusni o'zgartirdi Ishlanyapti → Review

  • 💬

    coder-ep-12-t09-s01 izoh qoldirdi

    Bajarildi: shared/reconciliations feature (Ta'minotchi+Mijoz bitta ekran, egalik/rule yo'q). finance.yaml Reconciliations kontraktiga aynan mos (GET /reconciliations, GET/{id}, POST /{id}/confirm, POST /{id}/dispute). AC#4232: dispute_comment bo'sh bo'lsa Yuborish tugmasi disabled (trim ham). AC#4233: confirmed_by=partner/internal aktda ko'rinadi (label: Siz/Kompaniya). flutter analyze: 0 ta muammo. flutter test test/features/shared/reconciliations: 38/38 yashil. flutter test test/core/router/app_router_test.dart (regressiya): 32/32 yashil. Commit adde570 (branch feat/EP-12-erpbom-mobile), push qilinmadi.

  • ✓

    coder-ep-12-t09-s01 qabul mezonini belgiladi

    ✓ Tasdiqlangach aktda `confirmed_by=partner` ko'rinadi

  • ✓

    coder-ep-12-t09-s01 qabul mezonini belgiladi

    ✓ Izohsiz rad etib bo'lmaydi

  • 📄

    coder-ep-12-t09-s01 fayllarni qayd etdi

    22 ta fayl qayd etildi

  • ⇄

    coder-ep-12-t09-s01 statusni o'zgartirdi Backlog → Ishlanyapti

    Agent ishni boshladi

  • ⚑

    coder-ep-12-t09-s01 ishga oldi

  • ✦

    pm-agent yaratdi

    Sverka aktini tasdiqlash / rad etish (Ta'minotchi, Mijoz)

Ma'lumot

Agent
coder-ep-12-t09-s01
Olingan
1 о аввал
Boshlandi
07.09.2026 06:44
Tugadi
07.09.2026 07:11
Baho
6 soat
Spec
erp/docs/modules/08_finance.md#2.17
Branch
feat/EP-12-erpbom-mobile
Commit
adde57079d18

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

Tugatgach:

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