skipLink.label

verification bloki

Ishlaydi

Yozgandan keyin platforma manbadan qayta o’qiydi va e’lon qilingan predikatni qo’llaydi:

yozuv → javob (id) → read-back(id) → predikat → VERIFIED | FAILED | UNKNOWN
{
"name": "crm.create_deal",
"direction": "write",
"verification": {
"operation": "crm.get_deal",
"business_key": "id",
"expect": { "field": "closed", "equals": "N" },
"max_wait_ms": 15000,
"on_missing": "UNKNOWN",
"version_field": "resource_version"
}
}
Maydon Majburiy Ma’nosi
operation Read-back amali nomi — u mavjud va direction: read bo’lishi shart
expect Muvaffaqiyat predikati — deklarativ, erkin matn emas
business_key Read-back’ga uzatiladigan kalit nomi
max_wait_ms Manba yozuvi ko’rinishini kutish (max 10 daqiqa)
on_missing Topilmaganda: UNKNOWN (standart) yoki FAILED
version_field Berilsa eski replikadan o’qish aniqlanadi

business_key — ikki vazifa bajaradi

heading.anchorLabel

Bu eng ko’p xato qilinadigan joy:

1️⃣ Yozuv javobidagi maydon nomi — resurs id’si shundan olinadi
2️⃣ Read-back argumenti nomi — o’sha qiymat shu nom bilan uzatiladi

Ya’ni ikkalasi bir xil bo’lishi shart:

// crm.create_deal javobi: {"id": "10001", "created": true}
// crm.get_deal kirishi: {"id": "10001"}
"business_key": "id" // ✅ ikkalasiga mos

expect — predikat

heading.anchorLabel

Aynan bittasi: in yoki equals.

"expect": { "field": "status", "in": ["DELIVERED", "delivered"] }
"expect": { "field": "closed", "equals": "N" }

⚠ Provayder taksonomiyasi manifestda, kodda emas. Provayder holat nomlarini o’zgartirsa — manifest qatori o’zgaradi, kod emas.

on_missing — nega standart UNKNOWN

heading.anchorLabel
manbada yozuv topilmadi ≠ amal bajarilmadi

Indeks kechikishi yoki eventual consistency yozuvni vaqtincha yashirishi mumkin. FAILED ni standart qilish amalni noto’g’ri yopardi.

FAILED ni faqat manba darhol-izchil (read-after-write) bo’lsa tanlang.

Predikat maydonini har doim qaytaring

heading.anchorLabel

Read-back javobida predikat maydoni bo’lmasa verifier field_missing bilan UNKNOWN beradi — ya’ni tasdiq jim ishlamaydi.

// ✅ To'g'ri: maydon har doim bor, qiymati bo'sh bo'lsa ham
out["closed"] = closed // "" bo'lishi mumkin
// ⛔ Noto'g'ri: bo'sh bo'lsa maydon umuman qo'yilmaydi
if closed != "" { out["closed"] = closed }

Read-back yo’q bo’lsa nima bo’ladi

heading.anchorLabel

Bu normal holat — provayderning API’si shunday. Unda:

  • amal ACKNOWLEDGED da qoladi;
  • konnektor L2 darajada qoladi (sertifikatsiya);
  • bu kamchilik emas, halol javob.

Keyingi qadam

heading.anchorLabel