GET /exchange-rates/{currencyCode}/{date} — kunlik kurs o'qish + noto'g'ri izohlarni tuzatish
Qabul mezonlari (DoD)
8 / 8 bajarildi
-
GET /api/v1/exchange-rates/{currencyCode}/{date} qo'shilgan; manba exchange_rates[currency_code, date] (UNIQUE)
qa-ep-04-t14-s02 · 1 о аввал
-
FAQAT O'QISH — kurs kiritish/tahrirlash qo'shilmaydi (u 08_finance ga tegishli)
qa-ep-04-t14-s02 · 1 о аввал
-
Asosiy valyuta (is_base = true) so'ralsa rate = 1.000000 qaytadi
qa-ep-04-t14-s02 · 1 о аввал
-
Kurs topilmasa 404 EXCHANGE_RATE_NOT_FOUND — bu ogohlantirish semantikasi, blokirovka emas (qoida 25)
qa-ep-04-t14-s02 · 1 о аввал
-
Auth talab qilinadi, alohida rule YO'Q (kontrakt: 'auth talab qilinadi, rule yo'q')
qa-ep-04-t14-s02 · 1 о аввал
-
Integratsiya testlari: mavjud kurs 200, yo'q kurs 404 EXCHANGE_RATE_NOT_FOUND, asosiy valyuta 1.000000
qa-ep-04-t14-s02 · 1 о аввал
-
PurchaseReceiptService.java:642 va PurchaseReceiptLineRepository.java:26 izohlari tuzatilgan — endpoint kontraktda BOR (2346-qator), 'kontraktda emas' degan matn olib tashlangan
qa-ep-04-t14-s02 · 1 о аввал
-
openapi/ FAYLLARI o'zgarmaydi
qa-ep-04-t14-s02 · 1 о аввал
O'zgargan fayllar
10 ta
-
modified
src/test/java/uz/erpbom/warehouse/controller/ExchangeRateControllerIntegrationTest.java -
modified
src/main/java/uz/erpbom/warehouse/repository/PurchaseReceiptLineRepository.java -
modified
src/main/java/uz/erpbom/warehouse/service/PurchaseReceiptService.java -
modified
src/main/java/uz/erpbom/common/exception/GlobalExceptionHandler.java -
modified
src/main/java/uz/erpbom/common/exception/ExchangeRateNotFoundException.java -
modified
src/main/java/uz/erpbom/warehouse/controller/ExchangeRateController.java -
modified
src/main/java/uz/erpbom/warehouse/service/ExchangeRateService.java -
modified
src/main/java/uz/erpbom/warehouse/dto/ExchangeRateResponse.java -
modified
src/main/java/uz/erpbom/warehouse/repository/ExchangeRateRepository.java -
modified
src/main/java/uz/erpbom/warehouse/entity/ExchangeRate.java
Izoh qoldirish
Tarix
25 yozuv
-
✎
finalize-ep-04 yangiladi
Yangilandi: commit_sha, pr_url
-
💬
qa-ep-04-t14-s02 izoh qoldirdi
QA (ee5f312) — DONE. 8/8 mezon mustaqil tekshirildi, 4/4 test yashil. Shubhalar yopildi: (a) exchange_rates jadvali V15__warehouses_and_exchange_rates.sql:114 da BOR; ustunlar entity bilan mos (currency_code varchar(3), rate numeric(18,6), date, created_by_user_id, created_at) + uq_exchange_rates_currency_code_date UNIQUE(currency_code,date). Dublikat entity/repository YO'Q (PurchaseReceiptLineRepository dagi native so'rov — entity emas). (b) currencies.is_base V4__users_and_currencies.sql:64 da BOR; R__permissions_and_currencies_seed.sql da UZS is_base=true. rate JSON da STRING (JacksonConfig BigDecimal -> ToStringSerializer); javob "1.000000" — kontrakt ExchangeRateResponse.rate (type: string) bilan mos. (c) ExchangeRateController da FAQAT @GetMapping; butun src/main da boshqa exchange-rates mapping yo'q (POST/PUT/PATCH/DELETE yo'q). (d) @RequirePermission annotatsiyasi YO'Q — grep hit faqat javadoc matni (ExchangeRateController.java:21). SecurityConfig PUBLIC_PATHS ga tushmagan -> anyRequest().authenticated(); anonim so'rov 401 (test bilan tasdiqlandi). (e) 404 javobi kontrakt bilan mos: ErrorResponse{code,message,request_id} + X-Request-Id (RequestIdFilter), message ham kontrakt example bilan aynan bir xil. Yangi handler yangi leaf exception uchun — ErpException handleri yo'q, ambiguity yo'q (kontekst yuklandi). Regressiya: UnitControllerIntegrationTest 8/8 yashil, generic NOT_FOUND/FORBIDDEN kodlari o'zgarmagan. (f) "kontraktda emas" matni ikkala faylda ham olib tashlangan/tuzatilgan (PurchaseReceiptService.java:642, PurchaseReceiptLineRepository.java:26). (g) openapi hash = 08622b212bae00c82746f6cca4fdd59b0903ac63ef4145c35211b731ca0d640a — SHART bajarildi; git diff ee5f312^..ee5f312 -- openapi/ bo'sh. Mutatsiya tekshiruvi (javap bilan bytecode'da tasdiqlangan holda): 1) ExchangeRateService BASE_RATE setScale(6) -> setScale(2); javap: bipush 6 -> iconst_2 => baseCurrencyAlwaysReturnsRateOneRegardlessOfExchangeRatesTable YIQILDI (expected "1.000000") — KILLED. 2) ExchangeRateNotFoundException kodi EXCHANGE_RATE_NOT_FOUND -> EXCHANGE_RATE_MISSING; javap const pool tasdiqladi => missingRateReturnsExchangeRateNotFound YIQILDI — KILLED. Eslatma: birinchi urinishda `touch` + `mvn test-compile` mutatsiyani class faylga YETKAZMADI (javap hali bipush 6 ko'rsatdi) — target class fayli o'chirilib qayta kompilyatsiya qilingach tasdiqlandi. Ikkala mutatsiya `git checkout` bilan tiklandi; src/ toza, tiklashdan keyingi run 4/4 yashil. Kichik eslatma (defekt emas, tuzatish talab qilinmaydi): ExchangeRateRepository javadoc "yozuv metodi ATAYLAB YO'Q" deydi, lekin JpaRepository save()/delete() ni meros qilib oladi — bu repo bo'ylab umumiy konvensiya, REST yozuv yo'li mavjud emas.
-
⇄
qa-ep-04-t14-s02 statusni o'zgartirdi Review → Bajarildi
-
✓
qa-ep-04-t14-s02 qabul mezonini belgiladi
✓ openapi/ FAYLLARI o'zgarmaydi
-
✓
qa-ep-04-t14-s02 qabul mezonini belgiladi
✓ PurchaseReceiptService.java:642 va PurchaseReceiptLineRepository.java:26 izohlari tuzatilgan — endpoint kontraktda BOR (2346-qator), 'kontraktda emas' degan matn olib tashlangan
-
✓
qa-ep-04-t14-s02 qabul mezonini belgiladi
✓ Integratsiya testlari: mavjud kurs 200, yo'q kurs 404 EXCHANGE_RATE_NOT_FOUND, asosiy valyuta 1.000000
-
✓
qa-ep-04-t14-s02 qabul mezonini belgiladi
✓ Auth talab qilinadi, alohida rule YO'Q (kontrakt: 'auth talab qilinadi, rule yo'q')
-
✓
qa-ep-04-t14-s02 qabul mezonini belgiladi
✓ Kurs topilmasa 404 EXCHANGE_RATE_NOT_FOUND — bu ogohlantirish semantikasi, blokirovka emas (qoida 25)
-
✓
qa-ep-04-t14-s02 qabul mezonini belgiladi
✓ Asosiy valyuta (is_base = true) so'ralsa rate = 1.000000 qaytadi
-
✓
qa-ep-04-t14-s02 qabul mezonini belgiladi
✓ FAQAT O'QISH — kurs kiritish/tahrirlash qo'shilmaydi (u 08_finance ga tegishli)
-
✓
qa-ep-04-t14-s02 qabul mezonini belgiladi
✓ GET /api/v1/exchange-rates/{currencyCode}/{date} qo'shilgan; manba exchange_rates[currency_code, date] (UNIQUE)
-
⇄
coder-ep-04-t14-s02 statusni o'zgartirdi Ishlanyapti → Review
-
✎
coder-ep-04-t14-s02 yangiladi
Yangilandi: branch, commit_sha
-
✓
coder-ep-04-t14-s02 qabul mezonini belgiladi
✓ openapi/ FAYLLARI o'zgarmaydi
-
✓
coder-ep-04-t14-s02 qabul mezonini belgiladi
✓ PurchaseReceiptService.java:642 va PurchaseReceiptLineRepository.java:26 izohlari tuzatilgan — endpoint kontraktda BOR (2346-qator), 'kontraktda emas' degan matn olib tashlangan
-
✓
coder-ep-04-t14-s02 qabul mezonini belgiladi
✓ Integratsiya testlari: mavjud kurs 200, yo'q kurs 404 EXCHANGE_RATE_NOT_FOUND, asosiy valyuta 1.000000
-
✓
coder-ep-04-t14-s02 qabul mezonini belgiladi
✓ Auth talab qilinadi, alohida rule YO'Q (kontrakt: 'auth talab qilinadi, rule yo'q')
-
✓
coder-ep-04-t14-s02 qabul mezonini belgiladi
✓ Kurs topilmasa 404 EXCHANGE_RATE_NOT_FOUND — bu ogohlantirish semantikasi, blokirovka emas (qoida 25)
-
✓
coder-ep-04-t14-s02 qabul mezonini belgiladi
✓ Asosiy valyuta (is_base = true) so'ralsa rate = 1.000000 qaytadi
-
✓
coder-ep-04-t14-s02 qabul mezonini belgiladi
✓ FAQAT O'QISH — kurs kiritish/tahrirlash qo'shilmaydi (u 08_finance ga tegishli)
-
✓
coder-ep-04-t14-s02 qabul mezonini belgiladi
✓ GET /api/v1/exchange-rates/{currencyCode}/{date} qo'shilgan; manba exchange_rates[currency_code, date] (UNIQUE)
-
📄
coder-ep-04-t14-s02 fayllarni qayd etdi
10 ta fayl qayd etildi
-
⇄
coder-ep-04-t14-s02 statusni o'zgartirdi Backlog → Ishlanyapti
Agent ishni boshladi
-
⚑
coder-ep-04-t14-s02 ishga oldi
-
✦
unknown-agent yaratdi
GET /exchange-rates/{currencyCode}/{date} — kunlik kurs o'qish + noto'g'ri izohlarni tuzatish
Ma'lumot
- Agent
- coder-ep-04-t14-s02
- Olingan
- 1 о аввал
- Boshlandi
- 21.08.2026 11:34
- Tugadi
- 21.08.2026 12:06
- Baho
- 2 soat
- Spec
- openapi/v1/warehouse.yaml:2346 (va :825); PurchaseReceiptService.java:642
- Branch
- feat/EP-04-erpbom-backend
- Commit
- b6685d9b9b72
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-04-T14-S02/claim \ -H "X-Agent: backend-dev-1"
Tugatgach:
curl -s -X POST https://pmboard.ferp.uz/api/items/EP-04-T14-S02/status \
-H "X-Agent: backend-dev-1" \
-H "Content-Type: application/json" \
-d '{"status":"review","note":"..."}'