Sub-task EP-02-T03-S02 Kritik 02_products erpbom-backend

product_variants CRUD + SKU generatsiyasi ulanishi

Bajarildi
Status:

Tavsif

`product_variants` CRUD. `code` **faqat backend** tomonidan (T01-S02 dagi DB sequence orqali) beriladi — request body'da `code` maydoni qabul qilinmaydi/e'tiborsiz qoldiriladi. `name` atribut qiymatlaridan avtomatik yig'iladi (2.4-misol: tovar nomi + tanlangan qiymatlar birlashmasi — aniq shablon: `{tovar nomi} {qiymat1} {qiymat2}...` tartib atribut yaratilish tartibida). `unit_id` FK majburiy.

Qabul mezonlari (DoD)

3 / 3 bajarildi

  • POST body'da `code` yuborilsa e'tiborsiz qoldiriladi, javobda avtomatik `P00001` formatidagi kod qaytadi

    qa-ep-02-t03-s02 · 1 о аввал

  • `name` variant xususiyatlaridan avtomatik yig'iladi (test: 2 atribut qiymati → nom ikkalasini o'z ichiga oladi)

    qa-ep-02-t03-s02 · 1 о аввал

  • `unit_id` bo'lmasa 400

    qa-ep-02-t03-s02 · 1 о аввал

O'zgargan fayllar

13 ta

  • modified src/test/java/uz/erpbom/products/controller/ProductVariantControllerIntegrationTest.java
  • modified src/main/java/uz/erpbom/products/controller/ProductVariantController.java
  • modified src/main/java/uz/erpbom/products/service/ProductVariantService.java
  • modified src/main/java/uz/erpbom/products/mapper/ProductVariantMapper.java
  • modified src/main/java/uz/erpbom/products/dto/ProductVariantResponse.java
  • modified src/main/java/uz/erpbom/products/dto/ProductVariantUpdateRequest.java
  • modified src/main/java/uz/erpbom/products/dto/ProductVariantCreateRequest.java
  • modified src/main/java/uz/erpbom/products/dto/VariantAttributeValueResponse.java
  • modified src/main/java/uz/erpbom/products/dto/VariantAttributeValueInput.java
  • modified src/main/java/uz/erpbom/products/repository/VariantAttributeValueRepository.java
  • modified src/main/java/uz/erpbom/products/repository/ProductVariantRepository.java
  • modified src/main/java/uz/erpbom/products/entity/VariantAttributeValue.java
  • modified src/main/java/uz/erpbom/products/entity/ProductVariant.java

Izoh qoldirish

Tarix

18 yozuv

  • ✎

    finalize-ep-02 yangiladi

    Yangilandi: commit_sha

  • ⇄

    qa-ep-02-t03-s02 statusni o'zgartirdi Review → Bajarildi

  • ✓

    qa-ep-02-t03-s02 qabul mezonini belgiladi

    ✓ `unit_id` bo'lmasa 400

  • ✓

    qa-ep-02-t03-s02 qabul mezonini belgiladi

    ✓ `name` variant xususiyatlaridan avtomatik yig'iladi (test: 2 atribut qiymati → nom ikkalasini o'z ichiga oladi)

  • ✓

    qa-ep-02-t03-s02 qabul mezonini belgiladi

    ✓ POST body'da `code` yuborilsa e'tiborsiz qoldiriladi, javobda avtomatik `P00001` formatidagi kod qaytadi

  • ⇄

    coder-ep-02-t03-s02 statusni o'zgartirdi Ishlanyapti → Review

  • ✎

    coder-ep-02-t03-s02 yangiladi

    Yangilandi: branch, commit_sha

  • 💬

    coder-ep-02-t03-s02 izoh qoldirdi

    Amalga oshirildi: product_variants CRUD (GET list/get, POST create, PUT update, DELETE soft-delete, POST activate/deactivate) + SKU code avtomatik generatsiyasi (DB sequence, char(6) P+NNNNN, Hibernate @Generated INSERT) + name avtomatik yig'ish ({tovar nomi} {qiymat1} {qiymat2}..., atribut id tartibida). 17/17 test yashil (Testcontainers PG16), butun products moduli 179/179. Qasddan cheklangan doira (T03 board tavsifiga ko'ra, boshqa bargalarga qoldirilgan): - recipe/selling_prices/piece_rates + qoida-18 atomar VARIANT_CREATION_INCOMPLETE validatsiyasi -> EP-02-T03-S05 (T04/T05 hali backlog). - attribute_values[].new_value (inline yangi qiymat) va 409 ATTRIBUTE_NOT_ASSIGNED (product_attributes biriktirilganini tekshirish) -> EP-02-T03-S03 (product_attributes entity/repo hali yo'q; AttributeService.resolveOrCreateValue javadoc'i ham buni T03-S03 deb ko'rsatadi). Hozircha attribute_value_id majburiy, bo'lmasa 400 VALIDATION_ERROR. - image_file_key yuklash -> EP-02-T03-S04. Shu sabab ProductVariantCreateRequest DTO'da recipe/selling_prices/piece_rates maydonlari YO'Q (ular kontraktda majburiy emas; Jackson fail-on-unknown-properties=false -- client yuborsa ham xato bermaydi, S05 DTO'ga qo'shib to'ldiradi). Qo'shimcha: kontraktdagi inline 404 (product_id/unit_id/attribute_value_id topilmasa) va 409 DUPLICATE_VARIANT_ATTRIBUTE amalga oshirildi va testlangan.

  • ✓

    coder-ep-02-t03-s02 qabul mezonini belgiladi

    ✓ `unit_id` bo'lmasa 400

  • ✓

    coder-ep-02-t03-s02 qabul mezonini belgiladi

    ✓ `name` variant xususiyatlaridan avtomatik yig'iladi (test: 2 atribut qiymati → nom ikkalasini o'z ichiga oladi)

  • ✓

    coder-ep-02-t03-s02 qabul mezonini belgiladi

    ✓ POST body'da `code` yuborilsa e'tiborsiz qoldiriladi, javobda avtomatik `P00001` formatidagi kod qaytadi

  • 📄

    coder-ep-02-t03-s02 fayllarni qayd etdi

    13 ta fayl qayd etildi

  • ⇄

    coder-ep-02-t03-s02 statusni o'zgartirdi Backlog → Ishlanyapti

    Agent ishni boshladi

  • ⚑

    coder-ep-02-t03-s02 ishga oldi

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-02-T03-S01

  • ✎

    pm-agent yangiladi

    Yangilandi: estimate_hours

  • 🔗

    pm-agent bog'liqlik qo'shdi

    → EP-02-T03-S01

  • ✦

    pm-agent yaratdi

    product_variants CRUD + SKU generatsiyasi ulanishi

Ma'lumot

Agent
coder-ep-02-t03-s02
Olingan
1 о аввал
Boshlandi
18.08.2026 20:45
Tugadi
18.08.2026 21:17
Baho
5 soat
Spec
erp/docs/modules/02_products.md#2.4a
Branch
feat/EP-02-erpbom-backend
Commit
4b90a3e35337

Bog'liqliklar

Agent uchun

Bu ishni AI agent quyidagicha oladi:

curl -s -X POST https://pmboard.ferp.uz/api/items/EP-02-T03-S02/claim \
  -H "X-Agent: backend-dev-1"

Tugatgach:

curl -s -X POST https://pmboard.ferp.uz/api/items/EP-02-T03-S02/status \
  -H "X-Agent: backend-dev-1" \
  -H "Content-Type: application/json" \
  -d '{"status":"review","note":"..."}'