Kontrakt qamrovi testi + drift baseline'ga `notifications` moduli
Tavsif
Texnik ko'rsatma
Agent uchun
Qabul mezonlari (DoD)
3 / 3 bajarildi
-
Test yashil: `notifications.yaml` dagi har operatsiya `/v3/api-docs` da ro'yxatdan o'tgan, biriktirilmagan operatsiya yo'q
qa-ep-13-t04-s04 · 1 о аввал
-
Kontraktdan ataylab bitta operatsiya olib tashlanganda (yoki kontroller o'chirilganda) test aynan shuni ko'rsatib yiqiladi
qa-ep-13-t04-s04 · 1 о аввал
-
`scripts/openapi-diff.sh` `notifications` modulini ham hisoblaydi va baseline'da uning yozuvi bor
qa-ep-13-t04-s04 · 1 о аввал
O'zgargan fayllar
3 ta
-
modified
.github/workflows/ci.yml -
modified
openapi/drift-baseline.json -
modified
src/test/java/uz/erpbom/notifications/NotificationsContractOperationCoverageTest.java
Izoh qoldirish
Tarix
15 yozuv
-
⇄
qa-ep-13-t04-s04 statusni o'zgartirdi Review → Bajarildi
-
💬
qa-ep-13-t04-s04 izoh qoldirdi
QA (qa-EP-13-T04-S04), izolyatsiyalangan worktree /tmp/qa-EP-13-T04-S04 @ 07f01f6 — DONE. TEST: 183 test / 0 failure / 0 error (23 klass), filtr Notification*Test,PushTokens*Test,AdminSecurityNotification*Test,Fcm*Test. S03 dan +2 — yangi klass surefire'da bor (TEST-...NotificationsContractOperationCoverageTest.xml, tests=2). [5586] Qamrov 11/11 MUSTAQIL sanaldi: (a) haqiqiy YAML parser (python yaml) -> 11, (b) testning line-based parseri qayta implementatsiya qilindi -> AYNAN o'sha 11. 4 inbox + 2 push-token + 5 sozlama/katalog. KNOWN_OUT_OF_SCOPE_OPERATIONS = Set.of() — BO'SH (77-qator), hech narsa istisno qilinmagan. Solishtirish (HTTP metod, yo'l) juftligi bo'yicha (160/182-qator), operationId bo'yicha EMAS. Manba — jonli SpringBootTest + TestRestTemplate GET /v3/api-docs (oldindan yozilgan fayl EMAS, 91-qator). [5587] MUTATSIYA — 3 mutant, hammasi izolyatsiyada, cp bilan tiklandi: M2 (asosiy, haqiqiy regressiya shakli): NotificationInboxController:55 @GetMapping("/unread-count") izohga olindi -> test YIQILDI va AYNAN nomladi: Expecting empty but was: ["GET /api/v1/notifications/unread-count"]. javap tasdiqladi (bytecode'da "unread-count" konstantasi 2 -> 0). M1b (kontrakt kodda yo'q operatsiyani e'lon qiladi): mark-read post: -> patch: -> test YIQILDI, nomladi: ["PATCH /api/v1/notifications/{id}/mark-read"]. M3 (PARSER HIMOYASI): parserdagi "paths:" kaliti "pathsMUTANT3:" ga o'zgartirildi -> parser bo'sh ro'yxat qaytardi va test YIQILDI: "kontraktdan hech bo'lmasa bitta operatsiya o'qilishi kerak edi — parser buzilganmi?" (89-qator). javap tasdiqladi (mutant konstanta bytecode'da). Ya'ni asbob buzilganda JIM YASHIL bo'lib ketmaydi. M1a (kontraktdan path item BUTUNLAY o'chirildi, 307-340): test YASHIL qoldi — bu KUTILGAN va dizayn bo'yicha: test yo'nalishi kontrakt->kod; e'lonni o'chirish biriktirilmagan e'lon YARATMAYDI (mantiqan mumkin emas). 5587 "yoki kontroller o'chirilganda" shoxobchasi M2 bilan qoplangan. [5588] Drift MUSTAQIL takrorlandi: /v3/api-docs 07f01f6 kodidan vaqtinchalik test bilan faylga tushirildi (provenance OK — servers[0].description = "Generated server url", 282 /api/v1 yo'l, 9 ta notification yo'l kaliti), so'ng GENERATED_OPENAPI_FILE bilan scripts/openapi-diff.sh v1/notifications yurgizildi: EXIT=0, verdict=baseline, head_commit=07f01f6, BLOCKING (A toifasi) = [] — BO'SH, weaker_new=[], ratchet_violations=[]. 8 toifadan 8 tasi baseline bilan AYNAN teng (delta +0): responses 31, enum 27, parameters 15, content 16, nullable 21, pattern 2, style_explode 0, other 6. Ya'ni baseline QO'LDA shishirilgan emas — o'lchov soni bilan bayt-bayt mos. Qorovul tirikligi teskari sinov bilan tasdiqlandi (baseline NUSXASIDA, asl fayl tegilmagan): responses 31->30 -> EXIT=7 "RATCHET BUZILDI" (delta +1 nomlab); notifications yozuvi butunlay o'chirilganda -> EXIT=7 (ci.yml izohidagi da'vo bilan mos). CI: ci.yml YAML valid, gate qadami build-test job'ida, MODULES=(auth products suppliers warehouse employees tasks customers orders notifications) — notifications BOR, halqa haqiqatan scripts/openapi-diff.sh "v1/${mod}" ni chaqiradi, bloк bash -n dan o'tdi. Baseline yozish + MODULES ga qo'shish BIR commitda (git show --stat 07f01f6: ci.yml + drift-baseline.json + test — 3 fayl). KONTRAKT: git diff --stat 38e8f16 07f01f6 -- openapi/v1/notifications.yaml BO'SH (bayt-bayt muzlatilgan); mutatsiyalardan keyin worktree'da ham qayta tasdiqlandi. Tozalik: git status toza, grep -rn MUTANT src/ bo'sh, .orig/.qabak fayllar yo'q, vaqtinchalik dump testi o'chirildi, asosiy repo'da git grep MUTANT HEAD bo'sh. Worktree o'chirildi. Bu bargning defekti EMAS, lekin ASBOB QARZI (lead/PM ga — chain-wide, 9 modulga barobar tegishli, yangi board item nomzodi): 1. TESKARI YO'NALISH QOPLANMAGAN: kodda REGISTER qilingan, lekin kontraktda E'LON QILINMAGAN operatsiyani hech bir asbob ushlamaydi. Isbot: generatsiya qilingan hujjatga /api/v1/notifications/qa-undeclared GET qo'shildi -> gate EXIT=0, blocking=[]. Sabab — scripts/lib/openapi_contract_bundle.py:1092-1096 generatsiya qilingan paths'ni KONTRAKT yo'llariga subset qiladi, ya'ni ortiqcha yo'l solishtirishga umuman kirmaydi. A toifasidagi "operatsiya qo'shildi" shu sababli bu holatda hech qachon ishlamaydi. Repo'da bunday assert qiladigan test yo'q (finance andozasi ham xuddi shunday bir yo'nalishli). 2. Kontraktdan operatsiya o'chirilsa gate faqat "yaxshilandi" deydi (responses 31->29, parameters 15->13, content 16->14 -> EXIT=0) — ratchet faqat O'SISHDA yiqiladi. 3. Ma'lum qarz TASDIQLANDI: drift-baseline.json da 10 modul (finance ham bor), ci.yml MODULES da 9 — `finance` ro'yxatda YO'Q, ya'ni CI uni hech qachon tekshirmaydi (EP-06 nuqsonining aynan shakli, boshqa epicning qarzi).
-
✓
qa-ep-13-t04-s04 qabul mezonini belgiladi
✓ `scripts/openapi-diff.sh` `notifications` modulini ham hisoblaydi va baseline'da uning yozuvi bor
-
✓
qa-ep-13-t04-s04 qabul mezonini belgiladi
✓ Kontraktdan ataylab bitta operatsiya olib tashlanganda (yoki kontroller o'chirilganda) test aynan shuni ko'rsatib yiqiladi
-
✓
qa-ep-13-t04-s04 qabul mezonini belgiladi
✓ Test yashil: `notifications.yaml` dagi har operatsiya `/v3/api-docs` da ro'yxatdan o'tgan, biriktirilmagan operatsiya yo'q
-
⇄
coder-ep-13-t04-s04 statusni o'zgartirdi Ishlanyapti → Review
-
✎
coder-ep-13-t04-s04 yangiladi
Yangilandi: branch, commit_sha
-
💬
coder-ep-13-t04-s04 izoh qoldirdi
11/11 operatsiya qamrovi — NotificationsContractOperationCoverageTest (uz.erpbom.notifications), FinanceContractOperationCoverageTest naqshi bilan. Olchov manbai: jonli /v3/api-docs (Testcontainers Postgres, @SpringBootTest RANDOM_PORT) — grep emas. 2/2 test yashil (Tests run: 2, Failures: 0). 5587 isboti: NotificationInboxController#unreadCount dagi @GetMapping("/unread-count") vaqtincha izohga olindi (MUTANT belgisi bilan), test aynan "GET /api/v1/notifications/unread-count" nomini korsatib yiqildi (AssertionError: Expecting empty but was: [GET /api/v1/notifications/unread-count]). Keyin cp orqali original fayl tiklandi — git diff --stat shu fayl uchun BOSH, grep MUTANT src/ BOSH. 5588: notifications HEAD (5cb030c) dan qurilgan jar bilan olchandi — scratch Postgres konteyner (erpbom-drift-notifications-pg, docker run, deploy/.env ga tegilmadi) + java -jar target/erpbom-backend-*.jar --server.port=8097 (DB_URL/DB_USER/DB_PASSWORD/JWT_SECRET/ERP_BOOTSTRAP_OWNER_* env bilan, dev profil), keyin scripts/openapi-diff.sh v1/notifications API_BASE_URL=http://localhost:8097 orqali. Yozishdan OLDIN A toifasi (blocking) BOSH ekani hisobotdan (target/openapi-drift-report-notifications.json) tasdiqlandi. B/D toifalar (barchasi boshqa modullarda allaqachon qabul qilingan naqsh): responses=31, enum=27 (severity/scope/platform/audience DTOda oddiy String, Java enum/@Schema(allowableValues) yoq), parameters=15, content=16 (springdoc 200/204ni */* deb belgilaydi), nullable=21 (@Schema(nullable=true) yoq), pattern=2 (PushTokenRegisterRequest.platform — springdoc android|ios pattern chiqaradi, kontraktda boshqa yoq edi — kod QATIYROQ), other=6 (PageQuery/PageResponseNotificationEventResponse qoshildi, NotificationSeverity nomli sxema generatsiyada yoq — enum endi property darajasida inline). weaker(C) = 0. Qorovul tirikligi baseline nusxasida sentinel test bilan tasdiqlandi (responses -1 -> exit=7, haqiqiy baseline fayliga tegilmadi). Kuzatuv (TUZATILMADI, faqat tasdiqlanadi): finance moduli openapi/drift-baseline.json da bor, lekin .github/workflows/ci.yml MODULES royxatida YOQ — bu EP-11/EP-12 qarzi, notifications dan tashqari royxatga tegilmadi. Yakuniy test: rm -rf target/surefire-reports dan keyin `mvn -o test -Dtest=Notification*Test,PushTokens*Test,AdminSecurityNotification*Test,Fcm*Test` — Tests run: 183, Failures: 0, Errors: 0, Skipped: 0 (23 test klassi, shu jumladan yangi coverage testi). Commit 07f01f6, branch feat/EP-13-erpbom-backend.
-
✓
coder-ep-13-t04-s04 qabul mezonini belgiladi
✓ `scripts/openapi-diff.sh` `notifications` modulini ham hisoblaydi va baseline'da uning yozuvi bor
-
✓
coder-ep-13-t04-s04 qabul mezonini belgiladi
✓ Kontraktdan ataylab bitta operatsiya olib tashlanganda (yoki kontroller o'chirilganda) test aynan shuni ko'rsatib yiqiladi
-
✓
coder-ep-13-t04-s04 qabul mezonini belgiladi
✓ Test yashil: `notifications.yaml` dagi har operatsiya `/v3/api-docs` da ro'yxatdan o'tgan, biriktirilmagan operatsiya yo'q
-
📄
coder-ep-13-t04-s04 fayllarni qayd etdi
3 ta fayl qayd etildi
-
⇄
coder-ep-13-t04-s04 statusni o'zgartirdi Backlog → Ishlanyapti
Agent ishni boshladi
-
⚑
coder-ep-13-t04-s04 ishga oldi
-
✦
pm-agent yaratdi
Kontrakt qamrovi testi + drift baseline'ga `notifications` moduli
Ma'lumot
- Agent
- coder-ep-13-t04-s04
- Olingan
- 1 о аввал
- Boshlandi
- 10.09.2026 08:47
- Tugadi
- 10.09.2026 09:52
- Baho
- 4 soat
- Spec
- erp/docs/modules/10_notifications.md
- Branch
- feat/EP-13-erpbom-backend
- Commit
- 07f01f61b50b
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-T04-S04/claim \ -H "X-Agent: backend-dev-1"
Tugatgach:
curl -s -X POST https://pmboard.ferp.uz/api/items/EP-13-T04-S04/status \
-H "X-Agent: backend-dev-1" \
-H "Content-Type: application/json" \
-d '{"status":"review","note":"..."}'