CShark عرض توضيحي
القائمة

وثائق شارك

دليل المسؤول

تكوين وصيانة برنامج CShark في موقع العميل: بدءًا من إدارة الخدمة والهيكل وحتى النسخ الاحتياطي والتشخيص والتحديث.

الإصدار 2.0.3

1. الغرض من المستند وأدوار المسؤول

الوثيقة مخصصة للمتخصصين الذين يقومون بتكوين برنامج CShark وصيانته في موقع العميل.

تم وصف العمل اليومي مع النظام في وثيقة منفصلة "دليل المستخدم"والنشر - في الوثيقة "تعليمات تثبيت نسخة من البرنامج".

الدورمجال المسؤولية
مسؤول النظامطوبولوجيا الكائن، الأجهزة، الكاميرات، شاشات العرض، التكامل، معلمات النظام، التحديث
مسؤول مواقف السياراتقواعد معالجة الأحداث وأوضاع المنطقة والمشغلين وحقوقهم
مهندس نظام العملاءالبنية التحتية، والنسخ الاحتياطي، والرصد، والشبكة

يتم تحديد الحقوق حسب القدوة (القسم 12)؛ التقسيم إلى الأدوار أعلاه تنظيمي.

2. تكوين البرمجيات ووضع المكونات

الخدمةالغرضميناء
coreخادم التطبيقات: منطق التطبيق، REST API، WebSocket، مستهلكي الأحداثداخلي
gatewayبوابة الجهاز: استقبال أحداث الكاميرا والتحكم في لوحة النتائج18010/tcp
webواجهة ويب ونقطة وصول واحدة إلى API8088/tcp
postgresقاعدة بيانات PostgreSQL 17داخلي
natsحافلة الأحداث NATS JetStreamداخلي
seaweedfsتخزين إطار الكائن، بروتوكول S318333/tcp

تم تضمين ملف تعريف إمكانية الملاحظة في مجموعة أدوات التحقق؛ نشرته جرافانا بتاريخ 13000/tcp، فإن خدماتها المتبقية متاحة فقط داخل شبكة Compose.

يتم تشغيل جميع الخدمات في حاويات داخل محيط الشبكة المغلقة للمنشأة. لا يتم تنفيذ المكالمات إلى الخدمات الخارجية أثناء التشغيل.

3. إدارة الخدمة

دليل العمل: /opt/cshark-stand.

# حالة الخدمات
sudo docker compose --env-file /opt/cshark-stand/.env \
  -f /opt/cshark-stand/compose.yml --profile obs ps

# التشغيل
sudo docker compose --env-file /opt/cshark-stand/.env \
  -f /opt/cshark-stand/compose.yml --profile obs up -d

# الإيقاف
sudo docker compose --env-file /opt/cshark-stand/.env \
  -f /opt/cshark-stand/compose.yml --profile obs stop

# إعادة تشغيل خدمة منفردة
sudo docker compose --env-file /opt/cshark-stand/.env \
  -f /opt/cshark-stand/compose.yml restart core

# سجلات الخدمة
sudo docker compose --env-file /opt/cshark-stand/.env \
  -f /opt/cshark-stand/compose.yml logs -f core

4. الإعدادات

يتم تعيين المعلمات بواسطة متغيرات البيئة (file .env بجوار ملف وصف الخدمة). بعد تغيير الإعدادات، يجب إعادة تشغيل الخدمة.

متغيرالغرضالقيمة الافتراضية
CSHARK_DATABASE_URLسلسلة اتصال قاعدة البيانات
CSHARK_NATS_URLعنوان حافلة الحدثnats://nats:4222
CSHARK_S3_ENDPOINT_URLعنوان تخزين الكائنhttp://seaweedfs:8333
CSHARK_S3_PUBLIC_ENDPOINT_URLعنوان التخزين لإنشاء روابط للعميل
CSHARK_S3_ACCESS_KEY, CSHARK_S3_SECRET_KEYمفاتيح الوصول إلى التخزين
CSHARK_S3_BUCKETحاوية الكائنcshark-media
CSHARK_AUTH_ENFORCEالمصادقة الإلزاميةtrue
CSHARK_AUTH_SECRETسر توقيع رمز الجلسةتعيين أثناء التثبيت
CSHARK_CORS_ORIGINSمصادر واجهة الويب المسموح بها
CSHARK_WEB_PORTمنفذ نشر واجهة الويب8088
CSHARK_OTEL_ENDPOINTعنوان جامع القياس عن بعدغير محدد

5. الإعداد الأولي للكائن

عند تسجيل الدخول لأول مرة، يكون معالج الإعداد الأولي متاحًا. التسلسل:

  1. قم بتغيير كلمة المرور لحساب المسؤول المدمج.
  2. إنشاء كائن (وقوف السيارات)، والمستويات، والمناطق، وأماكن وقوف السيارات.
  3. قم بتحميل الخلفية الرسومية للمستوى ووضع الكائنات على الرسم التخطيطي.
  4. تسجيل الكاميرات وربطها بأماكن وقوف السيارات.
  5. إنشاء قوالب وأجهزة للوحات المعلومات.
  6. قم بإعداد رسم بياني لمناطق إمكانية الوصول ونقاط الدخول.
  7. إنشاء أدوار وحسابات المشغل.
  8. تكوين قواعد معالجة الأحداث.

6. إعداد الطوبولوجيا والدوائر

القسم "الإدارة" → "الطوبولوجيا".

التسلسل الهرمي: التنظيم → موقف السيارات → المستوى → المنطقة → مكان وقوف السيارات.

طبيعة العمل:النظام
إنشاء المستوىتشير إلى الاسم والرقم التسلسلي
إنشاء منطقةتشير إلى الاسم، مرجع المستوى، النوع
إنشاء مكان لوقوف السياراتالإشارة إلى الرمز (الفريد داخل الكائن)، والمنطقة، والنوع
تحميل الطبقة الأساسية للمستوىقم بتنزيل الملف الرسومي لخطة المستوى
التنسيب على الرسم البيانيقم بتعيين إحداثيات وشكل أماكن وقوف السيارات والمناطق والأجهزة في محرر المخطط

يتم عرض رموز أماكن وقوف السيارات للمستخدمين ويجب أن تتوافق مع العلامات الموجودة على الموقع.

7. إعداد كاميرات تحليل الفيديو

القسم "المعدات".

  1. قم بتكوين الكاميرا لإرسال الأحداث إلى عنوان بوابة الجهاز (بروتوكول البائع عبر HTTP). يتم تحديد العنوان والمنفذ في إعدادات الكاميرا.
  2. تظهر الكاميرا التي تصل إلى النظام في قائمة الأجهزة التي لم يتم اكتشافها.
  3. تسجيل الكاميرا: قم بتعيين الاسم وعنوان الشبكة والموقع.
  4. ربط الكاميرا بأماكن وقوف السيارات التي تخدمها.
  5. التحقق من وصول الأحداث: يجب أن تتغير حالة أماكن وقوف السيارات المرتبطة عندما يتغير الوضع.

يتم إجراء مراقبة الأداء تلقائيًا بناءً على إشارات التواجد الدورية. يتم عرض حالة الجهاز في قسم "المعدات" وفي الرسم التخطيطي للموقع. يتم حفظ تاريخ تغييرات الحالة.

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

8. إنشاء لوحات المعلومات

القسم "لوحة النتائج".

8.1. قوالب

يصف القالب تخطيط الإطار ويتكون من مناطق:

نوع المنطقةالمحتويات
نصنص تعسفي مع استبدال قيمة السياق
عداد مقاعد مجانيعدد المقاعد المجانية في منطقة أو كائن
سهم الاتجاهاتجاه الحركة إلى المنطقة
الصورةصورة ثابتة
رمز الاستجابة السريعةالرابط مشفر في الصورة
خريطة المستوىمخطط مستوى لشاشات عالية الدقة
جدول المنطقةملخص المنطقة
المؤشرمؤشر رقمي

يتم ضبط حجم الخط تلقائيًا وفقًا لحجم المنطقة؛ إذا كانت سعة المنطقة غير كافية، فسيتم إصدار تحذير عند حفظ القالب.

8.2. أجهزة العرض

  1. أنشئ جهازًا، وحدد فئة: لوحة LED نصية (EK07، بروتوكول TCP/RS-485) أو كشك ويب على شاشة عالية الدقة.
  2. تحديد معلمات الاتصال.
  3. قالب الارتباط والمنطقة ونقطة الدخول.
  4. تحقق من النتيجة من خلال معاينة الإطار الذي تم إنشاؤه.

يتم إنشاء عنوان عام للنموذج لكشك الويب /kiosk/display/<المعرّف>?token=<الرمز>; تفتح الشاشة هذه الصفحة في وضع الكشك. الرمز يقيد الوصول إلى المحتوى.

8.3. أولويات المحتوى

الطوارئ ← الاستبدال اليدوي ← الجدول الزمني ← التوظيف. يحل محتوى الطوارئ (وضع الحريق أو المأوى) محل أي محتوى آخر ولا يمكن استبداله يدويًا.

8.4. المرسل إليه النصوص

تنقسم أسباب عدم التوفر إلى عامة (معروضة للسائق) وإدارية (متاحة للموظفين فقط). النصوص الإدارية غير موجودة فعليًا في استجابة الكشك العام وفي تدفق WebSocket. الحالة التشخيصية للشاشة متاحة على /api/displays/{id}/state للموظفين المعتمدين فقط.

10. تحديد أوضاع ومناطق الكائن

حالات المنطقة والكائن: الموظفون، والحرائق، والمأوى، والصيانة.

طريقة تغيير الوضعالنظام
يدوياقسم "الإدارة" ← "المناطق" ← اختيار الوضع
تلقائياوذلك بناء على إشارة من أنظمة الإطفاء الأوتوماتيكية من خلال بوابة الجهاز

يتغير تغيير الوضع على الفور: توفر أماكن وقوف السيارات في المنطقة، ومحتويات لوحات المعلومات (يحظى محتوى الطوارئ بالأولوية القصوى)، وقواعد معالجة الأحداث، وتكوين الإشعارات.

يعود المسؤول إلى الوضع العادي يدويًا بعد إزالة السبب.

11. وضع قواعد معالجة الأحداث

القسم "الإدارة" ← "القواعد".

يتم تعيين القاعدة وفقًا للمخطط التالي:

الزناد (نوع الحدث) × المنطقة (الجسم، المنطقة، مجموعة الأماكن، مكان محدد) × شرط (الوقت، الحالة، علامات أخرى) → الإجراءات

الإجراءات المتاحة: إخطار المشغل، إنشاء حادث، تغيير الحالة، إرسال أمر إلى الجهاز.

تدخل القاعدة حيز التنفيذ دون إعادة تشغيل الخدمات. يتم تحديد الترتيب الذي يتم به تطبيق القواعد حسب أولويتها.

أمثلة: "انتهاك العلامات في منطقة للأشخاص ذوي القدرة المحدودة على الحركة ← خلق حادثة ذات مستوى حرج"؛ "تم احتلال مكان وقوف السيارات عند المدخل لأكثر من 10 دقائق دون إذن ← قم بإبلاغ مشرف المناوبة."

12. إدارة المستخدمين والأدوار والحقوق

القسم "الإدارة" ← "المستخدمون" و"الأدوار".

  • يتم تعيين الأذونات في مساحة واحدة بالنموذج "resource:action" (على سبيل المثال، displays:manage, users:manage).
  • الدور هو مجموعة مسماة من الأذونات. يتم تعيين دور للمستخدم؛ بالإضافة إلى ذلك، قد يتم إصدار تصاريح فردية.
  • لا يتم عرض أقسام الواجهة التي لا يمكن للمستخدم الوصول إليها بسبب الحقوق في التنقل.
  • يتم تسجيل إجراءات المستخدم في سجل الإجراءات.

متطلبات كلمة المرور: 6 أحرف على الأقل. يتم تخزين كلمات المرور في شكل تجزئات (خوارزمية bcrypt)؛ ولا يتم تخزينها أو نقلها بنص واضح.

يتم تنفيذ الجلسات بواسطة الرموز الموقعة؛ يتم تحديد سر التوقيع بواسطة المعلمة CSHARK_AUTH_SECRET. يؤدي تغيير السر إلى إنهاء جميع الجلسات النشطة.

13. إعداد التكامل مع الأنظمة الخارجية

القسم "الإدارة" ← "التكاملات".

فرصةالوصف
واجهة برمجة تطبيقات RESTأدلة المرافق، وتوافر أماكن وقوف السيارات، وتلقي معلومات حول جلسات نظام التحكم في الوصول الخارجي؛ مواصفات OpenAPI متاحة على /openapi.json
مفاتيح الوصوليتم إنشاؤها بنطاقات الرؤية وحدود معدل الطلب
خطافات الويب الصادرةالاشتراك في نظام خارجي للأحداث؛ يتم توقيع الطلبات، ويتكرر التسليم إذا كان هناك خطأ

ويتم التفاعل مع نظام ركن السيارات الآلي الشريك (مجموعة المدخل) من خلال هذه الآليات.

14. الاحتفاظ بالبيانات وسياسات الاحتفاظ بها

البياناتموقع التخزينمدة التخزين: مدة تخزين المنتجات
الدلائل والطوبولوجيا والمستخدمينقاعدة بيانات قاعدة البياناتإلى أجل غير مسمى
الزيارات، وأحداث مواقف السيارات، ولقطات الإشغالجداول PostgreSQL عادية مع فهارس الكائنات والوقتتحددها السياسة التشغيلية المعتمدة
لقطات الحدثتخزين الكائنقابلة للتخصيص ومتوافقة مع فترة تخزين الأحداث
سجل نشاط المستخدمقاعدة بيانات قاعدة البياناتقابل للتخصيص

يتم تحديد فترة التخزين من خلال السياسات الموجودة في قسم إعدادات النظام. اللقطات متاحة فقط عبر روابط محدودة الوقت؛ تم إغلاق الوصول العام المباشر إلى مرافق التخزين.

15. النسخ الاحتياطي والاستعادة

15.1. النسخ الاحتياطي

tools/backup/backup.sh /path/to/backups

يتم إنشاء تفريغ قاعدة البيانات وبيان الوسائط. يتم نسخ كائنات التخزين بشكل منفصل باستخدام أدوات المزامنة - يتم إصدار الأمر بواسطة البرنامج النصي. التردد الموصى به: قاعدة البيانات - يوميًا (وفقًا للجدول الزمني الخاص بالمضيف)، المواد الإعلامية - أسبوعيًا. لا يقل عمق تخزين النسخ عن مدة تخزين البيانات في النظام.

15.2. التحقق من النسخة

الاستعادة إلى قاعدة بيانات مؤقتة دون المخاطرة بقاعدة البيانات العاملة:

tools/backup/restore.sh backups/cshark-XXXX.dump cshark_restore_check

يعرض البرنامج النصي عدادات التحكم (مساحات السيارات، الزيارات، الحوادث، المستخدمين) للتسوية.

15.3. التعافي

توقف قبل التعافي core وgateway عبر ملف الإنشاء /opt/cshark-stand/compose.yml، قم بتنفيذ برنامج الاسترداد القياسي من التسليم ثم ابدأ تشغيل نفس الخدمات. يتم تسجيل الأوامر والمسار إلى النسخة الاحتياطية في سجل العمل؛ يتم اختبار الاستعادة أولاً على حامل منفصل.

تتم استعادة مواد الوسائط عن طريق المزامنة في حاوية كائن مع التحقق من البيان.

16. المراقبة والتشخيص

تحققالأمر أو العنوان
صحة التطبيقcurl -fsS http://127.0.0.1:8088/api/health
حالة الخدمةsudo docker compose --env-file /opt/cshark-stand/.env -f /opt/cshark-stand/compose.yml --profile obs ps
المجلاتsudo docker compose --env-file /opt/cshark-stand/.env -f /opt/cshark-stand/compose.yml logs -f core

يقوم البرنامج بإنشاء مقاييس وسجلات وتتبعات وفقًا لمعيار OpenTelemetry. عند تمكين ملف تعريف إمكانية المراقبة، تتوفر لوحات Grafana.

المؤشرات الرئيسية:

المؤشرماذا يعني ذلك
عدد الأحداث المنشورةاستلام البيانات من المعدات
عدد الأحداث التي تمت معالجتهاتشغيل مستهلكي خادم التطبيق
حجم الرسائل غير المجهزةالنمو يعني أن الخادم لا يمكنه مواكبة ذلك أو توقف المستهلك
عدد عملاء WebSocket المتصلينأماكن عمل المشغل النشطة

يتم استبعاد البيانات الشخصية والحساسة تلقائيًا من السجلات.

17. تحديث البرنامج

يتم بدء التحديث من قبل مسؤول العميل. لا توجد آليات للتحديث القسري والتحكم عن بعد من خارج محيط المنشأة.

الإصدار الحالي لا يتضمن التحديث التلقائي عن بعد. قبل تنفيذ آلية مُدارة واعدة، يتم إجراء التحديث كتسليم تنظيمي منفصل: قبول المجموعة الموقعة غير المتصلة بالإنترنت، والتحقق من SHA-256 وتوقيع المفتاح الخارجي، وإنشاء نسخة احتياطية والتحقق منها، وتنفيذ التعليمات الخاصة بالإصدار واختبار الدخان الكامل. يتم تنفيذ العملية من قبل المسؤول خلال فترة الصيانة المتفق عليها.

تتبع عمليات الترحيل مبدأ الضغط والتوسيع: يتم إصدار تغييرات المخطط التفصيلية في إصدار يتبع إصدار التعليمات البرمجية التي تعمل بدونها. لذلك، يعد الرجوع إلى إصدار سابق من التعليمات البرمجية أمرًا آمنًا ولا يتطلب التراجع عن المخطط.

يُسمح بالإرجاع فقط على المجموعة المحفوظة والمختبرة مسبقًا من الإصدار السابق بعد تقييم مدى توافق نظام البيانات. إن التغيير التعسفي لعلامة الحاوية في مثيل مثبت ليس تحديثًا قياسيًا.

18. الأعطال والحلول النموذجية

تسجيلالسبب المحتملالإجراءات
لا يتم تحديث حالات أماكن وقوف السياراتتسليم الحدث مكسورالتحقق من توفر الكاميرا؛ التحقق من سجلات بوابة الجهاز؛ تحقق من معدل الرسائل غير المعالجة - إذا زاد، أعد تشغيل خادم التطبيق
الأحداث تصل دون إطاراتتخزين الكائنات غير متوفرالتحقق من خدمة التخزين؛ لم يتم فقدان الأحداث، وستكون الإطارات مفقودة فقط خلال فترة عدم التوفر
لا يتم تحديث لوحة النتائججهاز العرض غير متوفرتحقق من الاتصال في قسم "المعدات"؛ معاينة الإطار - إذا تشكل الإطار، تكون المشكلة في قناة الاتصال مع الجهاز
واجهة الويب غير متوفرةالخدمة لا تعمل أو المنفذ مشغولالتحقق من حالة الحاويات. إذا كان هناك تعارض في المنفذ، قم بتعيين CSHARK_WEB_PORT وإعادة التشغيل
يتم إعادة تشغيل واجهة الويب بشكل دوريشبكة الحاويات المفقودةإعادة إنشاء الخدمة بالمفتاح --force-recreate
لم يتم تسجيل كافة المستخدمينتم تغيير سر توقيع الرمز المميزتحقق CSHARK_AUTH_SECRET; بعد تغيير السر، مطلوب إعادة تسجيل الدخول
حدث خطأ أثناء تحميل الإطارات في وحدة التخزين مما يشير إلى وجود تناقض في الوقتاختلاف ساعة المضيف والحاويةمزامنة وقت المضيف عبر NTP
حجم قاعدة البيانات آخذ في الازديادلم يتم تكوين سياسات الاستبقاءاضبط فترة تخزين الأحداث والإطارات في إعدادات النظام

19. موقع الملفات والمكونات

مكونالموقع
ملف وصف الخدمة/opt/cshark-stand/compose.yml
إعدادات البيئة/opt/cshark-stand/.env
التفاصيل الأولية/opt/cshark-stand/INITIAL-CREDENTIALS.txt
سجل التثبيت/opt/cshark-stand/install.log
بيانات قاعدة البياناتحجم عامل الميناء pg_data
بيانات تخزين الكائناتحجم عامل الميناء seaweed_data
بيانات ناقل الحدثحجم عامل الميناء nats_data
الكود المصدري لخادم التطبيق (داخل الصورة)/app/apps/core/app/
نص مصدر بوابة الجهاز (داخل الصورة)/app/apps/gateway/gateway/
ترحيل مخطط قاعدة البيانات/app/apps/core/alembic/versions/
ملفات واجهة الويب الثابتة/usr/share/nginx/html/ في حاوية واجهة الويب
مواصفات واجهة البرنامجhttp://<العنوان>:8088/openapi.json
وثائق API التفاعليةhttp://<العنوان>:8088/docs

الوصول داخل الحاوية:

sudo docker compose --env-file /opt/cshark-stand/.env \
  -f /opt/cshark-stand/compose.yml exec core sh
docker run --rm cshark-core:<الإصدار> cat /etc/os-release    # نظام التشغيل الأساسي للصورة

20. الدعم الفني

قناةمعنى
المنظمةجمعية ذات مسؤولية محدودة ‏"كومبيتينسيا"‏
الهاتف:+7 495 532-61-18
وضع التشغيلالاثنين - الجمعة، 09:00 - 18:00 بتوقيت موسكو
عنوان الدعم115280، موسكو، ش. لينينسكايا سلوبودا، 21 عاما، مبنى 1

يتم عرض إجراءات معالجة الطلبات والأولويات وأوقات الاستجابة في الوثيقة "وصف العمليات التي تضمن صيانة دورة حياة البرنامج".