07_tasks — Ishlab chiqarish tasklari (marshrut, brom, tasdiq, WIP tannarx, brak zanjiri)
Tavsif
Texnik ko'rsatma
Agent uchun
Qabul mezonlari (DoD)
0 / 22 bajarildi
-
Migratsiyalar V24..V28 toza bazada va V23 gacha to'ldirilgan bazada xatosiz o'tadi
-
AC1: buyurtma/qo'lda talab bo'yicha `production_runs` + marshrutdagi HAR operatsiya uchun `status=new` task yaratiladi va `recipe_version` snapshot bog'lanadi
-
AC2: hodim faqat `active` statusi, `active` kasbi, predecessor operatsiya `completed` va shu kasbda band-task yo'qligida brom qila oladi; bitta brom `<= norm_per_day`; over-claim bloklanadi
-
AC3: `submitted -> confirmed` da AYNAN BITTA `wage_entries` yoziladi (`UNIQUE(work_id)`), `qty = confirmed_qty`; `rejected`/`void` da hech narsa yozilmaydi
-
AC4: `production_in` faqat OXIRGI operatsiya yakunida, BIR MARTA, target = `semi_finished` ombor; oraliq operatsiyalar omborga hech narsa qo'shmaydi
-
AC5: partiya `unit_cost` = material FIFO + ishbay mehnat (`wip_cost / required_qty`); 200 000 material + 50 000 ishbay -> 250 000; `Sum(works.labor_cost_snapshot)` = shu sikl bo'yicha `Sum(wage_entries.amount)`; oylikbay mehnat QO'SHILMAYDI
-
AC6: material yetmasa `confirmed` bloklanadi, butun operatsiya rollback, `stock` o'zgarmaydi, task yopilmaydi; manfiy qoldiq yo'q
-
AC7: rework ayni `work_id` ustida davom etadi; pirovard `confirmed` da faqat BITTA accrual bo'ladi
-
AC9: `confirmed` da ombor va accrual BIRGA bo'ladi — qisman xatoda ikkisi ham bekor (integratsiya testi 03/04 xatosini simulyatsiya qiladi)
-
AC11: band-task gate KASB kesimida — ikki ishbay kasbli hodim har kasbda bittadan parallel work ushlay oladi, bitta kasbda ikkitasini emas
-
AC14: qisman tasdiq (4 brom -> 3 soz, 1 brak): accrual 3 donaga, `qty_confirmed += 3`, `qty_claimed -= 1`, material 4 donaga sarflanadi, brak qiymati tannarxga kirmaydi
-
AC15/AC8: brak dona qayta ishlanmaydi (rework taklif qilinmaydi) va brak/rad da izoh bo'sh bo'lolmaydi; rad/brak hodim tarixida ko'rinadi
-
AC16: nazoratchi o'z work'ini tasdiqlay olmaydi (SoD)
-
AC18: operatsiya `k` da brak chiqqanda BARCHA transitive predecessor tasklar brak miqdoriga qayta ochiladi (`qty_confirmed -= b`, `completed -> in_progress`) va `k` predecessorlar qayta `completed` bo'lguncha brom qilinmaydi; `required_qty` o'zgarmaydi
-
AC19: brak yo'qotishi = shu operatsiya materiali + yig'ilgan WIP ulushi (material + oldingi operatsiyalar mehnati); soz donalar `unit_cost` i brakdan oshmaydi; brak donaga shu operatsiya ishbayi to'lanmaydi
-
AC12: hodim deaktiv bo'lganda faol work `void` bo'lib qty pulga qaytadi; task muzlab qolmaydi
-
AC17: UC9 ekrani partiya bo'yicha operatsiya kesimida material + ishbay + brak yo'qotishini ko'rsatadi; material + ishbay yig'indisi partiyaning `stock_batches.unit_cost` iga TENG, brak yo'qotishi undan tashqarida alohida qator
-
AC20: `task_type='picking'` qatorda `production_run_id`/`variant_operation_id`/`product_variant_id`/`recipe_version_id`/`required_qty`/`profession_id` NULL va `order_id` NOT NULL — DB CHECK darajasida (oqimning o'zi 06_orders epicida)
-
AC21: avto ochilgan `production_runs`/`tasks` qatorlarida `created_by_user_id` NOT NULL va `system` useriga ishora qiladi; UI muallifni "Tizim" deb ko'rsatadi
-
AC10: `task.available`, `work.submitted`, `work.rejected`, `work.confirmed` hodisalari `production_outbox` ga biznes yozuv bilan BIR tranzaksiyada tushadi va worker ularni `FOR UPDATE SKIP LOCKED` bilan oladi
-
8.1 ishlangan misol (20 ta Stol, 6 operatsiya, 2 tarmoq) integratsiya testi sifatida takrorlanadi: `unit_cost = 123 000`
-
Kontrakt<->kod drift toza (EP-05 gate): `openapi/v1/tasks.yaml` dagi har operatsiya kodda bor
Ichki ishlar
10 ta
Izoh qoldirish
Tarix
9 yozuv
-
⇄
system statusni o'zgartirdi Ishlanyapti → Bajarildi
Bolalardan avtomatik hisoblandi
-
💬
unknown-agent izoh qoldirdi
[lead] SESSIYA YAKUNI 2026-08-26 — EP-07: 33/37 (89%). YOPILGAN: T01, T02, T04 (5/5 barg), T05-S01/S02/S03. Branch feat/EP-07-erpbom-backend, 17 commit. Testlar: uz.erpbom.tasks.** 246/246, uz.erpbom.employees.** 252/252, 0 failure/0 error (lead o'zi o'lchagan). QOLGAN 4 BARG: - EP-07-T05-S04 — ProductionOutboxWorker + notification (R3/R30). Boshlashdan oldin shu itemning izohlarini o'qish SHART: (a) V28 dedup indeksi `processing` ni ham qamraydi -> worker qatorni olgach kelgan order.recheck sassiz tushib qoladi; (b) V24 da `origin='order' -> order_id NOT NULL` CHECK yo'q; (c) arxiv variant gate faqat qo'lda sikl ochishda ishlaydi, buyurtmadan/outbox avto yo'l qoplanmagan. - EP-07-T06-S01/S02/S03 — o'qish yo'llari (UC9 xarajat tafsiloti, nazoratchi navbati, hodim /me). HOLAT: ish daraxti toza, mutant qoldig'i yo'q, ortiqcha worktree yo'q. `openapi/v1/tasks.yaml` hamon indeksda `A` holatida va HECH QACHON commit qilinmagan — Faza D da tekshirilsin. `stash@{0}` qoldi (mazmuni HEAD da bor, xavfsizlik nusxasi). KONTRAKT QARZI (T00 izohida): `409 SOURCE_WAREHOUSE_MISSING` va `409 STOCK_BUSY` (voidWork'dan) muzlatilgan yaml'da hujjatlanmagan. BOSHQA ITEMLARDA OCHIQ KUZATUV: EP-07-T03 — claimWork dagi R5 gate qulfsiz (parallel ikki claim o'tishi mumkin). EP-07-T05-S02 — R28 zanjirida nazariy deadlock (409 STOCK_BUSY bilan chiqadi, ma'lumot buzilmaydi). JARAYON: bu sessiyada topilgan 4 tizimli nuqson erp/.claude ga qoida sifatida kiritildi (commit 46718d0) — bitta repo bitta yozuvchi, kontrakt commit bilan muzlatiladi, kutish uchun navbat yopilmaydi, QA mutatsiyasi izolyatsiyalangan worktree'da.
-
💬
team-lead-pm izoh qoldirdi
📋 SESSIYA YAKUNI — 2026-08-25 (team-lead-pm). Keyingi sessiya shu izohdan davom etadi. === HOLAT: 23/37 barg done (62%) === done: T00 kontrakt · T03 brom/topshirish/rework · T07 web sikllar · T08 web nazoratchi navbati · T09 mobil Hodim qisman: T01 (5/6) · T02 (3/4) boshlanmagan: T04 · T05 · T06 === KEYINGI SESSIYA BIRINCHI UCH ISHI === 1) EP-07-T01-S04 (`in_progress`) — 🔴 REGRESSIYA, Faza D dan OLDIN yopilishi shart. V27 FK ikki mavjud 04_employees testini yiqitdi (EmployeeProfessionServiceTest#unassigningProfession..., WageAccrualServiceTest). Migratsiya TO'G'RI — faqat test fixture'i tuzatiladi (avval `works` qatori, keyin `wage_entries`). Tashxis o'sha itemning izohida. 2) EP-07-T02-S02 (`ready`) — kontrakt tuzatilgan, AC3202 endi haqiqiy: ProductionRunCreationService ga arxiv variant tekshiruvi -> 409 VARIANT_ARCHIVED. Qolgan 4 mezon QA tasdiqlagan. 3) T04 -> T05 -> T06 to'lqini (T04 bog'liqligi: T03 done, ya'ni ochiq). === FOYDALANUVCHI QARORLARI (kod shularga tayanadi) === A) R30 outbox dedup: kalit={event_type}:{entity}:{id}, UNIQUE faqat pending/processing oynasida, ON CONFLICT DO NOTHING. (T01-S05 izohi; T05-S04 mezon 3326) B) AC3309 (mobil gating): gating ochilmagan tasklar hodim ro'yxatida KO'RINMAYDI — spec UC3 to'g'ri, AC bekor qilindi. C) R15 arxiv variant: sikl OCHISHDA ham to'siladi (409 VARIANT_ARCHIVED), production_in gate'i o'z joyida. === OCHIQ SAVOL (keyingi sessiyaning birinchi savoli) === 🔴 C qarori faqat QO'LDA sikl ochishni qoplaydi. Buyurtmadan AVTO oqim (outbox/@Scheduled, 06_orders chaqiradi) HTTP yo'liga ega emas -> arxiv variantga buyurtma tushsa WIP tuzog'i QAYTADI. Spec R15 avto oqim haqida jim; 06_orders arxiv variantni sotuvda bloklaydimi — TEKSHIRILMAGAN. T04/T05 dan oldin hal qilinsin. === DOC QARZI (erp/docs READ-ONLY — §5 sikli bilan yopiladi) === 07_tasks §5 R30 matni hali eski ({entity}:{id}); 07_tasks R15 matni hali faqat production_in deydi. Ikkalasi ham kodda boshqacha. === REPO HOLATI (push YO'Q, main tegilmagan) === erpbom-backend feat/EP-07-erpbom-backend @62f27ad · erpbom-web feat/EP-07-erpbom-web @603d747 · erpbom-mobile feat/EP-07-erpbom-mobile @5c7a9e3 ⚠️ backend'da `openapi/v1/tasks.yaml` STAGED lekin commit qilinmagan — bu muzlatish holati, YO'QOTILMASIN (Faza D yakunlovchisi commit qiladi). ⚠️ Uchala EP-07 branch'i ham EP-06 branch'idan kesilgan (EP-06 PR'lari hali merge emas) -> EP-07 PR'lari EP-06 commitlarini olib keladi, agar EP-06 avval merge bo'lmasa. === TEXNIK QARZ / KUZATUVLAR (ish ochilmagan) === • erpbom-web da OpenAPI kodgen pipeline'i yo'q — wire tiplar qo'lda (T07 mezon 3329 qamrovidan chiqarildi). • T08-S01: work.review gate testi faqat salbiy yo'nalishda — mutatsiyaga chidamsiz (izoh o'sha itemda). • T03-S02: EMPLOYEE_NOT_ELIGIBLE va INVALID_STATUS_TRANSITION yo'llari testsiz. • ProductionRunService.toResponse() — ro'yxatda N+1; soft-o'chirilgan variantli bitta sikl butun ro'yxatni 404 qiladi (T06 e'tiboriga). • product_variants.code: V9 char(6) vs entity uzunliksiz String -> to'liq @SpringBootTest schema-validate yiqiladi (02_products merosi). • Board claim'ni ~1 soatdan keyin stale deb bo'shatadi — uzoq barglarda holat yolg'on ko'rinadi. • Mock :4010 setsid bilan detached ishlayapti (fon-task o'chganda tushmaydi).
-
⇄
system statusni o'zgartirdi Backlog → Ishlanyapti
Bolalardan avtomatik hisoblandi
-
🔗
pm-agent bog'liqlik qo'shdi
→ EP-06
-
🔗
pm-agent bog'liqlik qo'shdi
→ EP-04
-
🔗
pm-agent bog'liqlik qo'shdi
→ EP-02
-
🔗
pm-agent bog'liqlik qo'shdi
→ EP-09
-
✦
pm-agent yaratdi
07_tasks — Ishlab chiqarish tasklari (marshrut, brom, tasdiq, WIP tannarx, brak zanjiri)
Ma'lumot
- Agent
- —
- Olingan
- —
- Boshlandi
- 25.08.2026 08:53
- Tugadi
- 26.08.2026 18:00
- Baho
- 126 soat
- Spec
- erp/docs/modules/07_tasks.md
- Branch
- —
- Commit
- —
Bog'liqliklar
Bundan oldin tugashi kerak
- EP-02 02_products — Tovarlar (resept/BOM, marshrut, narx, ishbay)
- EP-09 09_auth — Authentication, Authorization va audit (poydevor)
- EP-04 03_warehouse — Ombor (qoldiq, FIFO partiya, kirim faktura, ko'chirish, qaytarish, set yig'ish)
- EP-06 04_employees — Hodimlar (kasb, normativ, maosh, ishbay accrual + bonus)
Agent uchun
Bu ishni AI agent quyidagicha oladi:
curl -s -X POST https://pmboard.ferp.uz/api/items/EP-07/claim \ -H "X-Agent: backend-dev-1"
Tugatgach:
curl -s -X POST https://pmboard.ferp.uz/api/items/EP-07/status \
-H "X-Agent: backend-dev-1" \
-H "Content-Type: application/json" \
-d '{"status":"review","note":"..."}'