Hodisa katalogi va shablonlar — kod artefakti (47 hodisa)
Tavsif
Texnik ko'rsatma
Agent uchun
Qabul mezonlari (DoD)
5 / 5 bajarildi
-
Katalogda 47 hodisa bor va har birining push + in-app shabloni to'liq (bo'sh matn yo'q)
team-lead-pm · 1 о аввал
-
Test push shablonlarida taqiqlangan joy egallovchi (summa/ism/hujjat raqami) yo'qligini tasdiqlaydi
qa-ep-13-t02-s01 · 1 о аввал
-
`security` kodlar ro'yxati aynan 7 ta va ular sozlama bilan o'chirilmaydi deb belgilangan
qa-ep-13-t02-s01 · 1 о аввал
-
Katalogda yo'q `event_code` bilan chaqiruv xato beradi (jimgina o'tib ketmaydi)
qa-ep-13-t02-s01 · 1 о аввал
-
Har `event_code` boshqa modullardagi (06/07/08/09/01/03/04) matn bilan aynan bir xil yozilgan — imlo farqi yo'q
qa-ep-13-t02-s01 · 1 о аввал
O'zgargan fayllar
5 ta
-
modified
src/test/java/uz/erpbom/notifications/catalog/NotificationEventCatalogTest.java -
modified
src/main/java/uz/erpbom/notifications/catalog/NotificationEventCatalog.java -
modified
src/main/java/uz/erpbom/notifications/catalog/NotificationEventDefinition.java -
modified
src/main/java/uz/erpbom/notifications/catalog/NotificationSeverity.java -
modified
src/main/java/uz/erpbom/notifications/catalog/package-info.java
Izoh qoldirish
Tarix
23 yozuv
-
💬
team-lead-pm izoh qoldirdi
KATALOG 47 -> 51 (foydalanuvchi qarori 2026-09-10). Bu bargda yozilgan NotificationEventCatalog 4 ta hodisa bilan kengaytiriladi — LEKIN bu barg qayta ochilmaydi: kengaytirish T05 ning tegishli barglarida (S02: task.norm_or_rate_missing + chain.reopened; S03: finance.balance_mismatch + finance.orphan_account) producer ulanishi bilan BIRGA qilinadi, chunki katalog yozuvi va produseri bir joyda turishi kerak. Mezonlari yangilandi. Spec yozildi: 10_notifications §10(v) + changelog, 08_finance §10 + changelog, 07_tasks §10 + changelog. Qabul qiluvchilar MAVJUD huquq kodlariga bog'landi — 09_auth katalogi tegilmadi (138 rule o'zgarmadi).
-
✓
team-lead-pm qabul mezonini belgiladi
✓ Katalogda 47 hodisa bor va har birining push + in-app shabloni to'liq (bo'sh matn yo'q)
-
💬
team-lead-pm izoh qoldirdi
LEAD TASDIQLADI (o'zim o'lchadim): notification test klasslari birga — 77 test / err=0 fail=0 skip=0 (T01 ning 45 tasi ichida, sinmagan). Katalog hodisalarini o'zim sanadim: 47 unikal event_code (grep bilan mustaqil) — worker hisoboti to'g'ri, board metadata'si (sarlavha + mezon 5543 '44 hodisa') ESKIRGAN edi, 47 ga tuzatildi. Arifmetika: spec §10(v) '≈43' + 5 (01_suppliers Q31=A supplier_proposal.*) − 1 (06_orders Q14=C order.delivery_failed) = 47.
-
✎
team-lead-pm yangiladi
Yangilandi: title
-
⇄
qa-ep-13-t02-s01 statusni o'zgartirdi Review → Bajarildi
-
💬
qa-ep-13-t02-s01 izoh qoldirdi
QA (qa-EP-13-T02-S01) — 6f08eee mustaqil tekshirildi. VERDIKT: done. SANOQ MASALASI — 47 TO'G'RI, defekt EMAS (mezon 5543 matni eskirgan). Skript bilan §10 (v) jadvali + §1 ikki auth jadvali o'zim sanaldi: §10 (v) amaldagi hodisa qatorlari = 38 (⛔ order.delivery_failed hisobga olinmadi; regex ushlagan supplier_contract.review_proposal va user_session.revoke — HUQUQ kodlari, hodisa emas) + §1 auth 9 = 47. Katalog = 47 − app.update_available + auth.ip_locked_admin = 47. ✔ Katalogda ORTIQCHA (o'ylab topilgan) hodisa YO'Q; jadvaldan TUSHIB QOLGANI ham YO'Q. Arifmetika: spec'dagi "≈43" (2026-08-09) + 5 (01_suppliers Q31=A, 2026-08-19) − 1 (06_orders Q14=C, 2026-09-02) = 47. Ya'ni "44" — board/technical_notes metadatasi eskirgan. 🔵 PM ga: mezon 5543 va barg sarlavhasidagi "44" → "47" ga yangilansin. (b) app.update_available chiqarilgani — technical_notes ning O'Z buyrug'i ("🔴 KIRITILMAYDI (produseri yo'q)"), coder o'zboshimchaligi emas. Tasdiqlandi. MEZONLAR (har biri alohida, kod darajasida): 5543 ✓ 47 hodisa; 47×5 matn maydoni (settings/push×2/in-app×2) bo'sh emas — o'z parserim bilan tekshirildi; NotificationEventDefinition.java:78-90 compact konstruktori ham majburlaydi. 5544 ✓ HAR 47 push shabloni o'z skriptim bilan skanerlandi: joy egallovchi ({...}) 0 ta, taqiqlangan toifa (so'm/summa/miqdor/raqami/FIO/ism/familiya/3+ raqamli son) 0 ta. Konstruktor darajasida ham bloklangan (NotificationEventDefinition.java:91-95). auth.ip_locked_admin push = "Xavfsizlik hodisasi qayd etildi | Bir IP manzildan ko'p noto'g'ri urinish aniqlandi va qulflandi" — IP qiymati ham, {ip_manzil} ham YO'Q ✔ (in-app'da {ip_manzil} bor — bu RUXSAT, defekt emas). 5545 ✓ securityEventCodes() = aynan 7: account_blocked, password_changed, token_reuse_detected, sessions_revoked, account_locked, token_reuse_detected_admin, ip_locked_admin. canDisable() = severity != SECURITY (NotificationEventDefinition.java:110) → qoida 12. ⚠️ auth.account_locked_admin = WARNING + canDisable=true — TO'G'RI (Catalog.java:208). 5546 ✓ NotificationEventCatalog.java:72-78 — get() noma'lum kodda NotFoundException tashlaydi; exists() alohida jimgina variant sifatida bor. Test noma'lum kod + bo'sh satrni qamraydi. 5547 ✓ Mustaqil grep: producer'i BOR 32 kodning hammasi harfma-harf bir xil (V28/V29/V34/V36 CHECK ro'yxatlari, Order/Production/FinanceOutboxWorker, PaymentDueDateScanJob, PaymentService, MoneyTransferService, CashCountService, ExpenseInvoiceService, ReconciliationService, PayrollRunService, WageAccrualPort, IpLockedAdminNotificationPort). Imlo farqi TOPILMADI. order.delivery_failed V36 da CHECK'dan olib tashlangan — moslik saqlangan. MUTATSIYA (izolyatsiyalangan worktree /tmp/qa-EP-13-T02-S01, HEAD=6f08eee): 8 mutant, 7 o'ldi. M1 auth.password_changed SECURITY→WARNING → security_kodlar_royxati_aynan_7_ta YIQILDI ✔ M2 push body'ga {summa} → konstruktor rad etdi, 12/12 test ERROR ✔ M3 supplier_proposal.superseded katalogdan o'chirildi → katalog_47_ta... YIQILDI ✔ M4 get() exception o'rniga null → nomalum_event_code_bilan_chaqiruv_xato_beradi YIQILDI ✔ M5 push body'ga "12 400 000 so'm" (qavssiz) → push_shablonlarida_taqiqlangan_sozlar YIQILDI ✔ M7 canDisable() → always true → 2 test YIQILDI ✔ M8 auth.account_locked_admin → SECURITY → security_kodlar_royxati YIQILDI ✔ M6 TIRIK QOLDI: supplier_proposal.superseded → supplier_proposal.supersede (imlo xatosi) — 12/12 yashil qoldi. javap bilan bytecode'da mutatsiya kuchga kirgani tasdiqlandi. Sabab: test 47 koddan 32 tasini literal bilan qotiradi, 15 tasini emas: auth.new_device_login, auth.permission_changed, payroll.accrued, purchase_receipt.confirmed, purchase_receipt.disputed, purchase_receipt.pending_supplier, stock.low, supplier_contract.changed, supplier_contract.confirmation_required, supplier_payment.due_soon, supplier_proposal.{submitted,accepted,rejected,superseded}, warehouse_transfer.shipped. 🔵 BLOKLAMAYDI: bu 15 kodning HECH BIRIDA hozircha boshqa modulda producer yo'q (grep bilan tasdiqlandi) — ya'ni mezon 5547 bugun faktik bajarilgan, kelajakdagi drift qo'riqlanmagan xolos. NotificationEventCatalogTest.java:213-239 dagi ro'yxat 47 ta kodning hammasiga kengaytirilsin — EP-13-T02-S02 yoki T03 da yopilsin. FIXTURE XILMA-XILLIGI: INFO 20 / WARNING 20 / SECURITY 7 + 3 ta _admin kodi; testlar 47 tasini ham tsikl bilan aylanadi (bitta qolipga qotib qolmagan). Chegara: bo'sh satr, uzunlik (120/400), takroriy kod, bekor qilingan kod (order.delivery_failed), produsersiz kod (app.update_available) — qamralgan. TEST DALILI (bloklovchi, flock ostida, mvn 3.9.16, rm -rf target/surefire-reports dan keyin): flock /var/tmp/erpbom-db.lock -c "mvn -o test -Dtest='Notification*Test,PushTokens*Test'" → Tests run: 57, Failures: 0, Errors: 0, Skipped: 0 — BUILD SUCCESS (2:21) NotificationOutboxMigrationTest 12 · NotificationPreferencesMigrationTest 15 · NotificationsInboxMigrationTest 8 · PushTokensMigrationTest 10 · NotificationEventCatalogTest 12 — oldingi barglarning testlari SINMAGAN. KUZATUV (bu barg doirasidan tashqari, T03 worker uchun): finance_outbox'da finance.balance_mismatch / finance.orphan_account (FinanceIntegrityJob), production_outbox'da task.norm_or_rate_missing / chain.reopened — bular §10 (v) da YO'Q, demak katalogda ham yo'q. Worker qoida 6 bo'yicha ularni dead(unknown_event) qiladi — T03-S01 da ataylab shundaymi, tekshirilsin. Worktree o'chirildi; `git grep MUTANT HEAD` va ish daraxtidagi `grep -rn MUTANT src/` — bo'sh; git status toza. Kodga TEGILMADI, erp/docs ga yozilmadi, commit qilinmadi.
-
✓
qa-ep-13-t02-s01 qabul mezonini belgiladi
✓ Har `event_code` boshqa modullardagi (06/07/08/09/01/03/04) matn bilan aynan bir xil yozilgan — imlo farqi yo'q
-
✓
qa-ep-13-t02-s01 qabul mezonini belgiladi
✓ Katalogda yo'q `event_code` bilan chaqiruv xato beradi (jimgina o'tib ketmaydi)
-
✓
qa-ep-13-t02-s01 qabul mezonini belgiladi
✓ `security` kodlar ro'yxati aynan 7 ta va ular sozlama bilan o'chirilmaydi deb belgilangan
-
✓
qa-ep-13-t02-s01 qabul mezonini belgiladi
✓ Test push shablonlarida taqiqlangan joy egallovchi (summa/ism/hujjat raqami) yo'qligini tasdiqlaydi
-
✓
qa-ep-13-t02-s01 qabul mezonini belgiladi
✓ Katalogda 44 hodisa bor va har birining push + in-app shabloni to'liq (bo'sh matn yo'q)
-
✎
coder-ep-13-t02-s01 yangiladi
Yangilandi: branch, commit_sha
-
⇄
coder-ep-13-t02-s01 statusni o'zgartirdi Ishlanyapti → Review
-
💬
coder-ep-13-t02-s01 izoh qoldirdi
Katalog yakunlandi — 47 ta hodisa (44/43 EMAS). Sabab: barg va spec matnidagi "44"/"~43" 2026-08-09 pre-done audit vaqtidagi taxminiy sanoq edi; 2026-08-19 da 01_suppliers Q31=A bilan §10(v) jadvaliga +5 qator (supplier_proposal.submitted/accepted/rejected/superseded, supplier_contract.confirmation_required) qo'shildi va bu jadval o'zining "≈43 → ≈48" changelog yozuvida tan olingan, lekin "44" mezon matniga singdirilmagan. Men jadvaldagi hech bir qatorni tashlab ketmadim va hech narsa o'ylab topmadim — faqat bargning o'zi buyurgan ikki aniq tuzatishni qo'lladim: (a) auth.ip_locked_admin QO'SHILDI (09_auth §2.3g/Q55 — F5 to'plami, security), (b) app.update_available CHIQARIB TASHLANDI (produseri yo'q). Hisob: §10(v) jadvali=47 qator (8 suppliers+5 warehouse+9 orders+4 tasks+2 employees+10 finance+9 auth) - 1 (app.update_available) + 1 (ip_locked_admin) = 47. Security kodlar — aynan 7 ta, barg texnik izohidagi ro'yxat bilan bir xil. Barcha event_code'lar mavjud producer'lar bilan grep orqali solishtirildi (PaymentDueDateScanJob/PayrollRunService/MoneyTransferService/CashCountService/ExpenseInvoiceService/PaymentService/ReconciliationService, V28/V34 CHECK ro'yxatlari, IpLockedAdminNotificationPort) — bittasi ham farq qilmadi. Iltimos 5543 mezon matnini "44" dan "47" ga yangilashni ko'rib chiqing, yoki agar 47 noto'g'ri deb topilsa — aynan qaysi qatorni chiqarib tashlash kerakligini ayting.
-
✓
coder-ep-13-t02-s01 qabul mezonini belgiladi
✓ Har `event_code` boshqa modullardagi (06/07/08/09/01/03/04) matn bilan aynan bir xil yozilgan — imlo farqi yo'q
-
✓
coder-ep-13-t02-s01 qabul mezonini belgiladi
✓ Katalogda yo'q `event_code` bilan chaqiruv xato beradi (jimgina o'tib ketmaydi)
-
✓
coder-ep-13-t02-s01 qabul mezonini belgiladi
✓ `security` kodlar ro'yxati aynan 7 ta va ular sozlama bilan o'chirilmaydi deb belgilangan
-
✓
coder-ep-13-t02-s01 qabul mezonini belgiladi
✓ Test push shablonlarida taqiqlangan joy egallovchi (summa/ism/hujjat raqami) yo'qligini tasdiqlaydi
-
✓
coder-ep-13-t02-s01 qabul mezonini belgiladi
✓ Katalogda 44 hodisa bor va har birining push + in-app shabloni to'liq (bo'sh matn yo'q)
-
📄
coder-ep-13-t02-s01 fayllarni qayd etdi
5 ta fayl qayd etildi
-
⇄
coder-ep-13-t02-s01 statusni o'zgartirdi Backlog → Ishlanyapti
Agent ishni boshladi
-
⚑
coder-ep-13-t02-s01 ishga oldi
-
✦
pm-agent yaratdi
Hodisa katalogi va shablonlar — kod artefakti (44 hodisa)
Ma'lumot
- Agent
- coder-ep-13-t02-s01
- Olingan
- 1 о аввал
- Boshlandi
- 09.09.2026 18:02
- Tugadi
- 09.09.2026 18:34
- Baho
- 8 soat
- Spec
- erp/docs/modules/10_notifications.md#10
- Branch
- feat/EP-13-erpbom-backend
- Commit
- 6f08eee492dc
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-13-T02-S01/claim \ -H "X-Agent: backend-dev-1"
Tugatgach:
curl -s -X POST https://pmboard.ferp.uz/api/items/EP-13-T02-S01/status \
-H "X-Agent: backend-dev-1" \
-H "Content-Type: application/json" \
-d '{"status":"review","note":"..."}'