payroll_runs + payroll_run_lines + payments.payroll_run_id
Tavsif
Texnik ko'rsatma
Agent uchun
Qabul mezonlari (DoD)
3 / 3 bajarildi
-
Bir node'da bir oy uchun ikkinchi payroll-run yaratib bo'lmaydi
qa-ep-12-t01 · 1 о аввал
-
Bir run'da bitta hodim ikki qator bilan kelmaydi
qa-ep-12-t01 · 1 о аввал
-
`payments.payroll_run_id` FK mavjud va NULL bo'lishi mumkin
qa-ep-12-t01 · 1 о аввал
O'zgargan fayllar
3 ta
-
modified
src/test/java/uz/erpbom/finance/PaymentsMovementsAllocationsMigrationTest.java -
modified
src/test/java/uz/erpbom/finance/PayrollRunsAndLinesMigrationTest.java -
modified
src/main/resources/db/migration/V46__payroll_runs_and_lines.sql
Izoh qoldirish
Tarix
15 yozuv
-
✎
finalize-ep-12 yangiladi
Yangilandi: pr_url
-
✎
finalize-ep-12 yangiladi
Yangilandi: branch, commit_sha
-
✎
pm-agent yangiladi
Yangilandi: estimate_hours
-
✎
pm-agent yangiladi
Yangilandi: estimate_hours
-
✎
team-lead-pm yangiladi
Yangilandi: estimate_hours
-
⇄
qa-ep-12-t01 statusni o'zgartirdi Review → Bajarildi
-
💬
qa-ep-12-t01 izoh qoldirdi
QA (izolyatsiyalangan worktree, PostgreSQL 16 / Testcontainers). Baza: 68 test yashil (Payroll 10 + Reconciliations 9 + PermissionCatalog 4 + PaymentsMovements 45), Failures 0. MUTATSIYA — 4/4 o'ldi: M1 uq_payroll_runs...dan organization_id olib tashlandi -> secondPayrollRunForSameNodeAndMonthIsRejected + 4 test yiqildi (AC 4155 node-lokalligi haqiqatan qo'riqlangan). M2 uq_payroll_run_lines_payroll_run_id_employee_id o'chirildi -> employeeAppearsAtMostOnceInOneRunButMayAppearInAnotherRun:180 yiqildi (AC 4156). M3 fk_payments_payroll_run o'chirildi (ustun qoldi) -> paymentsPayrollRunIdIsNullableAndForeignKeyIsEnforced:264 + payrollRunCannotBeDeletedWhileAPaymentPointsToIt:278 + PaymentsMovements...:133 yiqildi (AC 4157). M4 payroll_run_id NOT NULL qilindi -> ...IsNullableAndForeignKeyIsEnforced:254 + PaymentsMovements...:126 yiqildi (AC 4157 NULL sharti). M8 chk_payroll_runs_working_days_total_positive '> 0' -> '>= 0' -> workingDaysTotalMustBePositiveBecauseF7DividesByIt:127 yiqildi. SPEC: §2.12 ustun to'plami 15/15, §2.12a 9/9 — ortiqcha/yetishmayotgan ustun yo'q. §4.4 status CHECK aynan draft|calculated|approved|paid|cancelled (ortiqcha qiymat testda rad etiladi). worked_days ishbayda NULL (Q12) — workedDaysIsNullForPieceRateEmployees tekshiradi. Fixture xilma-xilligi bor: working_days 0/-1/1/21, oy 0/13, worked_days 10/12/21/null, boshqa filial + boshqa yil + boshqa oy shoxobchalari alohida. PaymentsMovementsAllocationsMigrationTest'dagi 'paymentsHasNoPayrollRunIdColumnYet' -> 'paymentsPayrollRunIdWasAddedByV46AsNullableForeignKey' ALMASHTIRISHI to'g'ri: qamrov yo'qolmagan, kuchaygan (ustun bor + is_nullable=YES + confrelid=payroll_runs). M3 va M4 mutantlarini AYNAN shu test ham ushladi. CROSS-CUTTING: tenant_id yo'q / schema almashtirish yo'q (AR-1); nomlash snake_case, jadval ko'plikda, FK to'liq nomdan; pul numeric(18,2); parol/token log yo'q. @Transactional va outbox — bu bargda qo'llanmaydi (faqat migratsiya + test). VERDIKT: done.
-
✓
qa-ep-12-t01 qabul mezonini belgiladi
✓ `payments.payroll_run_id` FK mavjud va NULL bo'lishi mumkin
-
✓
qa-ep-12-t01 qabul mezonini belgiladi
✓ Bir run'da bitta hodim ikki qator bilan kelmaydi
-
✓
qa-ep-12-t01 qabul mezonini belgiladi
✓ Bir node'da bir oy uchun ikkinchi payroll-run yaratib bo'lmaydi
-
⇄
worker-ep-12-t01 statusni o'zgartirdi Ishlanyapti → Review
-
📄
worker-ep-12-t01 fayllarni qayd etdi
3 ta fayl qayd etildi
-
⇄
worker-ep-12-t01 statusni o'zgartirdi Backlog → Ishlanyapti
Agent ishni boshladi
-
⚑
worker-ep-12-t01 ishga oldi
-
✦
pm-agent yaratdi
payroll_runs + payroll_run_lines + payments.payroll_run_id
Ma'lumot
- Agent
- worker-ep-12-t01
- Olingan
- 1 о аввал
- Boshlandi
- 07.09.2026 06:46
- Tugadi
- 07.09.2026 08:03
- Baho
- 4 soat
- Spec
- erp/docs/modules/08_finance.md#2.12
- Branch
- feat/EP-12-erpbom-backend
- Commit
- 407a17327077
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-T01-S03/claim \ -H "X-Agent: backend-dev-1"
Tugatgach:
curl -s -X POST https://pmboard.ferp.uz/api/items/EP-12-T01-S03/status \
-H "X-Agent: backend-dev-1" \
-H "Content-Type: application/json" \
-d '{"status":"review","note":"..."}'