V24 — `production_runs` (sikl, WIP tannarx)
Tavsif
Qabul mezonlari (DoD)
6 / 6 bajarildi
-
`status` CHECK: `in_progress` | `completed` | `cancelled`, default `in_progress`
qa-ep-07-t01-s01 · 1 о аввал
-
`origin` CHECK: `order` | `manual`
qa-ep-07-t01-s01 · 1 о аввал
-
`wip_cost numeric(18,2) NOT NULL DEFAULT 0`, `produced_qty numeric(18,4) NOT NULL DEFAULT 0`, `required_qty numeric(18,4) NOT NULL` + `CHECK (required_qty > 0)`
qa-ep-07-t01-s01 · 1 о аввал
-
FK'lar: `product_variant_id`, `recipe_version_id`, `organization_id`, `created_by_user_id` (RESTRICT); `order_id` — FK'SIZ `bigint`, izohda sabab yozilgan (06_orders epicida qo'shiladi)
qa-ep-07-t01-s01 · 1 о аввал
-
`created_by_user_id` NOT NULL (R31 — nullable variant rad etilgan)
qa-ep-07-t01-s01 · 1 о аввал
-
Indekslar: `organization_id`, `product_variant_id`, `status`, `order_id`
qa-ep-07-t01-s01 · 1 о аввал
O'zgargan fayllar
2 ta
-
modified
src/test/java/uz/erpbom/tasks/ProductionRunsMigrationTest.java -
modified
src/main/resources/db/migration/V24__production_runs.sql
Izoh qoldirish
Tarix
22 yozuv
-
✎
finalize-ep-07 yangiladi
Yangilandi: pr_url
-
⇄
qa-ep-07-t01-s01 statusni o'zgartirdi Review → Bajarildi
-
💬
qa-ep-07-t01-s01 izoh qoldirdi
QA tekshiruvi (qa-EP-07-T01-S01), commit d101b5f — QABUL QILINDI. Testlar: 18/18 yashil (surefire, Testcontainers PG16, V1..V28 zanjiri ustida). Mezon bo'yicha (har biri SQL matnida ko'rsatildi, V24__production_runs.sql): * 3162 — q.42 `status varchar(20) NOT NULL DEFAULT 'in_progress'`, q.60-61 CHECK IN (in_progress, completed, cancelled). openapi/v1/tasks.yaml q.1268 `ProductionRunStatus` enum bilan AYNAN mos. * 3163 — q.39 + q.62-63 CHECK IN ('order','manual'); kontrakt q.1280 `ProductionOrigin` bilan mos. * 3164 — q.46 wip_cost numeric(18,2) NOT NULL DEFAULT 0; q.48 produced_qty numeric(18,4) NOT NULL DEFAULT 0; q.36 required_qty numeric(18,4) NOT NULL + q.64-65 CHECK (required_qty > 0). Default'lar testda o'qib tasdiqlandi, precision information_schema'dan. * 3165 — q.52-59: 4 ta FK, ON DELETE klauzulasi YO'Q (= NO ACTION/RESTRICT). Maqsad jadvallar grep bilan tasdiqlandi: product_variants (V9:73), recipe_versions (V10:41), organizations (V2:18), users (V4:21) — hammasida `id bigint GENERATED ALWAYS AS IDENTITY PK`. order_id (q.41) FK'siz bigint, sabab q.20-27 da batafsil yozilgan (V23 wage_entries.work_id naqshi). * 3166 — q.50 created_by_user_id bigint NOT NULL. * 3167 — q.71-76: talab qilingan 4 indeks (+ recipe_version_id, created_by_user_id — FK ustunlariga qo'shimcha, to'g'ri). MUTATSIYA TEKSHIRUVI (3 ta buzilish kiritildi, har birida test yurgizildi, so'ng git checkout bilan tiklandi — fayl hash d9e816d8 commitdagi bilan AYNAN bir xil): * A) chk_production_runs_status + chk_..._required_qty_positive olib tashlandi -> USHLANDI: aynan 3 ta test yiqildi (invalidStatusIsRejectedByCheckConstraint, nonPositiveRequiredQtyIsRejected..., negativeRequiredQtyIsRejected...). Testlar constraint NOMINI assert qiladi, tautologik emas. * C) idx_..._status va idx_..._order_id olib tashlandi -> USHLANDI: requiredIndexesExist yiqildi. KUZATUV (bloklamaydi, repo bo'ylab umumiy): * B) fk_production_runs_organization ga ON DELETE CASCADE qo'shildi -> MUTATSIYA OMON QOLDI (18/18 yashil). Ya'ni 3165 dagi "RESTRICT" da'vosini hech bir test isbotlamaydi: kelajakda ON DELETE CASCADE qo'shilsa suite jim qoladi. Migratsiya SQL'ning O'ZI to'g'ri (klauzula yo'q), shuning uchun bu ish qaytarilmadi. Bu repo'dagi 20+ migratsiya testining HECH BIRIDA ON DELETE assert'i yo'q (grep: delete_rule/confdeltype = 0 natija) — ya'ni bu bitta coder'ning kamchiligi emas, uy standarti bo'shlig'i. Taklif: alohida cross-cutting task — information_schema.referential_constraints.delete_rule = 'NO ACTION' ni tekshiradigan umumiy test yordamchisi. * Kichik: productionRunsForeignKeyColumnsHaveRealForeignKeyAndIndex nomida "AndIndex" bor, lekin tanasi faqat FK ni tekshiradi (indeks emas). Cross-cutting: tenant_id YO'Q (AR-1) ✓ · AR-10 oddiy FK ✓ · snake_case, jadval ko'plikda, FK to'liq nomdan ✓ · precision (18,4)/(18,2) ✓ · fizik DELETE yo'q, bekor qilish status=cancelled orqali (spec §2.3 da deleted_at yo'q) ✓ · parol/token log'i yo'q ✓. Parallel agentlar fayllariga (V25/V28, openapi/) tegilmadi.
-
✓
qa-ep-07-t01-s01 qabul mezonini belgiladi
✓ Indekslar: `organization_id`, `product_variant_id`, `status`, `order_id`
-
✓
qa-ep-07-t01-s01 qabul mezonini belgiladi
✓ `created_by_user_id` NOT NULL (R31 — nullable variant rad etilgan)
-
✓
qa-ep-07-t01-s01 qabul mezonini belgiladi
✓ FK'lar: `product_variant_id`, `recipe_version_id`, `organization_id`, `created_by_user_id` (RESTRICT); `order_id` — FK'SIZ `bigint`, izohda sabab yozilgan (06_orders epicida qo'shiladi)
-
✓
qa-ep-07-t01-s01 qabul mezonini belgiladi
✓ `wip_cost numeric(18,2) NOT NULL DEFAULT 0`, `produced_qty numeric(18,4) NOT NULL DEFAULT 0`, `required_qty numeric(18,4) NOT NULL` + `CHECK (required_qty > 0)`
-
✓
qa-ep-07-t01-s01 qabul mezonini belgiladi
✓ `origin` CHECK: `order` | `manual`
-
✓
qa-ep-07-t01-s01 qabul mezonini belgiladi
✓ `status` CHECK: `in_progress` | `completed` | `cancelled`, default `in_progress`
-
⇄
coder-ep-07-t01-s01 statusni o'zgartirdi Ishlanyapti → Review
-
💬
coder-ep-07-t01-s01 izoh qoldirdi
V24__production_runs.sql yozildi (07_tasks.md #2.3). order_id ataylab FK-siz bigint (izohda sabab). 18 ta migratsiya testi (Testcontainers) yashil. Barcha 6 acceptance criteria bajarildi.
-
✎
coder-ep-07-t01-s01 yangiladi
Yangilandi: branch, commit_sha
-
✓
coder-ep-07-t01-s01 qabul mezonini belgiladi
✓ Indekslar: `organization_id`, `product_variant_id`, `status`, `order_id`
-
✓
coder-ep-07-t01-s01 qabul mezonini belgiladi
✓ `created_by_user_id` NOT NULL (R31 — nullable variant rad etilgan)
-
✓
coder-ep-07-t01-s01 qabul mezonini belgiladi
✓ FK'lar: `product_variant_id`, `recipe_version_id`, `organization_id`, `created_by_user_id` (RESTRICT); `order_id` — FK'SIZ `bigint`, izohda sabab yozilgan (06_orders epicida qo'shiladi)
-
✓
coder-ep-07-t01-s01 qabul mezonini belgiladi
✓ `wip_cost numeric(18,2) NOT NULL DEFAULT 0`, `produced_qty numeric(18,4) NOT NULL DEFAULT 0`, `required_qty numeric(18,4) NOT NULL` + `CHECK (required_qty > 0)`
-
✓
coder-ep-07-t01-s01 qabul mezonini belgiladi
✓ `origin` CHECK: `order` | `manual`
-
✓
coder-ep-07-t01-s01 qabul mezonini belgiladi
✓ `status` CHECK: `in_progress` | `completed` | `cancelled`, default `in_progress`
-
📄
coder-ep-07-t01-s01 fayllarni qayd etdi
2 ta fayl qayd etildi
-
⇄
coder-ep-07-t01-s01 statusni o'zgartirdi Backlog → Ishlanyapti
Agent ishni boshladi
-
⚑
coder-ep-07-t01-s01 ishga oldi
-
✦
pm-agent yaratdi
V24 — `production_runs` (sikl, WIP tannarx)
Ma'lumot
- Agent
- coder-ep-07-t01-s01
- Olingan
- 1 о аввал
- Boshlandi
- 25.08.2026 09:38
- Tugadi
- 25.08.2026 10:00
- Baho
- 3 soat
- Spec
- erp/docs/modules/07_tasks.md#2.3
- Branch
- feat/EP-07-erpbom-backend
- Commit
- d101b5fdede5
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-07-T01-S01/claim \ -H "X-Agent: backend-dev-1"
Tugatgach:
curl -s -X POST https://pmboard.ferp.uz/api/items/EP-07-T01-S01/status \
-H "X-Agent: backend-dev-1" \
-H "Content-Type: application/json" \
-d '{"status":"review","note":"..."}'