skipLink.label

Domen shartnomasi — 8 band

RejadaSpetsifikatsiya yakunlangan. Kontrakt sxemasi va tekshiruvchi ijroda emas.

Sakkiz band. Hammasi bo’lsa — agent generatsiya qilinadi.


1. Command’lar — nima qila olaman

heading.anchorLabel

Har holat o’zgartiruvchi amal typed kontrakt bo’lishi shart.

id: inventory.stock.receive
operation_type: COMMAND
risk_level: R2
idempotency: required # ⚠ MAJBURIY
concurrency: optimistic
input: { type: object, ... }
output: { type: object, ... }
Maydon Nega
idempotency: required ⛔ Busiz agent retry’da dublikat yaratadi
risk_level Approval oqimi shundan chiqadi
concurrency Agent eski ma’lumot bilan yozmasligi uchun

2. Query’lar — nima ko’ra olaman

heading.anchorLabel

To’rt tur majburiy. Bittasi yetishmasa agent ishlay olmaydi.

Tur Misol Agent nima uchun ishlatadi
Summary inventory.daily_summary «Umumiy holat qanday?»
Anomaly inventory.low_stock «Nima muammo?»
Search inventory.item.search Aniq yozuvni topish
Detail inventory.stock.get Bitta yozuv tafsiloti

3. ⚡ Verification — «bajarildi» deyish huquqi

heading.anchorLabel

Eng muhim band. Har COMMAND qaysi query bilan tasdiqlanishini e’lon qiladi.

id: inventory.stock.receive
verification:
operation: inventory.stock.get
business_key: id
expect: { field: resource.state, equals: open }

⚠ Domen yozib bo’lingandan keyin bu bandni qo’shish — barcha kontraktlarni qayta ko’rish. Oldindan yozilsa — har command’ga uch qator.


4. Permission — nima qila olmayman

heading.anchorLabel
permissions:
required: [inventory.stock.receive]

Bo’sh bo’lishi mumkin emas. Agent ruxsatni UI’da emas, serverda tekshiriladi — aks holda u qoidani chetlab o’tadi.


5. summary_for_ai — reja qurish uchun

heading.anchorLabel
summary_for_ai: >
Omborga qabulni yozadi. OLDIN `inventory.item.search` bilan mahsulot
kartochkasi borligini tekshiring. `ITEM_NOT_FOUND` xatosi — mahsulot
katalogda yo'q, avval uni yarating.

Uch narsa: nima qiladi · oldin nima chaqiriladi · asosiy xato nimani anglatadi.

⚠ Bu prompt emas — bu API hujjati agent uchun. U bo’lmasa agent amallarni noto’g’ri tartibda chaqiradi.


6. Kanonik resurs va holat

heading.anchorLabel

Domeningiz qaytaradigan har resurs kanonik shaklga tushadi:

{
"resource": {
"id": "mov_01hq...",
"type": "stock_movement",
"state": "open",
"source_state": "AWAITING_CHECK",
"updated_at": "...",
"version": "3"
},
"attributes": { "warehouse_code": "WH-1", "qty": "12" }
}
Kanonik state Ma’nosi
open mavjud va faol
closed yakunlangan
cancelled bekor qilingan
pending qayta ishlanmoqda
failed muvaffaqiyatsiz
unknown ⚠ xaritalab bo’lmadi

Qat’iy qoida: Domain Pack faqat resource.* ga tayanadi. attributes.* — domeningizga xos, agent semantikasi unga bog’lanmaydi.


7. Typed xatolar

heading.anchorLabel
errors:
- ITEM_NOT_FOUND
- STOCK_INSUFFICIENT
- PERIOD_CLOSED
- VALIDATION_FAILED

⛔ Erkin matnli xato — agent uni tushunmaydi va keyingi qadamni tanlay olmaydi. Har xato kod bo’lishi va kontraktda e’lon qilinishi shart.

⚠ Handler qaytaradigan, lekin kontraktda yo’q xato — CI’da yiqiladi.


8. Har ID yonida _label

heading.anchorLabel
{
"warehouse_id": "wh_01hq...",
"warehouse_label": "Markaziy ombor",
"item_id": "itm_01hq...",
"item_label": "Canon EOS R6 (korpus)",
"actor_id": "actor_01hq...",
"actor_label": "Aziz Karimov"
}
Yo’q bo’lsa Nima bo’ladi
_label yo’q Agent keyingi chaqiruvda ID’ni o’ylab topadi
ID yo’q Agent foydalanuvchiga tushunarsiz javob beradi

Ikkalasi ham bo’lishi shart.


Terminal window
davirix app check

Yetishmagan bandni aniq ko’rsatadi va daraja beradi: A0–A4.

Keyingi qadam

heading.anchorLabel