
نظام تشغيل ضمان العملاء. أجب على استبيانات الأمان التي يرسلها إليك عملاؤك، مرة واحدة فقط.
أجب على استبيانات الأمان التي يرسلها عملاؤك، مرة واحدة.
كل شركة تتعامل مع بيانات العملاء تتلقى الطلبات نفسها مرارًا وتكرارًا: استبيانات الأمان، وتقييمات الخصوصية، ومراجعات مخاطر الموردين، والعناية الواجبة في المشتريات، وطلبات الأدلة. تجيب معظم المؤسسات عليها يدويًا — جدول بيانات من العميل، ومجلّف من السياسات، وسلسلة رسائل بريد إلكتروني، وذاكرة أحدهم لما قاله في المرة السابقة.
يحوّل CAOS ذلك إلى نظامٍ مرجعيٍّ معتمد (system of record). تتحول الاستبيانات إلى أعمال مهيكلة قابلة للإجابة. وتصبح الإجابات المكتملة ووثائق الامتثال لديك مستودعًا معرفيًا قابلًا للبحث والاستشهاد. يبدأ الاستبيان التالي مما قلته سابقًا، مع إمكانية تتبع كل ادعاء إلى المستند أو الإجابة السابقة التي جاء منها.
إنه يُستضاف ذاتيًا (self-hosted). تبقى سياساتك وإجاباتك واستبيانات عملائك على بنيتك التحتية.
الحالة: v0. يعمل CAOS في الإنتاج، لكن هذا المستودع أصبح عامًا للتو. لا تزال الواجهات والمخطط (schema) والإعدادات قيد التغيير. المساهمات الخارجية غير مفتوحة بعد — انظر المساهمة.
يقرأ الاستبيانات دون تخمين. ارفع ملف XLSX الخاص بالعميل وسيعرضه CAOS بأمانة — الأوراق والصفوف والخلايا والأعمدة المخفية وقوائم التحقق المنسدلة. ثم تحدد الصفوف القابلة للإجابة والخلايا المطلوب ملؤها، في نطاقات بدلًا من خلية واحدة في كل مرة. لا يوجد محلل (parser) مخصص لكل عميل، لأنه لا يوجد معيار: قد يكون الصف الغامق سؤالًا، وقد يكون العمود الفارغ هدف الإجابة، وكل استدلال (heuristic) يُصيب مع دفتر عمل يُخطئ بثقة مع آخر.
يبني مستودعًا معرفيًا من العمل الذي أنجزته بالفعل. عند إغلاق استبيان، تُنشر صفوفه المُجابة كأسئلة وأجوبة قابلة لإعادة الاستخدام. وتصبح السياسات والشهادات والتقارير المرفوعة مقاطع قابلة للاستشهاد. كلاهما مُصدَر بإصدارات غير قابلة للتغيير، لذا فإن الإجابة التي أرسلتها في الربع الماضي تظل تفسّر نفسها في مقابل المستند الذي كان ساريًا حينها.
يجد الإجابة السابقة الصحيحة. يجري الاسترجاع البحثَ المعجمي والدلالي معًا، ويدمج ترتيبيهما، ويعيد ترتيب أفضل المرشحين. لغة الامتثال تحتاج إلى كليهما: رموز دقيقة مثل "SOC 2 Type II" تشوّهها التضمينات (embeddings)، وإعادة صياغات يفوّتها البحث بالكلمات المفتاحية تمامًا.
يصوغ إجابات مُسنَدة. اختياري. يبحث النموذج في مستودعك المعرفي عبر أدوات محدودة ومدرجة في قائمة مسموحة، ويصوغ إجابة مع استشهادات — بالإضافة إلى تسمية توضح مصدر سلطتها: Knowledge grounded، أو Mixed، أو General guidance، أو Based on current answer. إجابة General guidance لا تدّعي أي شيء عن مؤسستك، وتقول ذلك صراحةً.
يجيب في Google Chat. أمر الشرطة المائلة /ciso يصل إلى نفس مستودع المعرفة المُسنِد، مع رابط إلى محادثة مستمرة في تطبيق الويب.
يصدّر النتائج إلى دفتر عمل العميل نفسه. تُكتب الإجابات في بنية الملف الأصلية، في الخلايا التي حددتها — وليس في نسخة تقريبية على شكل CAOS منها.
يسجّل كل شيء. سجل تدقيق للكتابة فقط (append-only) مع عدم قابلية للتغيير تفرضها قاعدة البيانات، ويتضمن قيم الإجابات الدقيقة قبل التعديل وبعده.
يُنظَّم CAOS في تسع وحدات نطاقية (domain modules). ثلاث منها — الأدلة (Evidence)، والمعرفة (Knowledge)، والمهام (Tasks) — عامة (global): لا تملكها المشاريع، لأن قيمتها تنبع من عملها عبر التعاملات.
| الوحدة | تملك | التوثيق |
|---|---|---|
| الهوية (Identity) | أوضاع المصادقة، الجلسات، الأدوار، المستخدمون، ربط الموضوعات الخارجية | الوثائق |
| المشاريع (Projects) | حاوية التعامل؛ سلسلة الإغلاق | الوثائق |
| الاستبيانات (Questionnaires) | قراءة دفاتر العمل، تحديد الصفوف، مساحة عمل الإجابة، التصدير | الوثائق |
| الأدلة (Evidence) | المستودع العام لمواد الامتثال القابلة لإعادة الاستخدام | الوثائق |
| المعرفة (Knowledge) | المصادر، المقاطع، التضمينات، الاسترجاع، الاستثناءات، الاستشهادات | الوثائق |
| الذكاء الاصطناعي (AI) | محادثات CISO، التوليدات، تسميات الإسناد | الوثائق |
| الدردشة (Chat) | التحقق من Google Chat، ربط الهوية، التسليم | الوثائق |
| المهام (Tasks) | العمل البشري المطلوب عبر الوحدات | الوثائق |
| التدقيق (Audit) | سجل الأحداث للكتابة فقط | الوثائق |
Internet
│
┌─────┴─────┐
│ nginx │ TLS · static frontend · /api proxy
└─────┬─────┘
┌──────────────┼──────────────┐
│ │ │
┌─────┴─────┐ ┌─────┴─────┐ ┌─────┴──────┐
│ Frontend │ │ API │ │ Taskiq │
│ React │ │ FastAPI │ │ workers │
│ static │ │ :18800 │ │ │
└───────────┘ └─────┬─────┘ └─────┬──────┘
│ │
┌─────┴──────────────┴─────┐
│ │
┌─────┴──────┐ ┌──────┴─────┐
│ PostgreSQL │ │ Redis │
│ pgvector │ │ queue+cache│
└────────────┘ └────────────┘
│
┌─────┴─────┐
│ Providers │ Bedrock · local models · Google Chat
└───────────┘
الواجهة الخلفية (Backend) — Python 3.12+، FastAPI، SQLAlchemy 2 غير المتزامن، PostgreSQL مع pgvector، Redis، عمال Taskiq. تنقسم كل وحدة إلى domain → application → infrastructure → presentation، مع تبعيات أحادية الاتجاه. لا يعتمد domain على أي شيء.
الواجهة الأمامية (Frontend) — React 19، TypeScript، Vite، Tailwind v4، shadcn/ui، Zustand. توجد حالة الجلسة والغلاف (shell) على مستوى التطبيق في src/app؛ وتوجد حالة الميزات وذاكرة التخزين المؤقت للخادم في مخازن الميزات (feature stores)؛ وتوجد مهام سير عمل الصفحات طويلة الأمد في وحدات تحكم الميزات (feature controllers).
توجد قناتا الاسترجاع كلتاهما في PostgreSQL. لا توجد قاعدة بيانات متجهات منفصلة — مخزن واحد يعني حدّ معاملةٍ واحدًا ونسخة احتياطية واحدة.
يُبقى الموردون الخارجيون على مسافة آمنة. يفصل كل تكامل بين بروتوكول المنصة (Platform Protocol) — ما يتوقعه CAOS، بلغة المنتج — وبروتوكول المحول (Adapter Protocol)، وتنفيذ البائع (Vendor Implementation) — وهي الطبقة الوحيدة التي تستورد SDK. لهذا السبب تعمل التضمينات وإعادة الترتيب على نماذج محلية مثبتة أو على Bedrock دون أن يكون أي كود تطبيقي على علمٍ بأيهما.
التفاصيل: البنية المعمارية · حدود التكامل
يصبح المستند قابلًا للاسترجاع. رفع → إصدار غير قابل للتغيير → مهمة استيعاب دائمة → commit → إرسال إلى عامل → استخراج مقاطع بطول ≤1,500 حرفًا، يحتفظ كل منها بمعرّف موضع للاستشهاد (صفحة PDF، وفقرة DOCX، ورقة/صف/خلية XLSX) → توليد التضمينات → قابل للبحث. تنفّذ المهمة عملية commit قبل الإرسال، لذا يتحول فشل قائمة الانتظار إلى حالة مرئية قابلة لإعادة المحاولة بدلًا من صف معلّق غير مرئي.
يصبح الاستبيان عملًا مُجابًا عنه. رفع → عروض صفوف أمينة → تحدد الصفوف وأهداف الإجابة → عنصر مساحة عمل واحد لكل صف قابل للإجابة، يشير كلٌّ منها إلى خلاياه المصدرية الدقيقة → حفظ تلقائي للمسودات → إكمال صريح عبر مقارنة-وتعيين (compare-and-set) للمراجعة المتوقعة، بحيث يحصل التبويب القديم على 409 بدلًا من الكتابة فوق عمل زميل.