التثبيت والتشغيل

يتضمن هذا المستند المعلومات اللازمة لتثبيت برنامج Parsewise وتشغيله في البنية التحتية للعميل: مكونات التوريد، ومتطلبات البيئة، والإعداد، وإجراءات التثبيت والتشغيل.

1. مكونات التوريد

المكوّنالمحتوى
صورة الخادمخادم الواجهة البرمجية ومعالج الطوابير ومجدول المهام: صورة واحدة تُشغَّل بثلاثة نشرات منفصلة بأوامر تشغيل مختلفة
صورة لوحة التحكمواجهة ويب لموظفي المشروع ومسؤوليه
صورة خدمة التضمينخادم استدلال مع نموذج التضمين deepvk/USER-bge-m3 (بُعد المتجه 1024) المدمج في الصورة؛ تُشغَّل من هذه الصورة مجموعتان — للفهرسة ولاستعلامات البحث
الأداةحزمة ثابتة widget.iife.js وwidget.css لوضعها على الموقع أو في الحساب الشخصي
بيانات Kubernetesملفات مستودع k8s: manifests/00-namespace.yaml، 02-backend.yaml، 02a-embedder-index.yaml، 02b-embedder-query.yaml، 03-celery.yaml، 03a-backend-domains-rbac.yaml، 04-admin-frontend.yaml، 06-ingress.yaml، 06a-ingress-shops.yaml، وقالب الأسرار docs/delivery-secrets-template.yaml ونموذج سياسة الوصول إلى الحاوية storage/media-bucket-policy.json، إضافة إلى ملف مستودع الخادم k8s/custom-domains.yaml — توجيه النطاقات الخاصة بالمشاريع: النشرات، الخدمات، التوجيه، التوسع التلقائي؛ حساب معالج الطوابير وصلاحياته لربط النطاقات الخاصة بالمشاريع
التوثيقهذا المستند، الخصائص الوظيفية، دليل المستخدم والمسؤول

بيانات التوريد هي بيانات التثبيت السحابي لصاحب الحقوق، ومدوَّنة فيها عناوينه وخدماته. قبل تطبيقها يكيّفها العميل مع تثبيته:

  • عناوين الصور — إلى الإصدارات من سجل التوريد؛
  • القيم المكتوبة مباشرة في بيانات الخادم ومعالج الطوابير: FRONTEND_URL، SHOPS_DOMAIN، R2_ENDPOINT، R2_PUBLIC_URL، SMTP_HOST، SMTP_PORT، SMTP_USE_TLS، SMTP_START_TLS — إلى قيمه الخاصة (القيمة في البيان مقدَّمة على القيمة في السر)؛ LLM_MODEL_QUERY — إلى اسم نموذجه أو حذفها؛
  • الإشارات إلى مفاتيح السر yandex-gpt-api-key وyandex-gpt-folder-id وyandex-maps-api-key وإلى السر metrika-credentials — تُحذف: فهي لازمة للتثبيت السحابي فقط، ومن دونها لا تعمل الحاويات في العنقود؛
  • في بيان لوحة التحكم — تُحذف NEXT_PUBLIC_API_URL وNEXT_PUBLIC_YM_COUNTER_ID وتُعيَّن معاملات PARSEWISE_* من القسم 3؛
  • قالب الأسرار — يُملأ بقيم العميل ويُطبَّق؛ ويضم كل الأسرار التي تقرؤها بيانات التوريد، ومنها app-config-full بالمعاملات SECRET_KEY وDOCS_USERNAME وDOCS_PASSWORD وEMAIL_FROM وINGRESS_LB_IP وLLM_BASE_URL؛
  • معاملات الخدمات التي لا يستخدمها العميل — تُحذف: استقبال المدفوعات عبر Robokassa، وYandex Metrica؛
  • نموذج سياسة الوصول إلى الحاوية — يُستبدل فيه اسم الحاوية وحساب الخادم؛ وهو مكتوب لـ Yandex Object Storage، وفي تخزين آخر تُضبط قواعد الوصول نفسها (القسم 2) بأدواته؛
  • لعناوين المشاريع بصيغة مشروع.نطاق — تُصدر شهادة لـ *.نطاق عبر cert-manager مع تحقق DNS01 لدى مزوّد DNS الخاص بالعميل، وتُذكر في 06a-ingress-shops.yaml.

بيانات موقع التسويق والتوثيق والمراقبة ليست ضمن التوريد.

تُسلَّم الصور كأرشيف OCI لتحميلها في سجل العميل أو عبر سجل صور صاحب الحقوق.

تُبنى الصور من مرايا صاحب الحقوق: لا تُنزَّل الصور الأساسية وحزم Python وحزم npm من مستودعات عامة أثناء البناء. لمعالجة الصوت والفيديو تتضمن صورة الخادم ffmpeg من توزيعة Debian. لا يُنزَّل نموذج التضمين أثناء التثبيت والتشغيل. تعمل العمليات في حاويات الخادم ولوحة التحكم بمستخدم غير ذي امتيازات.

2. متطلبات البيئة

المكوّنالمتطلب
المنسّقKubernetes؛ يُشغَّل البرنامج على الإصدار 1.32. تستخدم البيانات واجهات apps/v1 وautoscaling/v2 وnetworking.k8s.io/v1 وrbac.authorization.k8s.io/v1
العُقدمعمارية x86-64 (linux/amd64)؛ تُورَّد المكونات كحاويات ولا تحتاج امتيازات على العقدة: لا وضع مميزًا، ولا وصول إلى نظام ملفات العقدة وشبكتها. نظام تشغيل العقد هو Linux مع بيئة تشغيل حاويات يدعمها Kubernetes، ومنها Astra Linux Special Edition 1.8 وRED OS 8 وALT Linux
خادم المقاييسخادم مقاييس Kubernetes — يعمل التوسع التلقائي وفق حمل المعالج والذاكرة للحاويات
سجل الصورمتوافق مع OCI ومتاح من العنقود
متحكم الدخولingress-nginx أو ما يماثله: TLS، التوجيه حسب أسماء النطاقات، حد جسم الطلب لا يقل عن 100 ميغابايت، مهلات الاتصال والإرسال والقراءة لا تقل عن 300 ثانية — إذ تُنقل إجابة المساعد بشكل متدفق
شهادات TLSيصدرها cert-manager لمتحكم الدخول عبر ClusterIssuer يختاره العميل، بما في ذلك جهة التصديق الداخلية لدى العميل؛ وفي التثبيت السحابي يستخدم صاحب الحقوق جهة تصديق عامة
PostgreSQLقاعدتا بيانات: رئيسية ومتجهية؛ يُشغَّل البرنامج على PostgreSQL 15
pgvectorامتداد في القاعدة المتجهية: يجب أن يتوفر النوع vector؛ ينشئ البرنامج فهارس IVFFlat
Redisوسيط الطوابير والتخزين المؤقت؛ يُشغَّل البرنامج على Valkey 7.2 المتوافق مع Redis
تخزين الكائناتمتوافق مع S3، حاوية واحدة. ترفع لوحة التحكم الملفات إلى التخزين مباشرة من المتصفح عبر رابط موقَّع؛ وعبر الروابط الموقَّعة تحصل اللوحة والأداة أيضًا على ملفات قاعدة المعرفة ومرفقات المحادثات. لذلك يجب أن يكون التخزين متاحًا من متصفحات المستخدمين عبر HTTPS، وأن تسمح قواعد CORS للحاوية بطلبات GET وPUT من عنوان اللوحة. القراءة دون تفويض مسموحة فقط للكائنات العامة — الصور الرمزية، الأغلفة، وسائط المنتجات والملفات الشخصية، صور المراجعات، موارد المهارات: البادئات system/ وusers/ وskills/ وtmp/ وshops/*/avatar/ وshops/*/cover/ وshops/*/bot_avatar/ وshops/*/products/ وshops/*/temp/ وshops/*/reviews/. لا تُقدَّم ملفات قاعدة المعرفة (shops/*/files/) ومرفقات المحادثات (shops/*/chats/) دون تفويض، ولا قائمة كائنات الحاوية كذلك. يحتاج الحساب الذي تُعطى مفاتيحه للخادم إلى صلاحيات القراءة والكتابة والحذف وعرض قائمة الكائنات
النموذج اللغوييستضيفه العميل، بواجهة برمجية متوافقة مع OpenAI — مثل vLLM
الوصول إلى الإنترنتغير مطلوب عند استضافة النموذج اللغوي داخل بيئة العميل، باستثناء التعرف على الكلام في الصوت والفيديو (Yandex SpeechKit) والدخول عبر Yandex ID وVK ID إذا كانت هذه الوظائف مفعّلة. من دون الوصول إلى Yandex SpeechKit تُحفظ الملفات لكن لا يُستخرج منها الكلام

تفتح كل حاوية للخادم ولمعالج الطوابير حتى 40 اتصالًا بـ PostgreSQL. عند وجود عدد كبير من النسخ يُنصح باستخدام مجمّع اتصالات، مثل PgBouncer أو Odyssey.

موارد الحوسبة

المكوّنالنسخطلب المعالج / الذاكرةحد المعالج / الذاكرةالتوسع التلقائي
خادم الواجهة البرمجية1–10500m / 512Mi2000m / 2Giالمعالج 70%، الذاكرة 80%
معالج الطوابير4–10500m / 1Gi2000m / 4Giالمعالج 70%، الذاكرة 80%
مجدول المهامنسخة واحدة تمامًا50m / 128Mi200m / 256Miلا
التضمين، الفهرسة2–61000m / 2.5Gi4000m / 4Giالمعالج 70%
التضمين، الاستعلامات2–6500m / 2.5Gi2000m / 4Giالمعالج 70%
لوحة التحكم1–10200m / 256Mi1000m / 1Giالمعالج 70%

مجموع طلبات الموارد دون مكونات نظام Kubernetes: نحو 5.8 vCPU و14.9 غيبيبايت من الذاكرة عند الحد الأدنى للنسخ، ونحو 21.1 vCPU و47.6 غيبيبايت عند الحد الأقصى. يجب أن تتسع العقدة لحاوية تضمين بطلب ذاكرة قدره 2.5 غيبيبايت.

الإعداد الذي يشغّل عليه صاحب الحقوق البرنامج: 4–10 عقد، كل منها 4 vCPU و8 غيبيبايت مع إضافة تلقائية للعقد؛ القاعدتان الرئيسية والمتجهية عنقودان منفصلان من PostgreSQL 15، كل منهما 2 vCPU و8 غيبيبايت مع قرص 20 غيبيبايت يتوسع تلقائيًا حتى 64 غيبيبايت؛ Valkey 7.2 — 2 vCPU و4 غيبيبايت.

3. الإعداد

تُعيَّن معاملات الخادم ومعالج الطوابير والمجدول بمتغيرات البيئة — من أسرار Kubernetes أو كقيم في البيانات (القسم 1). تتلقى النشرات الثلاث معاملات الاتصال نفسها بقواعد البيانات وRedis وتخزين الكائنات.

إلزامية

المعاملالغرض
DATABASE_URLقاعدة PostgreSQL الرئيسية
VECTOR_DATABASE_URLالقاعدة المتجهية مع pgvector. من دون هذا المعامل لا يعمل التخزين المتجهي: الاستعاضة بالقاعدة الرئيسية محظورة عمدًا
REDIS_URLوسيط الطوابير والتخزين المؤقت
SECRET_KEYمفتاح توقيع رموز الجلسة
R2_ENDPOINT، R2_ACCESS_KEY_ID، R2_SECRET_ACCESS_KEY، R2_BUCKET، R2_PUBLIC_URLتخزين الكائنات: العنوان، مفاتيح الوصول، الحاوية، والعنوان الذي تحصل منه المتصفحات على الكائنات العامة للحاوية. يبني البرنامج الروابط الموقَّعة لملفات قاعدة المعرفة ومرفقات المحادثات على عنوان R2_ENDPOINT. أسماء المعاملات تاريخية، ويصلح أي تخزين متوافق مع S3
DOCS_USERNAME، DOCS_PASSWORDاسم المستخدم وكلمة المرور للوصول إلى توثيق الواجهة البرمجية على /v1/docs
FRONTEND_URLعنوان لوحة التحكم لدى العميل؛ يُستخدم في روابط الرسائل
EMAIL_FROMعنوان مرسل الرسائل
SHOPS_DOMAINنطاق عناوين المشاريع بصيغة مشروع.نطاق؛ يُستخدم في عناوين المشاريع وعند التحقق من مضيف الدخول المؤسسي (SSO)
INGRESS_LB_IPالعنوان الخارجي لمتحكم الدخول؛ يظهر في تلميحات إعداد DNS عند ربط نطاق خاص بالمشروع
SMTP_HOST، SMTP_PORT، SMTP_USER، SMTP_PASSWORD، SMTP_USE_TLS، SMTP_START_TLSخادم البريد. إلزامي: الدخول بكلمة المرور يتطلب تأكيد العنوان برمز من رسالة، كما تصل عبر البريد استعادة كلمة المرور ودعوات المشروع

للمعاملات FRONTEND_URL وEMAIL_FROM وSHOPS_DOMAIN وINGRESS_LB_IP قيم افتراضية تشير إلى التثبيت السحابي لصاحب الحقوق، لذا يجب تعيينها في تثبيت العميل.

النموذج اللغوي

المعاملالقيمة
LLM_SERVICEopenai — أي نموذج بواجهة متوافقة مع OpenAI. يُعيَّن صراحة: القيمة الافتراضية yandex توجّه الطلبات إلى Yandex Cloud
LLM_BASE_URLعنوان نموذج العميل، مثل http://llm.internal:8000/v1
LLM_MODELاسم النموذج. من دون LLM_BASE_URL وLLM_MODEL لا يُهيَّأ الاتصال بالنموذج
OPENAI_API_KEYمفتاح الوصول إلى النموذج إذا تطلبه خادم النموذج؛ اختياري
LLM_MODEL_QUERYنموذج منفصل لإعادة صياغة استعلام البحث؛ اختياري، وإن لم يُعيَّن يُستخدم LLM_MODEL. في بيانات التثبيت السحابي مُعيَّن مباشرة (القسم 1)

لا يستخدم البرنامج خدمات شركة OpenAI: «متوافق مع OpenAI» يعني فقط صيغة الواجهة البرمجية التي يدعمها vLLM وخوادم النماذج الأخرى. والاسمان openai وOPENAI_API_KEY محفوظان وفق هذه الصيغة.

التضمين

المعاملالغرض
LOCAL_EMBEDDING_URLعنوان خدمة التضمين للفهرسة
QUERY_EMBEDDING_URLعنوان مجموعة التضمين لاستعلامات البحث؛ إن لم يُعيَّن يُستخدم LOCAL_EMBEDDING_URL

اختيارية

المعاملالغرض
MAX_UPLOAD_SIZEالحد الأقصى لحجم ملف يُنزَّل من مصدر عبر رابط، بالبايت؛ افتراضيًا 100 ميبيبايت
FILE_URL_TTL_SECONDSمدة صلاحية الرابط الموقَّع لملف قاعدة المعرفة أو مرفق المحادثة، بالثواني؛ افتراضيًا 3600. يبقى الرابط الصادر صالحًا مدة لا تقل عن نصف هذه المدة ولا تزيد عليها
YANDEX_SPEECHKIT_API_KEY، YANDEX_SPEECHKIT_FOLDER_ID، SPEECH_LANGUAGESالتعرف على الكلام في الصوت والفيديو عبر Yandex SpeechKit ولغات التعرف

لوحة التحكم والأداة

تقرأ لوحة التحكم معاملات التثبيت من متغيرات بيئة الحاوية عند التشغيل. المتغير غير المعيَّن يُبقي القيمة التي بُنيت بها الصورة؛ والمتغير بقيمة فارغة يعطّل الوظيفة المقابلة. بُنيت الصورة بقيم التثبيت السحابي لصاحب الحقوق — عدّاد Yandex Metrica، وتطبيقات Yandex ID وVK ID، وعنوان الأداة على releases.parsewise.ru — لذا تُعيَّن في تثبيت العميل PARSEWISE_YM_COUNTER_ID وPARSEWISE_YANDEX_CLIENT_ID وPARSEWISE_VK_CLIENT_ID صراحة بقيمه الخاصة أو فارغة، وPARSEWISE_WIDGET_SCRIPT_URL بعنوان الأداة في البنية التحتية للعميل.

المعاملالغرض
PARSEWISE_API_URLعنوان خادم الواجهة البرمجية؛ يُضاف أيضًا إلى سياسة أمان المحتوى لصفحات اللوحة
PARSEWISE_APP_URLعنوان لوحة التحكم؛ يخدم مضيفُه اللوحة، وتخدم المضيفات الأخرى صفحة الضيف للمشروع
PARSEWISE_ADMIN_HOSTSمضيفات إضافية للوحة، مفصولة بفواصل
PARSEWISE_SHOPS_DOMAINنطاق عناوين المشاريع بصيغة مشروع.نطاق
PARSEWISE_PRIVACY_URL، PARSEWISE_TERMS_URL، PARSEWISE_OFFER_URLروابط سياسة معالجة البيانات الشخصية وشروط الاستخدام والعرض
PARSEWISE_SALES_EMAILعنوان الاستفسارات عن الأسعار
PARSEWISE_YM_COUNTER_IDعدّاد Yandex Metrica؛ القيمة الفارغة تعطّل Metrica
PARSEWISE_YANDEX_CLIENT_ID، PARSEWISE_VK_CLIENT_IDمعرّفات التطبيقات للدخول عبر Yandex ID وVK ID؛ القيمة الفارغة تعطّل هذا الدخول
PARSEWISE_WIDGET_SCRIPT_URLعنوان ملف الأداة الذي تضعه اللوحة في رمز الربط
PARSEWISE_STORAGE_URLعنوان تخزين الكائنات، مطابق لـ R2_ENDPOINT الخاص بالخادم؛ يُضاف إلى سياسة أمان المحتوى لصفحات اللوحة وإلى قائمة مخازن الملفات التي تعرض منها اللوحة الملفات

تحصل الأداة على عنوان خادم الواجهة البرمجية عبر المعامل apiUrl في window.ParsewiseConfig على الصفحة، مع معرّف المشروع shopId؛ وعلى رابط سياسة معالجة البيانات الشخصية عبر المعامل privacyPolicyUrl أو من إعدادات المشروع.

البناء نفسه للوحة التحكم والأداة يعمل في أي تثبيت: لا حاجة إلى إعادة بنائهما لعنوان العميل ومعاملاته.

4. التثبيت

  1. جهّز PostgreSQL: القاعدتين الرئيسية والمتجهية. يجب أن يتوفر النوع vector في القاعدة المتجهية. إن لم يتوفر، ينفّذ البرنامج CREATE EXTENSION IF NOT EXISTS vector؛ وإن لم يكن لدور التطبيق هذا الحق، ينفّذ مسؤول القاعدة CREATE EXTENSION vector مسبقًا.
  2. جهّز Redis وحاوية تخزين كائنات متوافق مع S3؛ واضبط قواعد CORS والوصول إلى كائنات الحاوية وفق القسم 2.
  3. حمّل الصور إلى سجل متاح للعنقود واذكر عناوينها في البيانات.
  4. أنشئ مساحة الأسماء والأسرار بمعاملات القسم 3.
  5. اذكر في بيان التوجيه أسماء نطاقات الواجهة البرمجية ولوحة التحكم، واضبط TLS.
  6. طبّق البيانات. عند التشغيل ينشئ الخادم الجداول الناقصة في القاعدة الرئيسية ويطبّق الترحيلات المضمّنة في الصورة؛ وينشئ التخزين المتجهي جداوله وفهارسه.
  7. ضع ملفات الأداة على خادم ثابت أو في تخزين الكائنات لدى العميل.
  8. تحقّق من التثبيت:
    • جميع الحاويات في حالة الجاهزية؛ تحمّل حاويات التضمين النموذج خلال مدة تصل إلى ثلاث دقائق؛
    • يعيد الطلب GET /v1/public/health إلى خادم الواجهة البرمجية {"status": "ok"}؛
    • في سجل الخادم يوجد السطر Alembic migrations applied (head reached) ولا توجد رسائل Alembic upgrade failed ولا أخطاء pgvector.

5. بدء العمل

  1. ادخل إلى لوحة التحكم وأنشئ مشروعًا.
  2. اضبط شخصية المساعد: الاسم والصورة الرمزية وقواعد الإجابة.
  3. املأ قاعدة المعرفة: ارفع الملفات، أو استورد المنتجات أو الملفات الشخصية من ملف، أو اربط مصدرًا عبر رابط.
  4. ادعُ أعضاء الفريق وعيّن الأدوار.
  5. اربط الأداة بصفحات الموقع أو الحساب الشخصي:
<script>
  window.ParsewiseConfig = {
    shopId: "معرّف_المشروع",
    apiUrl: "https://عنوان_خادم_API",
  };
</script>
<script async src="https://عنوان_الملفات_الثابتة/widget.iife.js"></script>

الإجراءات التفصيلية للعمل في لوحة التحكم موجودة في دليل المستخدم والمسؤول.

6. التشغيل

المهمةالإجراء
النسخ الاحتياطييتولاه العميل: قاعدتا PostgreSQL الرئيسية والمتجهية، تخزين الكائنات
المراقبةحالة الحاويات والسجلات بأدوات العنقود. فحوص الحالة: الخادم — GET / على المنفذ 8000، لوحة التحكم — GET / على المنفذ 3000، التضمين — GET /health على المنفذ 8080، معالج الطوابير — الأمر celery inspect ping
التوسعتلقائي، ضمن الحدود المبيّنة في جدول الموارد. يعمل مجدول المهام بنسخة واحدة حصرًا
التحديثينشر العميل إصدارًا جديدًا من الصور وفق قراره؛ ويُحدَّث مخطط القاعدة الرئيسية بالترحيلات عند تشغيل الخادم
الدعممستند «الدعم الفني»
ابدأوا

جرّبوه على بياناتكم

ارفعوا مستنداتكم وكتالوجكم، ثم اسألوا المساعد الأسئلة التي تُطرح عليكم. هذا هو الاختبار الوحيد ذو المعنى.