Domen shartnomasi — 8 band
Sakkiz band. Hammasi bo’lsa — agent generatsiya qilinadi.
1. Command’lar — nima qila olaman
heading.anchorLabelHar holat o’zgartiruvchi amal typed kontrakt bo’lishi shart.
id: inventory.stock.receiveoperation_type: COMMANDrisk_level: R2idempotency: required # ⚠ MAJBURIYconcurrency: optimisticinput: { 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.anchorLabelTo’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.anchorLabelEng muhim band. Har COMMAND qaysi query bilan tasdiqlanishini
e’lon qiladi.
id: inventory.stock.receiveverification: 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.anchorLabelpermissions: 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.anchorLabelsummary_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.anchorLabelDomeningiz 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.anchorLabelerrors: - 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.
Tekshirish
heading.anchorLabeldavirix app checkYetishmagan bandni aniq ko’rsatadi va daraja beradi: A0–A4.
Keyingi qadam
heading.anchorLabel- Tayyorlik darajalari
- verification bloki — chuqurroq