دليل المختبِرين

أين تنقر، وماذا تتوقع.

جولة عملية في كل ميزة من الإصدار v1.0.0-r1.8، للمختبِرين الذين يريدون بناء أشيائهم بأنفسهم: مساحة عمل، معرفة، وكيل مع صندوق رمل للكود، أتمتة مع خطّاف، لوحة معلومات بترشيح متقاطع، نموذج، تطبيق مضمَّن، والمظهر الخاص بالمنصّة. كل فصل مسار نقرات مرقَّم وينتهي بـ ما يجب أن تراه.

12فصلاً، كلٌّ منها مسار نقرات
10حالات رفض تُختبر عمداً
4لغات تتحدثها المنصّة
0خطوات تتطلب حضور موظفي AANCER
قبل أن تبدأ

الأسماء بالخط العريض هي التسميات على الشاشة.

تسميات واجهة المنتج مكتوبة بالإنجليزية في هذا الدليل عمداً، كما تظهر في اللغة الافتراضية للتثبيت؛ ويمكن لحزمة تراكب لغوي ترجمتها إلى لغتك.

جولة عملية في كل ميزة من الإصدار v1.0.0-r1.8، كُتبت للمختبِرين الذين لديهم مقعد على تثبيت ويريدون بناء أشيائهم بأنفسهم: مساحة عمل، معرفة، وكيل مع صندوق رمل للكود، أتمتة مع خطّاف، لوحة معلومات بترشيح متقاطع، نموذج، تطبيق مضمَّن، والمظهر الخاص بالمنصّة. كل فصل مسار نقرات مرقَّم وينتهي بـ ما يجب أن تراه. إن لم ترَه فهذا اكتشاف — دوِّنه.

الأسماء بالخط العريض هي التسميات كما تظهر على الشاشة بالضبط (باللغة الافتراضية، الإنجليزية). للتنقّل الجانبي مجموعتان: Work (Home, Chat, Knowledge, Automations, Approvals, Activity & Results, Dashboards, Agents) وConsole (Console Home, Monitoring, Governance, Identity, AI Gateway, Agent Administration, Connectivity, Platform Settings, Marketplace). مبدّل مساحة العمل هو الزر الكبسولي في أعلى الشريط الجانبي؛ ومعظم ما تنشئه يعيش في مساحة العمل المحدّدة هناك.

المقاعد المستخدمة أدناه: Platform Admin لكل ما هو تحت Console؛ و*Workflow Author* أو Knowledge Worker لجانب Work. إذا غاب زرٌ ما فمقعدك يفتقر إلى الصلاحية — وهذا مقصود، ويستحق أيضاً مطابقته مع الدور الذي مُنحت إياه (Identity → Roles & Access).

---

الفصول الاثنا عشر

ابنِه بنفسك، ثم حاول كسره.

1دقائقك العشر الأولى: مساحة عمل وسياسة بياناتها

  1. Console Home → Identity → Workspaces → New workspace (أو /admin/workspaces/new).
  2. سمِّها test-<اسمك>. اضبط Data sovereignty policy على Local only (لا يجوز أن يذهب شيء إلى نموذج سحابي) أو Local + cloud allowed. اضبط Default model tier.
  3. أضف نفسك عبر Add member. Save changes.
  4. انتقل إليها من مبدّل مساحة العمل.

ما يجب أن تراه: يعرض الزر الكبسولي مساحة عملك مع تلميح «Local only · cloud blocked» أو «Local + cloud»؛ وتعرض Home مساحة عمل فارغة في لمحة.

جرّب هذا: مع Local only، اذهب إلى Chat واختر المستوى Cloud Reasoning واسأل أي شيء. ستحصل على رفض سيادي لا على إجابة. ويعرض Governance → Audit log هذا الرفض.

2المعرفة: رفع، بحث، اقتباس

  1. Knowledge → Create knowledge set → سمِّها. افتحها.
  2. Upload documents (أسقط الملفات: PDF, DOCX, XLSX, TXT, MD, HTML) أو Ingest URL → Scrape & Index. ارفع أيضاً ملف PDF ممسوحاً ضوئياً.
  3. انتظر Indexed. استخدم Search this knowledge set….
  4. اذهب إلى Chat واطرح سؤالاً تجيب عنه المستندات.

ما يجب أن تراه: تحمل الإجابة اقتباسات؛ والنقر على أحدها يفتح المقطع. ملف PDF الممسوح إمّا يُفهرَس (نموذج رؤية مُعدّ) أو يخبرك عند الرفع بأن استخراج النص يحتاج إلى نموذج رؤية — لا مجموعة فارغة بصمت أبداً. زميل ليس عضواً في مساحة عملك لا يرى المجموعة ولا يحصل على إجابات منها.

3الدردشة: حساب دقيق ورسوم بيانية

  1. Chat، في أي مساحة عمل. اكتب: «ما هو 2 أس 64، بالضبط؟»
  2. فعّل وضع الحساب (يعرض المؤلّف Compute mode on — your next message is computed exactly in the sandbox) وأرسل الرسالة مجدداً.
  3. اكتب «Q1 12, Q2 18, Q3 15, Q4 22 — رسم بياني شريطي للإيرادات الفصلية» واستخدم Visualize data → Bar.
  4. على الرسم البياني استخدم Pin to dashboard (يتطلب Build dashboards).

ما يجب أن تراه: الخطوة 1 قد تكون تقديراً؛ الخطوة 2 هي 18446744073709551616، محسوبة في صندوق الرمل، ويعرض تتبّع التشغيل (Agent Administration → Runs) الكود المنفَّذ. الخطوة 3 ترسم رسماً بيانياً بقيم عند التحويم وتصدير PNG/SVG؛ والخطوة 4 تطلب لوحة معلومات ويحطّ الرسم البياني فيها كعنصر واجهة له مجموعة بياناته الخاصة.

4الوكلاء: تصميم، السماح بالأدوات، اعتماد، تشغيل، إلغاء

  1. Agents → Create agent (أو Agent Administration → Composer). سمِّه، اختر Default persona، واضبط Workspace scope على مساحة عملك.
  2. Allowed tools: علّم Search knowledge و*Show a table, chart or KPI* و*Append to dataset*. علّم Run code إذا كانت رخصتك تشمل صندوق الرمل (وإلا فستقول الأداة Requires licence).
  3. Posture: Sovereign / Mixed / Permissive. Model tier ceiling وMax USD / run. Create agent.
  4. لاستخدام صندوق رمل الكود يجب أن تسمح به مساحة العمل: Identity → Workspaces → مساحة عملك → Agentic tool access → Run agent-written code (sandboxed)Save changes.
  5. الاعتماد: Agent Administration → Certification+ Certify agent (يحتاج إلى CA للمنصّة؛ إن قالت الصفحة Generate a platform CA first فافعل ذلك مرة واحدة). اختر الوكيل والنطاق (الأدوات التي علّمتها) وسقف التصنيف وتاريخ الانتهاء → Issue passport. تعرض بطاقة الوكيل الآن Certified. (يمكن لـ CA خارج المنصّة التوقيع بدلاً من ذلك: Export cert request في Agent Designer، ثم Import agent certification token تحت Certificates.)
  6. تحدّث مع الوكيل: اطلب منه حساب شيء بدقة، ثم عرض النتيجة كجدول.
  7. اطلب منه شيئاً خارج أدواته المسموح بها (مثلاً الكتابة في مجموعة بيانات لم تسمح بها). ثم ألغِ الاعتماد: Agent Administration → Certificates → شهادة الوكيل → Revoke.

ما يجب أن تراه: يظهر جدول الوكيل كبطاقة في الدردشة مع زر Pin to dashboard؛ يُرفض الطلب الخارج عن النطاق ويعرض تتبّع التشغيل استدعاء أداة denied مع القاعدة؛ بعد الإلغاء تُرفض محادثة جديدة فوراً وتتوقف المحادثة الجارية خلال 30 ثانية. الوكيل ذو الوضعية Sovereign يرفض تنفيذ الكود في مساحة عمل سيادية بغضّ النظر عن المفتاح.

5الأتمتة: سير عمل مع موافقة وخطوة Publish result

  1. Automations → Design workflow (Designer). Add trigger → اختر واحداً (مثل Webhook أو Schedule). Add next stepAI step (موجّه، Model tier، Data classification).
  2. Add next step → Approval → حدّد Approvers.
  3. Add next step → Code (JavaScript في العامل المعزول) يعيد صفوفاً، مثل return { rows: [{date: '2026-09-01', line: 'U1', passengers: 120}] }.
  4. Add next step → Publish result → اختر مجموعة بيانات أو أنشئها، وضع الكتابة Append، والصفوف {{code.rows}}.
  5. Publish. عد إلى Automations → Active واستخدم Run now. وافق عليه تحت Approvals.
  6. Automations → History → افتح التشغيل.

ما يجب أن تراه: مدخلات كل خطوة ومخرجاتها؛ تعرض الموافقة من قرّر ومتى؛ للتشغيل تبويب Published rows؛ ويعرض Dashboards → Datasets الصفوف الجديدة. جرّب زر ✨ Help me build في Designer: صِف أتمتة في جملة واحدة ثم Render on canvas.

6الخطّافات: التفاعل مع ما يحدث

  1. في Designer أنشئ سير عمل ثانياً مشغّله When an event happens، والحدث dataset.rows.published. أضف خطوة واحدة (AI step يلخّص {{trigger.payload}}). Publish.
  2. Automations → Hooks → New hook: عنوان، Event dataset.rows.published، Filter payload.datasetId eq <معرّف مجموعة بياناتك> (استخدم Test filter على الحمولة النموذجية)، Handler = سير العمل من الخطوة 1. Enable.
  3. شغّل سير عمل الفصل 5 مرة أخرى (أو استورد ملف CSV إلى مجموعة البيانات).
  4. افتح Deliveries الخاصة بالخطّاف.

ما يجب أن تراه: 1 delivered، ورابط View run، وتشغيل المعالج في History. عطّل سير عمل المعالج وشغّل مجدداً: يعرض الخطّاف handler paused وتفشل عمليات التسليم بصدق مع Retry. في Deliveries → Replay events اختر نافذة زمنية، ثم Preview، ثم Replay N — تحمل عمليات التسليم المعادة شارة replayed #n ويبدأ كل منها تشغيلاً جديداً واحداً بالضبط.

7لوحات المعلومات: مجموعات البيانات، نماذج الأعمال، عناصر الواجهة، الترشيح المتقاطع، النماذج

مجموعات البيانات

  1. Dashboards → Datasets → New dataset: عنوان، Columns (مثل date date، line string، passengers integer، occupancy number)، Keep rows for (days) = 90. Create dataset.
  2. افتحها → Import CSV (وضع الكتابة Upsert by key أو Append).

ما يجب أن تراه: عدد الصفوف، ومدة الاحتفاظ، وشريط الحصة. في الشبكة: اسحب حافة عمود لتغيير عرضه، واسحب رأس عمود لإعادة الترتيب، Search in table (Ctrl/Cmd-F)، حدّد نطاقاً واضغط Ctrl/Cmd-C للنسخ إلى جدول بيانات؛ الأرقام محاذاة إلى اليمين؛ ويبقى العمود الأول ثابتاً في الجداول العريضة.

لوحة معلومات

  1. Dashboards → New dashboardCreate. أنت الآن في المحرّر.
  2. Add widget: Type KPI؛ Business model (يُنشأ واحد لكل مجموعة بيانات)؛ علّم مقياساً؛ في لوحة الخصائص اختر Measure؛ Add. كرّر مع Type Chart: علّم مقياساً وبُعداً، اختر X field / Y field من المنتقيات، وعلّم Show values on hover. تحت Interactions اضبط Clicking a bar or slice filters other widgets by على بُعدك. في KPI علّم Listen to selections from other widgets.
  3. اسحب عناصر الواجهة من رأسها؛ غيّر حجمها من أي حافة؛ ثبّت أحدها بـ Pin ليبقى في مكانه؛ اسحب رقاقة New widget إلى خلية فارغة لإنشاء عنصر هناك مباشرة.
  4. Add filter (مرشّح فترة). Save draft ثم Publish.
  5. افتح لوحة المعلومات المنشورة (هي الآن في التنقّل الجانبي تحت Dashboards). انقر على شريط.

ما يجب أن تراه: تخفت الأشرطة الأخرى، وتظهر رقاقة line: U1 فوق لوحة المعلومات، ويعيد KPI الاستعلام إلى القيمة المرشَّحة، وتمسحها ✕ الرقاقة. Versions تتيح التراجع؛ وRetire تزيل لوحة المعلومات من التنقّل. جرّب ✨ Help me build بجملة مثل «الركاب لكل خط للشهر الحالي، مع الإجمالي»: يُتحقَّق من الاقتراح مقابل النموذج قبل أن تراه.

نموذج

  1. Add widget → Type Form (Adaptive Card). احتفظ بالبطاقة النموذجية أو أضف Input.ChoiceSet وInput.Number مع min/max وAction.ShowCard بحقول إضافية. اختر سير عمل كهدف. Add، Save draft، Publish.
  2. في لوحة المعلومات المنشورة أرسل النموذج فارغاً، ثم بشكل صحيح.

ما يجب أن تراه: يُحظر الإرسال الفارغ في المتصفح برسائل البطاقة نفسها، دون إرسال أي طلب؛ ويعرض الإرسال الصحيح رسالة النجاح ويبدأ سير العمل الهدف (يعرض Approvals أو History التشغيل). يُرفض Share على لوحة معلومات فيها نموذج — النماذج ليست عامة أبداً.

المشاركة

  1. على لوحة معلومات بلا نموذج: Share → Create link (تسمية، ساعات). افتح الرابط في نافذة خاصة.

ما يجب أن تراه: تُعرض لوحة المعلومات للقراءة فقط مع اسم مؤسستك وتاريخ الانتهاء، دون تسجيل دخول؛ وRevoke في الحوار نفسه يُنهيها. (يتطلب علم الرخصة resultsPublicShare و*Share a result*.)

8Marketplace والقوالب

  1. Marketplace → رشّح Type Solution → افتح واحداً → Install → اختر مساحة عمل → Confirm install.
  2. Automations → TemplatesDeploy template.

ما يجب أن تراه: تظهر سير عمل الحل تحت Automations → Active؛ والحل الذي يحمل حزمة لوحة معلومات ينشئ أيضاً لوحته ومجموعات بياناته وخطّافاته في مساحة العمل المختارة (تنقّل Dashboards).

9الإضافات: اجعل المنصّة تبدو وتتحدث مثلك

كل ما يلي حزمة موقَّعة — ملف zip يحوي بياناً وملفات بيانات، موقَّع بمفتاح تحتفظ به أنت. لا تشغّل المنصّة أبداً كوداً من حزمة.

وقّع حزمتك الأولى

  1. على حاسوبك المحمول مع Node 20: node tools/aancer-pack/cli.mjs keygen --out mykey.key (من حزمة الإصدار؛ ينتج mykey.key وmykey.pub).
  2. اكتب manifest.json (انظر في دليل العميل Authoring a pack للمثال الأدنى؛ ومجلد hexad-ci في الحزمة هو حزمة سمة كاملة يمكنك نسخها).
  3. node tools/aancer-pack/cli.mjs sign manifest.json content/ -o mypack-1.0.0.ancpack --key mykey.key

ثبّتها

  1. Platform Settings → Extensions → Add trust key: معرّف المفتاح (يجب أن يساوي publisher.keyId في بيانك)، التسمية، ومحتوى mykey.pub.
  2. Import pack → اختر ملف .ancpackImport. اقرأ ملخّص التحقق وأي تحذيرات. Configure & activate → اربط المعاملات (عادةً مساحة عمل) → Activate.

ما يجب أن تراه: حزمة استوردتها قبل إضافة مفتاح الثقة تُرفض بـ PACK_SIGNER_UNKNOWN؛ وبعدها «Bundle verified»، والعناصر مدرجة مع حالتها، وبعد التفعيل يظهر كل ما تعلنه الحزمة: السمة مطبّقة، مدخلات التنقّل، بطاقات Home، لوحات المعلومات، الخطّافات (managed by pack). Retire pack يزيل كل ذلك ويعيد المنتج الأصلي؛ وإصدار أحدث من معرّف الحزمة نفسه يُستورد كترقية ويمكنك التراجع.

ما يمكن أن تحمله الحزمة

العنصرما يفعلهأين يظهر
theme v2ألوان لكل كتلة سمة (light/dark/…)، خطوط مستضافة ذاتياً، شعارات، أيقونة الموقع، لون/شعار/تذييل صفحة تسجيل الدخول، إطار البريد الإلكتروني؛ على مستوى التثبيت أو لكل مساحة عملفي كل مكان؛ تصبح صفحة Branding managed by pack
localeمفرداتك فوق نصوص en/de/es/arالواجهة، بما فيها صفحة تسجيل الدخول
dataset، model، widget، dashboardطبقة نتائج كاملةDashboards
hookاشتراك في حدثAutomations → Hooks
functionدالة JavaScript أو Python (معزولة) تُستخدم كمقياس أو إعداد كود مسبق أو أداة وكيلالنماذج، Designer، الوكلاء
chipأزرار إجراء سريع في مؤلّف الدردشةChat
linkرابط خارجي في تنقّل DashboardsDashboards
cardبطاقة على Home («From your packs»)Home
appأحد تطبيقات الويب الخاصة بك داخل مركز DashboardsDashboards (يتطلب embeddedApps)

مظهرك من دون حزمة

Platform Settings → Branding: Platform name، Login page tagline، Primary color، Secondary color، Logo URL، Favicon URL، Login background color، Default theme. تعرض Live preview صفحة تسجيل الدخول. هذا هو المسار ذو الحقول الستة بلا توقيع؛ وحزمة السمة تفعل كل هذا بالإضافة إلى الخطوط والرموز لكل كتلة والمتغيرات لكل مساحة عمل.

10التطبيقات المضمَّنة: تطبيقك الخاص داخل المركز

  1. في حزمتك أضف عنصر app: url (https، مع السماح بـ {{workspace}}origin، capabilities (مثل read:me، read:dataset:<id>، write:dataset:<id>، navigate، notifyegress.hosts. استورد وفعّل كما في الفصل 9.
  2. Platform Settings → Extensions → افتح الحزمة → Manage app: اقرأ الأصل والقدرات، علّم الإقرار، Approve؛ ثم Approve لكل مضيف خروج.
  3. يجب أن يجيب تطبيقك بـ Content-Security-Policy: frame-ancestors <أصل منصّتك> وألا يرسل X-Frame-Options: DENY.
  4. Dashboards → يظهر تطبيقك تحت مجموعته مع رمز Embedded app. افتحه.

ما يجب أن تراه: قبل الموافقة بطاقة صادقة Needs approval؛ إن لم يسمح تطبيقك بالتضمين، the app has not allowed this platform to embed it مع Retry؛ وعندما يسمح، يُحمَّل تطبيقك ويتلقى رمزاً قصير العمر عبر الجسر (ليس في عنوان URL أبداً). سجّل الخروج في تبويب آخر: يعرض الإطار session revoked خلال 15 ثانية. Rotate secret يعرض سر الاستبطان الجديد مرة واحدة. يُدقَّق كل استدعاء للجسر تحت app.capability.*.

11الحوكمة: أثبت أن ذلك حدث

  1. Governance → Audit log: رشّح حسب الإجراء (agent.tool.call، hook.delivered، extension.pack.activated، sovereignty.*).
  2. Governance → Records of processing → صدّر؛ Compliance → التقارير التنظيمية.
  3. Console Home → Monitoring: عمليات التشغيل، التكلفة، الأحداث الأمنية.

ما يجب أن تراه: كل إجراء ذي أثر من الفصول أعلاه، مع من ومتى ومساحة العمل والنتيجة؛ الإجراءات المرفوضة كحالات رفض؛ ولا بيانات على مستوى الصفوف في السجل أبداً. تُبلغ نقطة التحقق من سلسلة التدقيق (/api/admin/compliance/audit-chain/verify) عن ok: true.

12أشياء يجب أن تُرفض — اختبرها عمداً

جرّبالمتوقع
مستوى سحابي في مساحة عمل Local-onlyرفض سيادي، مدقَّق
أداة وكيل خارج جواز سفرهdenied في التتبّع، لا شيء نُفّذ
أداة الكود بلا مفتاح مساحة العمل أو الرخصةالأداة غائبة أو Requires licence
مشاركة لوحة معلومات فيها نموذجمرفوض مع السبب
استيراد حزمة موقَّعة بمفتاح مجهول، أو حزمة معدَّلةPACK_SIGNER_UNKNOWN / عدم تطابق التجزئة
سمة بنص أبيض على أبيضمرفوضة لعدم المقروئية؛ الأزواج منخفضة التباين تحذيرات
خطّاف على سير عمل بلا مشغّل Eventيُحفظ disabled مع HANDLER_INACTIVE
إرسال نموذج فارغ أو خارج النطاقمحظور في المتصفح، دون أي طلب
تطبيق مضمَّن بلا frame-ancestorsبطاقة رفض صادقة مع Retry
فتح مجموعة معرفة لمساحة عمل لست فيها403 / حالة فارغة صادقة

كل رفض أعلاه ميزة. أبلغ عن رفض لم يحدث، أو عن رفض حدث بلا سجل تدقيق.

وجدت شيئاً لا يتطابق؟

هذا اكتشاف. دوِّنه على لوحتك مع رقم الفصل وما نقرته وما رأيته؛ كل رفض لم يحدث، أو حدث بلا سجل تدقيق، هو أثمن تقرير يمكنك إرساله.