التثبيت والتشغيل
يتضمن هذا المستند المعلومات اللازمة لتثبيت برنامج 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–10 | 500m / 512Mi | 2000m / 2Gi | المعالج 70%، الذاكرة 80% |
| معالج الطوابير | 4–10 | 500m / 1Gi | 2000m / 4Gi | المعالج 70%، الذاكرة 80% |
| مجدول المهام | نسخة واحدة تمامًا | 50m / 128Mi | 200m / 256Mi | لا |
| التضمين، الفهرسة | 2–6 | 1000m / 2.5Gi | 4000m / 4Gi | المعالج 70% |
| التضمين، الاستعلامات | 2–6 | 500m / 2.5Gi | 2000m / 4Gi | المعالج 70% |
| لوحة التحكم | 1–10 | 200m / 256Mi | 1000m / 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_SERVICE | openai — أي نموذج بواجهة متوافقة مع 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. التثبيت
- جهّز PostgreSQL: القاعدتين الرئيسية والمتجهية. يجب أن يتوفر النوع
vectorفي القاعدة المتجهية. إن لم يتوفر، ينفّذ البرنامجCREATE EXTENSION IF NOT EXISTS vector؛ وإن لم يكن لدور التطبيق هذا الحق، ينفّذ مسؤول القاعدةCREATE EXTENSION vectorمسبقًا. - جهّز Redis وحاوية تخزين كائنات متوافق مع S3؛ واضبط قواعد CORS والوصول إلى كائنات الحاوية وفق القسم 2.
- حمّل الصور إلى سجل متاح للعنقود واذكر عناوينها في البيانات.
- أنشئ مساحة الأسماء والأسرار بمعاملات القسم 3.
- اذكر في بيان التوجيه أسماء نطاقات الواجهة البرمجية ولوحة التحكم، واضبط TLS.
- طبّق البيانات. عند التشغيل ينشئ الخادم الجداول الناقصة في القاعدة الرئيسية ويطبّق الترحيلات المضمّنة في الصورة؛ وينشئ التخزين المتجهي جداوله وفهارسه.
- ضع ملفات الأداة على خادم ثابت أو في تخزين الكائنات لدى العميل.
- تحقّق من التثبيت:
- جميع الحاويات في حالة الجاهزية؛ تحمّل حاويات التضمين النموذج خلال مدة تصل إلى ثلاث دقائق؛
- يعيد الطلب
GET /v1/public/healthإلى خادم الواجهة البرمجية{"status": "ok"}؛ - في سجل الخادم يوجد السطر
Alembic migrations applied (head reached)ولا توجد رسائلAlembic upgrade failedولا أخطاءpgvector.
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 |
| التوسع | تلقائي، ضمن الحدود المبيّنة في جدول الموارد. يعمل مجدول المهام بنسخة واحدة حصرًا |
| التحديث | ينشر العميل إصدارًا جديدًا من الصور وفق قراره؛ ويُحدَّث مخطط القاعدة الرئيسية بالترحيلات عند تشغيل الخادم |
| الدعم | مستند «الدعم الفني» |
جرّبوه على بياناتكم
ارفعوا مستنداتكم وكتالوجكم، ثم اسألوا المساعد الأسئلة التي تُطرح عليكم. هذا هو الاختبار الوحيد ذو المعنى.
