Mijoz ro'yxati / kartochka / anketa tahriri (cache himoyasi bilan)
Tavsif
Texnik ko'rsatma
Agent uchun
Qabul mezonlari (DoD)
3 / 3 bajarildi
-
Tahrir so'rovida `credit_limit` yuborilsa qiymat O'ZGARMAYDI va so'rov aniq xato bilan rad etiladi (AC4)
qa-ep-08-t02-s02 · 1 о аввал
-
Ro'yxat filtri va qidiruvi kontraktdagi parametrlarga mos ishlaydi
qa-ep-08-t02-s02 · 1 о аввал
-
`customer.view` huquqisiz ro'yxat/kartochka 403
qa-ep-08-t02-s02 · 1 о аввал
O'zgargan fayllar
10 ta
-
modified
src/test/java/uz/erpbom/customers/controller/CustomerCreateTest.java -
modified
src/test/java/uz/erpbom/customers/controller/CustomerQueryTest.java -
modified
src/main/java/uz/erpbom/customers/dto/CustomerUpdateRequestDeserializer.java -
modified
src/main/java/uz/erpbom/customers/dto/CustomerUpdateRequest.java -
modified
src/main/java/uz/erpbom/customers/entity/CustomerOrganization.java -
modified
src/main/java/uz/erpbom/customers/repository/CustomerOrganizationRepository.java -
modified
src/main/java/uz/erpbom/customers/repository/CustomerContractRepository.java -
modified
src/main/java/uz/erpbom/customers/repository/CustomerRepository.java -
modified
src/main/java/uz/erpbom/customers/service/CustomerService.java -
modified
src/main/java/uz/erpbom/customers/controller/CustomerController.java
Izoh qoldirish
Tarix
12 yozuv
-
✎
finalize-ep-08 yangiladi
Yangilandi: pr_url
-
⇄
qa-ep-08-t02-s02 statusni o'zgartirdi Review → Bajarildi
-
💬
qa-ep-08-t02-s02 izoh qoldirdi
QA (qa-EP-08-T02-S02) — commit fafe060 — QABUL QILINDI. TESTLAR (worktree /tmp/qa-EP-08-T02-S02, HEAD=fafe060, flock ostida): surefire tests="11" CustomerCreateTest, tests="20" CustomerQueryTest — jami 31, failures=0, errors=0, skipped=0. (Coder sanog'i tasdiqlandi; grep -c '@Test' 12/21 ko'rsatgan edi — farq '@Testcontainers' annotatsiyasi.) MUTATSIYA TEKSHIRUVI — 6 mutant, HAMMASI O'LDI (tirik qolgan yo'q): (a) Deserializer oq ro'yxatiga "credit_limit" qo'shildi -> updateRejectsCreditLimitInBodyAndLeavesDbUnchanged YIQILDI (expected 400, was 200). javap: ldc // String credit_limit — bytecode'da tasdiqlandi. (b) list() da name filtri e'tiborsiz qoldirildi (null uzatildi) -> listFiltersByPartialNameMatch (expected 2, was 3) + listCombinesActiveAndNameFiltersWithAnd (expected 1, was 2) YIQILDI. javap: aconst_null. => test 'mos KELMAYDIGAN yozuv qaytmasligini' HAQIQATAN tekshiradi. (c) Repository JPQL: name sharti oldidagi AND -> OR -> 5 test YIQILDI, shu jumladan listCombinesActiveAndNameFiltersWithAnd (expected 1, was 3). (d) @RequirePermission("customer.view") ikkala metoddan olib tashlandi -> listWithoutViewPermissionReturnsForbidden VA getWithoutViewPermissionReturnsForbidden YIQILDI (ikkalasi ham). (e) Default saralash name,asc -> name,desc -> listDefaultSortIsNameAscending YIQILDI ([Zeta,Beta,Alfa] vs [Alfa,Beta,Zeta]). (f) toPattern() dan '%' olib tashlandi (qisman -> aniq tenglik) -> listFiltersByPartialNameMatch, listFiltersByPartialPhoneMatch, listCombinesActiveAndNameFiltersWithAnd YIQILDI. Mutantlar IZOLYATSIYALANGAN git worktree'da o'tkazildi, .orig nusxadan cp bilan tiklandi (checkout/reset/stash ISHLATILMADI). Yakunda: git diff bo'sh, grep -rn MUTANT src/ bo'sh, worktree o'chirildi, asosiy daraxt fafe060 da toza. FIXTURE XILMA-XILLIGI — YETARLI (EP-07 nuqsoni takrorlanmagan): name: 25+ turli qiymat (Tashkent Beton Import / Andijon Beton Zavod / Namangan Yog'och Baza / Alfa-Beta-Zeta ...); phone: har fixture'da turli, qisman qidiruv testida 3 xil prefiks (+998901234567, +998907654321, +998554443322) — '9890' 3 tadan 2 tasiga mos; active: true VA false (setActive(false) 2 testda); sector_id: 3 xil (A/B/C, DB'dan); payment_term_days: 30 va 45; credit_limit: null va null EMAS. Mutant (b)/(c)/(f) o'limi buni empirik tasdiqlaydi. MEZONLAR: AC3460 (cache himoyasi) — IKKALA yarmi ham qoplangan: (i) 400 VALIDATION_ERROR, (ii) DB'dagi customers.credit_limit/payment_term_days/active JDBC bilan o'qib O'ZGARMAGANI tasdiqlanadi; ustiga name ham o'zgarmagani tekshiriladi (bind butunlay yiqilgani isboti). Himoya CustomerUpdateRequestDeserializer oq ro'yxati {name,phone,sector_id} — credit_limit, payment_term_days, active, user_id ning TO'RTTASI ham rad etiladi. AC3461 — active, sector_id, name qisman ILIKE (LOWER+%), phone qisman ILIKE, birga berilsa AND, sahifalash (page/size/total_pages), default saralash name,asc, sort oq ro'yxati FAQAT name|phone|created_at|updated_at (credit_limit -> 400). AC3462 — ro'yxat 403 VA kartochka 403, ikkalasi ham. DOIRA — TOZA: CustomerController da faqat list/get/create/update. activate/deactivate (S03) va contracts/documents/organizations/credentials (T03-T07) YO'Q. CustomerOrganization repository FAQAT o'qish uchun ishlatiladi (existsByCustomerId + findCustomerIdsWithOrganization) — sale_ready hosilasini hisoblash uchun; save/delete chaqiruvi YO'Q (CRUD T07 da qoladi). KONTRAKT (muzlatilgan customers.yaml) — MOS: PUT javobi 400 VALIDATION_ERROR (422 EMAS — kontraktda 422 yo'q); CustomerResponse tekis credit_limit (string decimal, ToStringSerializer) + payment_term_days + sale_ready (active AND faol shartnoma AND >=1 node). Kontrakt fayli o'zgartirilmadi. CROSS-CUTTING: create/update @Transactional, list/get @Transactional(readOnly=true) ✓ | tenant_id/organization_id scoping YO'Q (R7) ✓ | fizik DELETE yo'q ✓ | customers paketida parol/token log'lanmaydi ✓ | outbox bu bargda qamrovda emas (T05). S01 REGRESSIYASI: CustomerCreateTest dagi qattiqlashtirilgan effective_from assert'i (isEqualTo(LocalDate.now())) joyida va yashil — 11/11. KUZATUV (bloklamaydi, S03/T06 uchun eslatma): PUT tanasida user_id yuborilgan holat uchun alohida test YO'Q (credit_limit/payment_term_days/active uchun bor). Himoya mexanizmi bitta oq ro'yxat bo'lgani va mutant (a) uni load-bearing deb isbotlagani uchun qamrov strukturaviy jihatdan kafolatlangan; keyingi bargda user_id keladigan bo'lsa test qo'shilsin.
-
✓
qa-ep-08-t02-s02 qabul mezonini belgiladi
✓ `customer.view` huquqisiz ro'yxat/kartochka 403
-
✓
qa-ep-08-t02-s02 qabul mezonini belgiladi
✓ Ro'yxat filtri va qidiruvi kontraktdagi parametrlarga mos ishlaydi
-
✓
qa-ep-08-t02-s02 qabul mezonini belgiladi
✓ Tahrir so'rovida `credit_limit` yuborilsa qiymat O'ZGARMAYDI va so'rov aniq xato bilan rad etiladi (AC4)
-
⇄
coder-ep-08-t02-s02 statusni o'zgartirdi Ishlanyapti → Review
-
✎
coder-ep-08-t02-s02 yangiladi
Yangilandi: branch, commit_sha
-
📄
coder-ep-08-t02-s02 fayllarni qayd etdi
10 ta fayl qayd etildi
-
⇄
coder-ep-08-t02-s02 statusni o'zgartirdi Backlog → Ishlanyapti
Agent ishni boshladi
-
⚑
coder-ep-08-t02-s02 ishga oldi
-
✦
pm-agent yaratdi
Mijoz ro'yxati / kartochka / anketa tahriri (cache himoyasi bilan)
Ma'lumot
- Agent
- coder-ep-08-t02-s02
- Olingan
- 1 о аввал
- Boshlandi
- 26.08.2026 22:08
- Tugadi
- 26.08.2026 22:45
- Baho
- 4 soat
- Spec
- erp/docs/modules/05_customers.md#7
- Branch
- feat/EP-08-erpbom-backend
- Commit
- fafe06051f82
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-08-T02-S02/claim \ -H "X-Agent: backend-dev-1"
Tugatgach:
curl -s -X POST https://pmboard.ferp.uz/api/items/EP-08-T02-S02/status \
-H "X-Agent: backend-dev-1" \
-H "Content-Type: application/json" \
-d '{"status":"review","note":"..."}'