F2 aylanma va F8 to'lov grafigi / aging so'rovlari
Tavsif
Texnik ko'rsatma
Agent uchun
Qabul mezonlari (DoD)
3 / 3 bajarildi
-
F2 ishlangan misoli (Metall Servis, iyul: −5 000 000 → −8 000 000) test fixture'ida aynan chiqadi
qa-ep-11-t07-s02 · 1 о аввал
-
To'lov grafigi va aging BITTA so'rovdan chiqadi va manba hujjat jadvallariga JOIN qilmaydi (08 AC21)
qa-ep-11-t07-s02 · 1 о аввал
-
Qisman to'langan majburiyat qoldig'i to'g'ri hisoblanadi
qa-ep-11-t07-s02 · 1 о аввал
O'zgargan fayllar
17 ta
-
modified
src/test/java/uz/erpbom/finance/controller/PaymentScheduleControllerIntegrationTest.java -
modified
src/test/java/uz/erpbom/finance/controller/CounterpartyAccountTurnoverControllerIntegrationTest.java -
modified
src/main/java/uz/erpbom/finance/service/PaymentScheduleService.java -
modified
src/main/java/uz/erpbom/finance/service/CounterpartyTurnoverService.java -
modified
src/main/java/uz/erpbom/finance/repository/PaymentScheduleRow.java -
modified
src/main/java/uz/erpbom/finance/repository/PaymentScheduleRepository.java -
modified
src/main/java/uz/erpbom/finance/repository/PaymentAgingBucketRow.java -
modified
src/main/java/uz/erpbom/finance/repository/CounterpartyTurnoverGroupRow.java -
modified
src/main/java/uz/erpbom/finance/repository/CounterpartyLedgerReportRepository.java -
modified
src/main/java/uz/erpbom/finance/dto/PaymentScheduleResponse.java -
modified
src/main/java/uz/erpbom/finance/dto/PaymentAgingResponse.java -
modified
src/main/java/uz/erpbom/finance/dto/PaymentAgingCurrencyLine.java -
modified
src/main/java/uz/erpbom/finance/dto/PaymentAgingBucketLine.java -
modified
src/main/java/uz/erpbom/finance/dto/CounterpartyTurnoverResponse.java -
modified
src/main/java/uz/erpbom/finance/dto/CounterpartyTurnoverLine.java -
modified
src/main/java/uz/erpbom/finance/controller/PaymentScheduleController.java -
modified
src/main/java/uz/erpbom/finance/controller/CounterpartyAccountController.java
Izoh qoldirish
Tarix
28 yozuv
-
✎
pm-agent yangiladi
Yangilandi: estimate_hours
-
✎
pm-agent yangiladi
Yangilandi: estimate_hours
-
✎
team-lead-pm yangiladi
Yangilandi: estimate_hours
-
✎
finalize-ep-11 yangiladi
Yangilandi: pr_url
-
✎
worker-ep-11-t07 yangiladi
Yangilandi: commit_sha
-
⇄
qa-ep-11-t07-s02 statusni o'zgartirdi Review → Bajarildi
-
💬
qa-ep-11-t07-s02 izoh qoldirdi
QA 2-tekshiruv (commit b197e75, izolyatsiyalangan worktree /tmp/qa2-EP-11-T07-S02) — O'TDI. MUTATSIYA (8/8 o'ldirildi, har biri javap bilan bytecode'da tasdiqlangan — ldc konstantasi metod ichida): 1. due_from `OR TRUE` (PaymentScheduleRepository:126) -> filtersByDueFromAndDueToInclusiveOfBothBoundaries QIZIL (size 3 -> 4). 2. due_to `OR TRUE` (:130) -> o'sha test QIZIL (size 3 -> 4). 3. overdue_only `OR TRUE` (:134) -> overdueOnlyReturnsOnlyPastDueObligationsAndExcludesTodayAndFuture QIZIL (size 1 -> 3). 4. aging counterparty_type `OR TRUE` (:182) -> agingFiltersByCounterpartyTypeAndExcludesOtherType QIZIL (500000.00 -> 1300000.00). 5. aging account_id `OR TRUE` (:186) -> agingFiltersByAccountIdAndExcludesOtherAccount QIZIL (600000.00 -> 1500000.00). 6. CHEGARA `due_date >= ?` -> `> ?` -> QIZIL (size 3 -> 2, due_from kuni tushib qoldi) — inclusive da'vosi qotirilgan. 7. CHEGARA `due_date <= ?` -> `< ?` -> QIZIL (size 3 -> 2, due_to kuni tushib qoldi). 8. Turnover CASE `WHEN amount < 0 THEN 'credit'` -> `'debit'` -> computesMetallServisWorkedExampleFromSpec (9000000.00 -> -3000000.00) va splitsDebitAndCreditCorrectly... QIZIL — debit/credit ajratishi haqiqatan qoplangan. `>=0` -> `>0` (CounterpartyLedgerReportRepository:75/81): kontrakt matniga mos (openapi/v1/finance.yaml:3284 `amount > 0`, :3291 `amount < 0`). AC4114 BUZILMAGAN: amount=0 qatori na debit, na credit'ga tushadi, lekin 0 qo'shilishi hech qanday summani o'zgartirmaydi; lines[] source_type bo'yicha merge qilinadi (direction'siz), shuning uchun entry_count va amount ham o'zgarmaydi; closing = opening + debit - credit = opening + Sigma(amount) baribir. Xizmatda `DIRECTION_DEBIT.equals(row.direction())` — konstanta oldinda, direction=NULL da NPE yo'q. F2 misoli aynan chiqmoqda: -5000000.00 / 9000000.00 / 12000000.00 / -8000000.00. FIXTURE sifati: due_from/due_to testida 5 xil summa (111111...555555) va 5 xil sana (oldin / due_from chegarasi / ichkarida / due_to chegarasi / keyin); overdue testida 3 xil sana (bugun-5 / bugun / bugun+5) va 3 xil summa; aging testlarida ikki tur (supplier -500000 / customer +800000, qarama-qarshi ishora) va ikki varaqa (600000 / 900000, ikkalasi UZS — shuning uchun hasSize(1) yetmaydi, ammo total_remaining QAT'IY raqami ushlaydi). Barcha assert'lar aniq raqamli (nolga teng emas emas). @BeforeEach TRUNCATE — testlar orasida sizib o'tish yo'q. TESTLAR (flock ostida, bloklovchi, surefire XML ElementTree bilan): PaymentScheduleControllerIntegrationTest 10/10, CounterpartyAccountTurnoverControllerIntegrationTest 5/5 — JAMI 15/15 yashil, 0 failure/error/skipped. GIGIYENA: `git grep MUTANT b197e75` bo'sh, `if (true)` bo'sh, @Disabled/assumeTrue/o'chirilgan assert yo'q (diff'dagi 4 o'chirilgan qator — faqat javadoc + eski CASE), openapi/ commit'ga tushmagan, `git grep MUTANT HEAD` bo'sh, worktree o'chirildi, asosiy daraxt toza. ESLATMA (bloklamaydi): board'dagi commit_sha hali d4256d3 — b197e75 ga yangilanishi kerak.
-
⇄
coder-ep-11-t07-s02 statusni o'zgartirdi Ishlanyapti → Review
-
📄
coder-ep-11-t07-s02 fayllarni qayd etdi
2 ta fayl qayd etildi
-
⇄
coder-ep-11-t07-s02 statusni o'zgartirdi Tayyor → Ishlanyapti
-
📄
coder-ep-11-t07-s02 fayllarni qayd etdi
2 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
-
⇄
qa-ep-11-t07-s02 statusni o'zgartirdi Review → Ishlanyapti
-
💬
qa-ep-11-t07-s02 izoh qoldirdi
QA (qa-EP-11-T07-S02) natijasi — testlar 11/11 YASHIL (5 turnover + 6 schedule, surefire XML ElementTree bilan o'qildi). Uchala mezon ham MUTATSIYA bilan tasdiqlandi (izolyatsiyalangan worktree /tmp/qa-EP-11-T07-S02, har mutant javap bilan bytecode'da tasdiqlandi, mutantlar cp bilan tiklandi, asosiy daraxt toza): - AC4114 ✓ computesMetallServisWorkedExampleFromSpec spec jadvalini AYNAN solishtiradi (opening -5000000.00, debit 9000000.00, credit 12000000.00, closing -8000000.00, lines: purchase_receipt -12mln / payment +8mln / supplier_return_credit +1mln). Mutant (d) opening `entry_date <` -> `<=` (CounterpartyLedgerReportRepository.java:40) -> includesBoundaryDatesAndExcludesEntriesOutsideRange QIZIL (kutilgan -1000000.00, olingan -500000.00). Mutant (e) debit/credit SWAP (CounterpartyTurnoverService.java:62-63) -> 4 test QIZIL. - AC4115 ✓ SQL MATNI bo'yicha tasdiqlandi (coder'ning "jadval bo'sh" argumenti bilan emas): PaymentScheduleRepository.java:56-83 OBLIGATIONS_CTE FAQAT ledger_entries + payment_allocations + payments + counterparty_accounts ga tegadi; purchase_receipts / orders / payroll_run_lines ga JOIN YO'Q; due_date va amount bevosita ledger_entries'dan. Mutant (a) aging chegarasi `<=` -> `<` (:200-202) -> groupsByCurrencyAndBucketWithExactDayBoundaries QIZIL (days_0_30 count 1 -> 0). - AC4116 ✓ Mutant (b) `ABS(le.amount) - COALESCE(alloc.amount_sum,0.00)` -> `ABS(le.amount)` (:61) -> 2 test QIZIL (2100000.00 -> 3100000.00; guruhlar 2 -> 3, ya'ni to'liq to'langan qator qaytadan chiqib ketdi). Mutant (c) `p.status='confirmed'` -> `IS NOT NULL` (:67) -> QIZIL (draft allocation qoldiqni kamaytirib qo'ydi). Qisman/to'liq/to'lanmagan uchala holat ham fixture'da bor. - Fixture xilma-xilligi: aging'da 30/31/60/61/90/91 chegara kunlari + 2 valyuta (UZS/USD) + bo'sh guruh + muddati kelmagan + to'liq to'langan; turnover'da davrdan oldin/chegara/ichida/keyin + 2 valyuta + bitta source_type ichida aralash ishora. Bu tomonda qotib qolgan qiymat YO'Q. ❌ QAYTARILDI — QAMROVSIZ SHOXOBCHA (mutatsiya TIRIK qoldi; javap bytecode'da tasdiqladi, PaymentScheduleControllerIntegrationTest 6/6 YASHIL qolaverdi): src/main/java/uz/erpbom/finance/repository/PaymentScheduleRepository.java:126 (due_from), :130 (due_to), :134 (overdue_only), :182 (aging counterparty_type), :186 (aging account_id) — beshala filtrni `OR TRUE` bilan neytrallaganda BIRORTA test yiqilmadi. Ya'ni /payment-schedule ning ASOSIY use-case'i — F8 formulasining o'z WHERE bandi (`due_date BETWEEN hafta_boshi AND hafta_oxiri`, manba 23 "shu haftaga qancha to'lov bor", kontrakt finance.yaml due_from/due_to) — umuman tekshirilmagan. 🔧 Kod DEFEKTI EMAS (SQL to'g'ri yozilgan) — yetishmayotgani TEST. Kerak: 1) PaymentScheduleControllerIntegrationTest ga `?due_from=&due_to=` testi: oyna ichidagi qator KIRSIN, tashqarisidagisi CHIQIB KETSIN va CHEGARA sanalari (due_from va due_to AYNAN) KIRSIN (kontrakt: `due_date >= due_from`, `due_date <= due_to`); 2) `overdue_only=true` testi (faqat `due_date < bugun`); 3) aging uchun `counterparty_type` va `account_id` filtri testi — hozir aging fixture'ida FAQAT supplier varaqasi bor, ikkinchi kontragent turi (customer) qo'shilsin. ℹ️ Kichik eslatma (bloklamaydi, tuzatish shart emas): kontrakt turnover_debit ni "`amount > 0` qatorlar" deb ta'riflaydi, SQL'da esa `amount >= 0` (CounterpartyLedgerReportRepository.java:68/73) — nol summali qator debit'ga tushadi; raqamli natijaga ta'siri yo'q. Gigiyena: `git grep MUTANT HEAD` bo'sh, `if (true)` yo'q, @Disabled/assumeTrue yo'q, openapi/ commit'ga tushmagan (git show --stat d4256d3), worktree o'chirildi, `git status --porcelain` bo'sh.
-
✓
qa-ep-11-t07-s02 qabul mezonini belgiladi
✓ Qisman to'langan majburiyat qoldig'i to'g'ri hisoblanadi
-
✓
qa-ep-11-t07-s02 qabul mezonini belgiladi
✓ To'lov grafigi va aging BITTA so'rovdan chiqadi va manba hujjat jadvallariga JOIN qilmaydi (08 AC21)
-
✓
qa-ep-11-t07-s02 qabul mezonini belgiladi
✓ F2 ishlangan misoli (Metall Servis, iyul: −5 000 000 → −8 000 000) test fixture'ida aynan chiqadi
-
💬
coder-ep-11-t07-s02 izoh qoldirdi
F2 turnover (GET /counterparty-accounts/{id}/turnover) + F8 grafik/aging (GET /payment-schedule, GET /payment-schedule/aging) qo'shildi. 11/11 test yashil (flock ostida, Testcontainers). AC4114/4115/4116 fixture bilan tekshirilgan; AC4115 uchun repo javodocida aniq yozilgan: SQL faqat ledger_entries+payment_allocations+payments+counterparty_accounts ga tegadi, purchase_receipts/orders/payroll_run_lines ga JOIN yo'q va test fixture bu jadvallarga umuman qator yozmaydi (shunga qaramay to'g'ri natija) - shu bilan AC21 mustaqil isbotlangan. Mijoz kanali (aud=customer) uchun rule talab qilinmasdan o'z varaqasiga majburan cheklash qo'shildi (kontrakt tavsifi, CustomerService.findIdByUserId orqali - modul chegarasi buzilmagan).
-
⇄
coder-ep-11-t07-s02 statusni o'zgartirdi Ishlanyapti → Review
-
✎
coder-ep-11-t07-s02 yangiladi
Yangilandi: branch, commit_sha
-
✓
coder-ep-11-t07-s02 qabul mezonini belgiladi
✓ Qisman to'langan majburiyat qoldig'i to'g'ri hisoblanadi
-
✓
coder-ep-11-t07-s02 qabul mezonini belgiladi
✓ To'lov grafigi va aging BITTA so'rovdan chiqadi va manba hujjat jadvallariga JOIN qilmaydi (08 AC21)
-
✓
coder-ep-11-t07-s02 qabul mezonini belgiladi
✓ F2 ishlangan misoli (Metall Servis, iyul: −5 000 000 → −8 000 000) test fixture'ida aynan chiqadi
-
📄
coder-ep-11-t07-s02 fayllarni qayd etdi
17 ta fayl qayd etildi
-
⇄
coder-ep-11-t07-s02 statusni o'zgartirdi Backlog → Ishlanyapti
Agent ishni boshladi
-
⚑
coder-ep-11-t07-s02 ishga oldi
-
✦
pm-agent yaratdi
F2 aylanma va F8 to'lov grafigi / aging so'rovlari
Ma'lumot
- Agent
- —
- Olingan
- —
- Boshlandi
- 06.09.2026 04:14
- Tugadi
- 06.09.2026 05:51
- Baho
- 6 soat
- Spec
- erp/docs/modules/08_finance.md#6
- Branch
- feat/EP-11-erpbom-backend
- Commit
- b197e751bf2e
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-11-T07-S02/claim \ -H "X-Agent: backend-dev-1"
Tugatgach:
curl -s -X POST https://pmboard.ferp.uz/api/items/EP-11-T07-S02/status \
-H "X-Agent: backend-dev-1" \
-H "Content-Type: application/json" \
-d '{"status":"review","note":"..."}'