الموافقة على الدليل
يضاف دليل - بوابة توافقية إلى أي خطوة: الرد عن طريق مجموعة التلقيم، أو البريد الإلكتروني، أو API، وقيم التحرير على الإنترنت، والاعتراض على التوقيت.
يدوياً، "ينتظر من شخص ما أن يؤكد قبل أن يستمر" كخطوة مُحدّدة: عندما يصل تنفيذ إلى خطوة مُحدّدة به، يتوقّف ويُدير الجسم فقط بعد الموافقة. وحتى ذلك الحين، لا يقوم النظام بأي عمل من أجل تلك الخطوة أو أي شيء من هذا القبيل.
الاتحاد
- step: apply_changes
agent: executor
input: "把已审核的变更应用到线上"
manual_approval:
enabled: true
approvers: # 平台用户 ID;留空 = 发起人 / 有执行权限者可批
- "usr_team_lead"
timeout: 86400 # 秒;24 小时无人批复自动拒绝
approval_message: |
请确认是否应用本轮变更。
拒绝或超时不会做任何线上修改。يمكن أن يربط أي خطوة (الجناح، الرمز، التدفق الفرعي، الخ)، وغالبا ما يستخدم على خطوة رمز الوزن الخفيف التي تطبع فقط الحالة،
المعلمات
| الميدان | النوع | تقصير | الوصف |
|---|---|---|---|
enabled | boolean | — | ما إذا كان سيمكن بوابة الموافقة (مطلوبة) |
approvers | string[] | [] | (ب) تحديد هوية المستخدمين. فعندما لا يكون غير فارغ، لا يمكن للمستعملين المدرجين في القائمة والمسميات أن يقرروا - ولا حتى الشخص الذي بدأ التنفيذ، الذي يُنفّذ بطبيعة الحال الفصل بين الواجبات؛ وعندما تكون فارغة، يمكن للشخص الذي بدأ التنفيذ أو أي متعاون مع التنفيذ أن يقرر سير العمل |
timeout | long | 3600 | وقت مستقطع في ثواني إذا لم يقرر أحد بحلول الموعد النهائي، فإنه تم رفضه آلياً وعلامة (تيميتد) |
approval_message | string | null | المذكّرة المبيّنة إلى المستعرض، التي ترد على بطاقة الموافقة وفي رسائل إلكترونية للإخطار |
reviewable_actions | array | [] | مجموعات الموافقة المستقرة، حيث يمكن للمستعرض أن يختار قيماً فرعية ومحررة قبل الموافقة عليها (انظر أدناه) |
عملية الموافقة
- عندما يصل تنفيذ إلى خطوة مهيأة باليدالية، يتوقّف ويصبح وضع تنفيذ
- يُنشأ سجل للموافقة ويبدأ وقت الاستراحة؛ ويتلقى الائتلاف موافقة في الوقت الحقيقي - طلب على شبكة ويب سوكيت، ويمكن للمستعرض أيضا أن يتلقى إخطارا بالبريد الإلكتروني
- The reviewer decides through one of three channels: the in-app approval list, a one-click link in a message, or the API
- الموافقة على الخطوة التالية: رفض الخطوة يُعامل على أنها فاشلة (يُمكنك إرسال جهاز للإخطار على الفشل)؛
القناة 1: قائمة الموافقة على الطلبات
الـ (كونول)الموافقةوتُدرج جميع الموافقات المرئية لك، مع آراء البطاقات والمائدة وتصفية الحالة. يمكنك أن ترفق ملاحظة عند الموافقة أو رفضها، والمذكرة تُحفظ في سجل الموافقة. وتتوسع الموافقات التي تم تشكيلها بأفعال قابلة للاستعراض إلى جدول قابل للاختيار والتقسيم.
القناة 2: الإخطارات بالبريد الإلكتروني والروابط ذات البقعة الواحدة
وبإخطارات بالبريد الإلكتروني، يتلقى المستعرض (الشخص الذي بدأ التنفيذ عندما لا يحدد المصادقون) رسالة إلكترونية في عنوان حسابهم تتضمن: سير العمل وأسماء الدرجات، والهوية تنفيذية، وعدد الإجراءات التي يمكن استعراضها، والإخطار بالتوقيت ( " يُرفض في غضون حوالي ساعات من الزمن " )، ونص الموافقة - عرض، ووصلة إلى قائمة الموافقة.
في الرسائل التي لا يمكن أن تضع مرشدين تقليديين، مثل البريد الإلكتروني، سلاك، و Telegram، يمكنك أيضا أن تدمج وصلة قرار واحدة:
GET https://braidrun.com/api/webhook-trigger/approval/{approvalId}/approve?api_key=dyk_...
GET https://braidrun.com/api/webhook-trigger/approval/{approvalId}/reject?api_key=dyk_...وتوثَّق على الرابط بمفتاح " API " (APPROVAL RESPOND scope)، الذي وُضع في بارامتر " Api key query " . ولمنع الزناد العرضي عن طريق حزمة مناظرة الوصلة (الثغرات السائلة، والتجهيز عن طريق البريد الإلكتروني) لا تصدر الأولى سوى صفحة تأكيد ولا تؤدي أي إجراء؛ ولا يُتخذ القرار إلا عندما تضغط على زر التأكيد، ويكرر الطلب مع التأكيد = 1. The page carries no-store and noindex headers to prevent caching or search-engine replay.
القناة 3:
وتوفِّر مبادرة الموافقة المسبقة عن علم المفتوحة (V1) 5 نقاط نهائية للموافقة، وتتطلّب جميعها النطاق المحدد للبرمجيات المعتمدة في إطار برنامج " APPROVAL RESPOND " :
| نقطة النهاية | الغرض |
|---|---|
GET /api/v1/approvals | قائمة الموافقة، قابلة للترشيح حسب الحالة |
GET /api/v1/approvals/{id} | تفاصيل الموافقة |
GET /api/v1/approvals/execution/{executionId} | ابحثوا عن الموافقات المرتبطة بالاعدام |
POST /api/v1/approvals/{id}/approve | الموافقة؛ يمكن للهيئة أن تشمل التعليق وتحرير المواد |
POST /api/v1/approvals/{id}/reject | Reject; the body can include comment |
# 批准(可附备注)
curl -X POST https://braidrun.com/api/v1/approvals/<approval-id>/approve \
-H "Authorization: Bearer dyk_..." \
-H "Content-Type: application/json" \
-d '{"comment": "确认执行"}'
# 拒绝
curl -X POST https://braidrun.com/api/v1/approvals/<approval-id>/reject \
-H "Authorization: Bearer dyk_..." \
-H "Content-Type: application/json" \
-d '{"comment": "本轮预算已用完"}'وتقدم شركة edited Items المجموعة الفرعية المختارة/المحررة باسم المجموعة، مطابقة لهيكل استمارة الموافقة القابلة للتجزئة في القسم التالي؛ وحذفها توافق على كل شيء.
استمارات الموافقة القابلة للتداول (الإجراءات القابلة للاستعراض)
Some approvals are per-recommendation: out of a batch of recommendations you run only some, and a few rows even need value changes. فالإجراءات التي يمكن استعراضها تحول هذه الموافقات إلى جدول - يفحص المستعرض الصفوف التي يتعين تشغيلها، ويحرر الأعمدة التي تعتبر قابلة للتجزئة: صحيحة مباشرة )على سبيل المثال تغيير العطاءات(، ثم يوافق على النقر.
manual_approval:
enabled: true
timeout: 86400
approval_message: |
请审核本轮调价建议:可勾选要执行的行,并直接修改建议出价。
reviewable_actions:
- name: raise_bid
title: 加价建议
source_var: raise_bid_file # 变量值 = 建议清单 JSON 数组文件路径
output_var: raise_bid_approved_file # 批准后 = 勾选/编辑后的子集文件路径
key_field: item_id
columns:
- { key: item_name, label: 名称, editable: false }
- { key: current_bid, label: 当前出价, type: number, editable: false }
- { key: proposed_bid, label: 建议出价, type: number, editable: true }
- { key: reason, label: 理由, editable: false }name— الاسم الداخلي للمجموعة، أيضاً إستخدم كبديل للمنتجات (بعد الموافقة على المحركات يكتبsource_var— Points to a change whose value is the recommendation list generated by an upstream step (the path to a JSON array file)output_var— (أ) متغير بعد الموافقة، تكون قيمته هو الطريق إلى ملف المجموعة الفرعية المختار/المحرر؛ وبدلاً من ذلك، قرأه خط التنفيذ في المجرى السفلي، ولن يجهز سوى الصفوف الموافق عليهاkey_field— The row-identity field, used to align rows after editing; if absent, rows are aligned by array indexcolumns— تعاريف طاولات الطاولة، الأعمدة المستقرة يمكن تغييرها من قبل المستعرض والنوع:
The submitted subset is validated server-side: data that does not belong to any group is filtered out; when key field is defined, each row must map to an entry in the original list, so fabricating a nonexistent row can't get through; columns with editable: false keep their original values, and changes to them are ignored. عندما لا تدقق المجموعة، صفيفة فارغة مكتوبة، وخطوة أسفل المجرى يتعامل معها على أنها "مفرغة، تخطي"
الرفض والتوقيت: صفر من التغييرات
والوعد الأساسي لبوابة الموافقة هو أن النظام لا يتخذ أي إجراء قبل الموافقة. عند الرفض أو الاستراحة
- الجسد المخطوف لا يركض، و الخطوات التي تعتمد عليها ليست محفزة
- يمكنك استخدام فرع على الفشل لإرفاق "رفض الموافقة" أو خطوة المحفوظات
- يُرفض النظام تلقائياً الوقت الذي يُسجل فيه المُقرِّر كنظام؛ وكل قرار للموافقة (بما في ذلك المُقرِّر والوقت والملاحظة) يُكتب إلى سجل مراجعة الحسابات
سجلات الموافقة مخزنة بشكل دائم وبعد إعادة بدء الخدمة، إلى حين إعادة الموافقة عليها، لا تزال ساعة الاستراحة تدوم الموعد النهائي الأصلي، ويمكن للمستعرضين أن يقرروا كالعادة.