تكوين النظام
يستخدم OmniCRM نظامي تكوين رئيسيين: crm_config.yaml لإعدادات واجهة برمجة التطبيقات الخلفية و متغيرات البيئة لواجهة المستخدم React. تغطي هذه الوثيقة جميع خيارات التكوين وكيفية تعديلها.
نظرة عامة على ملفات التكوين
تكوين واجهة برمجة التطبيقات الخلفية:
- الملف:
OmniCRM-API/crm_config.yaml - التنسيق: YAML
- يتطلب: إعادة تشغيل واجهة برمجة التطبيقات بعد التغييرات
- يستخدم لـ: قاعدة البيانات، التكاملات، الأمان، التزويد
تكوين واجهة المستخدم الأمامية:
- الملف:
OmniCRM-UI/.env - التنسيق: متغيرات البيئة
- يتطلب: إعادة بناء واجهة المستخدم بعد التغييرات
- يستخدم لـ: العلامة التجارية، الميزات، الخدمات الخارجية
التكوين الخلفي (crm_config.yaml)
يحتوي ملف crm_config.yaml على جميع إعدادات النظام الخلفي.
تكوين قاعدة البيانات
database:
username: omnitouch
password: omnitouch2024
server: localhost
الحقول:
username- اسم مستخدم قاعدة بيانات MySQLpassword- كلمة مرور قاعدة بيانات MySQLserver- اسم مضيف خادم قاعدة البيانات أو IP (افتراضي: localhost)
اتصال قاعدة البيانات:
- اسم قاعدة البيانات مشفر كـ
omnicrm - المنفذ الافتراضي: 3306 (افتراضي MySQL)
- سلسلة الاتصال:
mysql+pymysql://username:password@server/omnicrm
ملاحظة أمان: لا تقم أبداً بإرسال هذا الملف مع بيانات الاعتماد الحقيقية إلى التحكم في الإصدارات. استخدم تكوينات خاصة بالبيئة أو إدارة الأسرار.
أنواع الخدمات
service_types:
- omnicharge
- mobile
- internet
- iptv
- voip
الغرض: تعريف قيم نوع الخدمة الصالحة لحقل service_type.
الأنواع الافتراضية:
mobile- خدمات الهاتف المحمول/الخلويةinternet- الإنترنت الثابت (الألياف، DSL، اللاسلكي)iptv- خدمات التلفزيونvoip- خدمات الصوت عبر الإنترنتomnicharge- خدمات الفوترة/الشحن
أضف أنواع خدمات مخصصة هنا لحالات الاستخدام الخاصة بك.
تكوين HSS (خادم المشتركين المنزلي)
hss:
hss_peers:
- 'http://10.179.2.140:8080'
apn_list: "1,2,3,4,5,6"
الحقول:
hss_peers- قائمة عناوين URL لخوادم HSS لإدارة المشتركينapn_list- قائمة مفصولة بفواصل من معرفات APN (اسم نقطة الوصول)
يستخدم لـ: تزويد الشبكة المحمولة ومصادقة المشتركين.
تكوين بريد Mailjet الإلكتروني
mailjet:
api_key: your_mailjet_api_key
api_secret: your_mailjet_api_secret
api_crmCommunicationCustomerWelcome:
from_email: "support@yourcompany.com"
from_name: "Your Company Support"
template_id: 5977509
subject: "Welcome to Your Company"
api_crmCommunicationCustomerInvoice:
from_email: "billing@yourcompany.com"
from_name: "Your Company Billing"
template_id: 6759851
subject: "Your Invoice - "
أنواع البريد الإلكتروني المكونة:
api_crmCommunicationCustomerWelcome- بريد ترحيبي للعميل الجديدapi_crmCommunicationCustomerInvoice- تسليم الفاتورةapi_crmCommunicationCustomerInvoiceReminder- تذكيرات الفواتير المتأخرةapi_crmCommunicationUserWelcome- ترحيب بالموظف الجديدapi_crmCommunicationUserPasswordReset- طلبات إعادة تعيين كلمة المرورapi_crmCommunicationUserPasswordResetSuccess- إعادة تعيين كلمة المرور الناجحةapi_crmCommunicationUserPasswordChange- إشعارات تغيير كلمة المرورapi_crmCommunicationEmailVerification- التحقق من عنوان البريد الإلكترونيapi_crmCommunicationsBalanceExpired- إشعارات انتهاء الخدمةapi_crmCommunicationsBalanceLow- تنبيهات الرصيد المنخفض
معرفات القوالب:
احصل عليها من حساب Mailjet الخاص بك بعد إنشاء قوالب البريد الإلكتروني. انظر integrations_mailjet للحصول على التفاصيل.
تكوين التزويد
provisioning:
failure_list: ['admin@yourcompany.com', 'ops@yourcompany.com']
الحقول:
failure_list- عناوين البريد الإلكتروني التي يتم إخطارها عند فشل التزويد
عندما تفشل دفاتر اللعب Ansible أثناء التزويد، يقوم النظام بإرسال تفاصيل الخطأ إلى هذه العناوين.
تكوين الفاتورة
invoice:
template_filename: 'your_invoice_template.html'
الحقول:
template_filename- ملف قالب HTML لتوليد الفاتورة
يجب أن يوجد ملف القالب في دليل OmniCRM-API/templates/.
عنوان URL الأساسي لـ CRM
crm:
base_url: 'http://localhost:5000'
الغرض: يستخدمه دفاتر اللعب Ansible لإجراء مكالمات API مرة أخرى إلى CRM.
مهم:
- لا تقم بتضمين شرطة مائلة في النهاية
- استخدم عنوان URL يمكن الوصول إليه علنًا إذا كانت دفاتر اللعب تعمل على خوادم مختلفة
- قم بتحديثه عند النشر في الإنتاج (على سبيل المثال،
https://api.yourcrm.com)
تكوين OCS (نظام الشحن عبر الإنترنت)
ocs:
ocsApi: 'http://10.179.2.142:8080/api'
ocsTenant: 'mnc380.mcc313.3gppnetwork.org'
cgrates: 'localhost:2080'
الحقول:
ocsApi- عنوان URL لنقطة نهاية OCS REST APIocsTenant- معرف المستأجر لنشر OCS متعدد المستأجرينcgrates- نقطة نهاية CGRateS JSON-RPC (المضيف:المنفذ)
يستخدم لـ: الشحن في الوقت الحقيقي، إدارة الرصيد، تتبع الاستخدام.
تكوين SMSC (مركز الرسائل القصيرة)
smsc:
source_msisdn: 'YourCompany'
smsc_url: 'http://10.179.2.216/SMSc/'
api_key: 'your_smsc_api_key'
الحقول:
source_msisdn- معرف المرسل للرسائل القصيرة الصادرة (اسم الشركة أو الرمز القصير)smsc_url- نقطة نهاية API لمركز الرسائل القصيرةapi_key- مفتاح المصادقة لـ SMSC API
يستخدم لـ: إرسال إشعارات الرسائل القصيرة (تنبيهات الرصيد، OTPs، إلخ)
تكوين بث الخلايا
cbc_url: 'http://10.179.1.113:8080'
الغرض: نقطة نهاية API لمركز بث الخلايا (CBC) لتنبيهات الطوارئ.
انظر features_cell_broadcast للحصول على تفاصيل الاستخدام.
مفتاح السر JWT
jwt_secret: '2b93110f723db60172c8e9a1eaa80027a9a9c3f05b44e50dc3fcf38dba68d87e'
الغرض: مفتاح سري لتوقيع رموز المصادقة JWT.
الأمان:
- قم بتوليده باستخدام:
openssl rand -hex 32 - لا تشارك علنًا
- تغيير هذا يبطل جميع جلسات المستخدم الحالية
- استخدم أسرار مختلفة للتطوير/الاختبار/الإنتاج
تكوين دفع Stripe
stripe:
secret_key: 'sk_test_...'
publishable_key: 'pk_test_...'
currency: 'usd'
statement_descriptor_suffix: 'YOURCOMPANY'
الحقول:
secret_key- مفتاح API السري لـ Stripe (يبدأ بـsk_)publishable_key- مفتاح قابل للنشر لـ Stripe (يبدأ بـpk_)currency- رمز العملة ISO 4217 (usd، gbp، aud، eur، إلخ)statement_descriptor_suffix- النص الذي يظهر على بيانات بطاقات الائتمان للعملاء
أنواع المفاتيح:
- مفاتيح الاختبار:
sk_test_...وpk_test_...(للتطوير) - مفاتيح الإنتاج:
sk_live_...وpk_live_...(لإنتاج)
انظر integrations_stripe للحص��ل على تفاصيل الإعداد.
مفاتيح API
api_keys:
"your-secure-api-key-minimum-32-chars":
roles: ["admin"]
ips: ["127.0.0.1", "::1"]
"another-api-key-for-specific-service":
roles: ["customer_service_agent_1"]
ips: ["10.0.1.50"]
الهيكل:
- المفتاح (سلسلة نصية): مفتاح API الفعلي (حد أدنى 32 حرفًا)
- الأدوار (قائمة): أسماء الأدوار التي يمكن لهذا المفتاح الوصول إليها
- ips (قائمة، اختيارية): عناوين IP المسموح لها باستخدام هذا المفتاح
توليد مفاتيح API:
openssl rand -base64 48
الأدوار:
admin- وصول كامل إلى جميع نقاط النهاية- أدوار مخصصة محددة في نظام RBAC
انظر administration_api_keys و concepts_api للحصول على التفاصيل.
قائمة IP البيضاء
ip_whitelist:
"10.179.2.142":
roles: ["admin"]
"192.168.1.100":
roles: ["provisioning"]
الغرض: السماح لعناوين IP محددة بالوصول إلى واجهة برمجة التطبيقات دون مصادقة.
الهيكل:
- عنوان IP (سلسلة نصية): عنوان IPv4 لإضافته إلى القائمة البيضاء
- الأدوار (قائمة): الأدوار المعينة للطلبات من هذا IP
تحذير أمان:
- استخدمه فقط للشبكات الداخلية الموثوقة
- يجب ألا تستخدم عناوين IP المحلية (127.0.0.1، ::1)
- استخدم مفاتيح API بدلاً من ذلك للوصول الخارجي
- اعتبر قواعد جدار الحماية كحماية إضافية
التكوين الأمامي (.env)
تم تكوين واجهة المستخدم React عبر متغيرات البيئة في OmniCRM-UI/.env.
تكوين العلامة التجارية
REACT_APP_COMPANY_NAME="YourCompany"
REACT_APP_PORTAL_NAME="YourPortal"
REACT_APP_SELF_CARE_NAME="YourCare"
REACT_APP_COMPANY_TAGLINE="Your Company Slogan"
الحقول:
REACT_APP_COMPANY_NAME- اسم الشركة (يظهر في العناوين، البريد الإلكتروني، العلامة التجارية)REACT_APP_PORTAL_NAME- اسم بوابة الإدارة (عناوين الصفحات، التنقل)REACT_APP_SELF_CARE_NAME- اسم بوابة العملاءREACT_APP_COMPANY_TAGLINE- الشعار التسويقي (يظهر في صفحة تسجيل الدخول)
مثال:
التكوين الإقليمي
REACT_APP_DEFAULT_LOCATION="London, United Kingdom"
REACT_APP_DEFAULT_COUNTRY="United Kingdom"
REACT_APP_DEFAULT_LANGUAGE="en"
REACT_APP_LOCALE="en-GB"
الحقول:
REACT_APP_DEFAULT_LOCATION- الموقع الافتراضي للخرائط والعناوينREACT_APP_DEFAULT_COUNTRY- الدولة الافتراضية للنماذجREACT_APP_DEFAULT_LANGUAGE- لغة واجهة المستخدم (ar، ch، en، fr، gr، it، ru، sp)REACT_APP_LOCALE- تنسيق التاريخ/الرقم (en-GB، en-US، إلخ)
اللغات المدعومة:
ar- العربيةch- الصينيةen- الإنجليزية (افتراضي)fr- الفرنسيةgr- اليونانيةit- الإيطاليةru- الروسيةsp- الإسبانية
تكوين العملة
REACT_APP_CURRENCY_CODE="USD"
REACT_APP_CURRENCY_SYMBOL="$"
الحقول:
REACT_APP_CURRENCY_CODE- رمز العملة ISO 4217REACT_APP_CURRENCY_SYMBOL- الرمز الذي سيتم عرضه (£، $، €، إلخ)
العملات الشائعة:
- USD - $ (الدولار الأمريكي)
- GBP - £ (الجنيه البريطاني)
- EUR - € (اليورو)
- AUD - $ (الدولار الأسترالي)
- CAD - $ (الدولار الكندي)
ملاحظة: يجب أن تتطابق مع stripe.currency في crm_config.yaml.
تكوين سمة اللون
REACT_APP_PRIMARY_COLOR=#405189
REACT_APP_SECONDARY_COLOR=#2bFFcf
REACT_APP_TERTIARY_COLOR=#1a9fbf
الألوان المتاحة:
REACT_APP_PRIMARY_COLOR- اللون الرئيسي للعلامة التجارية (الأزرار، الروابط، التمييزات)REACT_APP_SECONDARY_COLOR- لون التمييزREACT_APP_TERTIARY_COLOR- تمييز إضافيREACT_APP_SUCCESS_COLOR- رسائل النجاح (#28a745)REACT_APP_INFO_COLOR- رسائل المعلومات (#17a2b8)REACT_APP_WARNING_COLOR- التحذيرات (#ffc107)REACT_APP_DANGER_COLOR- الأخطاء (#dc3545)REACT_APP_LIGHT_COLOR- الخلفيات الفاتحة (#f8f9fa)REACT_APP_DARK_COLOR- النصوص الداكنة (#343a40)REACT_APP_PRIMARY_DARK_COLOR- النسخة الداكنة من اللون الرئيسي (لوضع الظلام/حالات التحويم)
التنسيق: رموز اللون السداسية (#RRGGBB)
تكوين الخط
REACT_APP_FONT_FAMILY=Quicksand
الغرض: يحدد عائلة الخط الرئيسية لواجهة المستخدم بالكامل.
مهم: جميع الخطوط مستضافة محليًا داخل تطبيق OmniCRM-UI. هذا يعني:
- لا تحميل خطوط خارجية - الخطوط مضمنة مع التطبيق
- متوافقة مع البيئة المغلقة - لا حاجة للوصول إلى الإنترنت لتعمل الخطوط
- تشغيل غير متصل - وظيفة كاملة في بيئات الشبكات المعزولة أو المقيدة
- الخصوصية - لا طلبات خارجية إلى Google Fonts، Adobe Fonts، أو غيرها من CDNs
- الأداء - تحميل أسرع بدون تبعيات خارجية
- الأمان - لا تتبع من جهات خارجية أو تسرب بيانات من خلال طلبات الخطوط
الخيارات المتاحة:
خطوط بدون سيريف:
- Inter
- Roboto
- Open Sans
- Lato
- Quicksand (افتراضي)
- Poppins
- Nunito
- Montserrat
- Work Sans
- Source Sans Pro
- Raleway
- Ubuntu
- Josefin Sans
- HKGrotesk
خطوط سيريف:
- Merriweather
- Lora
- Playfair Display
خطوط النظام:
- System - تستخدم خطوط الجهاز الأصلية لأفضل أداء وأصغر حجم حزمة
الافتراضي: Quicksand
إضافة خطوط مخصصة
نعم، يمكنك إضافة خطوط إضافية! جميع الخطوط مخزنة محليًا في التطبيق.
لإضافة خط مخصص جديد:
-
أضف ملفات الخطوط إلى
OmniCRM-UI/src/assets/fonts/your-font-name/- استخدم تنسيق WOFF2 لأفضل ضغط ودعم المتصفح
- قم بتضمين أوزان متعددة (300، 400، 500، 600، 700) للتقديم الصحيح
- اسم الملفات:
your-font-name-300.woff2,your-font-name-400.woff2، إلخ.
-
حدد قواعد @font-face في
OmniCRM-UI/src/assets/scss/fonts/_google-fonts.scss//
// خطك المخصص - الوصف
//
@font-face {
font-family: 'Your Font Name';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("../../fonts/your-font-name/your-font-name-400.woff2") format('woff2');
}
@font-face {
font-family: 'Your Font Name';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("../../fonts/your-font-name/your-font-name-700.woff2") format('woff2');
} -
حدد في ملف .env:
REACT_APP_FONT_FAMILY=Your Font Name
إرشادات وزن الخط:
- 300 - خفيف (اختياري، للعناوين الدقيقة)
- 400 - عادي (مطلوب، نص افتراضي)
- 500 - متوسط (اختياري، للتأكيد)
- 600 - شبه غامق (اختياري، العناوين الفرعية)
- 700 - غامق (مطلوب، العناوين والنصوص القوية)
ملاحظة: تظل جميع الخطوط مستضافة محليًا وتعمل دون اتصال. لا حاجة إلى CDN خارجي أو اتصال بالإنترنت.
الخدمات الخارجية
REACT_APP_GOOGLE_API_KEY=your_google_maps_api_key
REACT_APP_STRIPE_PUBLISHABLE_KEY=pk_test_...
الحقول:
REACT_APP_GOOGLE_API_KEY- مفتاح API لخرائط Google (للخرائط، الجغرافيا)REACT_APP_STRIPE_PUBLISHABLE_KEY- مفتاح قابل للنشر لـ Stripe (للدفعات)
يجب أن تتطابق:
يجب أن يتطابق REACT_APP_STRIPE_PUBLISHABLE_KEY مع stripe.publishable_key في crm_config.yaml.
روابط سريعة لتطبيق الويب
REACT_APP_WEB_APP_1_NAME="GitHub"
REACT_APP_WEB_APP_1_URL="https://github.com"
REACT_APP_WEB_APP_1_ICON_PATH="resources/webapp_icons/github.png"
الغرض: تكوين ما يصل إلى 6 روابط سريعة لتطبيقات الويب في واجهة المستخدم.
النمط:
REACT_APP_WEB_APP_N_NAME- اسم العرضREACT_APP_WEB_APP_N_URL- عنوان URL المستهدفREACT_APP_WEB_APP_N_ICON_PATH- مسار ملف الأيقونة (نسبي إلى public/)
أمثلة على الأيقونات: GitHub، Xero، Monday.com، Gmail، MailJet، Slack
تكامل Grafana
REACT_APP_GRAFANA_URLS=http://grafana1.local/d/abc,http://grafana2.local/d/xyz
REACT_APP_GRAFANA_LABELS=Network Monitoring,Service Health
REACT_APP_GRAFANA_API_KEY=your_grafana_api_key
الحقول:
REACT_APP_GRAFANA_URLS- قائمة مفصولة بفواصل لعناوين URL لوحات معلومات GrafanaREACT_APP_GRAFANA_LABELS- قائمة مفصولة بفواصل بأسماء لوحات المعلوماتREACT_APP_GRAFANA_API_KEY- مفتاح API لـ Grafana للتضمين
الاستخدام: يدمج لوحات معلومات Grafana في صفحة لوحة معلومات OmniCRM.
روابط الدعم
REACT_APP_FAQS_URL=https://support.yourcompany.com/faqs
REACT_APP_SUPPORT_URL=https://support.yourcompany.com
الغرض: روابط لموارد الدعم الخارجية تظهر في واجهة المستخدم.
تسجيلات الدخول الاجتماعية
REACT_APP_ALLOW_SOCIAL_LOGINS=yes
الخيارات:
yes- تمكين أزرار تسجيل الدخول الاجتماعي (Google، Facebook، إلخ)no- تعطيل تسجيلات الدخول الاجتماعية
ملاحظة: يجب تكوين مزودي تسجيل الدخول الاجتماعي بشكل منفصل.
تكوين الشحن وإعادة الشحن
REACT_APP_TOPUP_PRICE_PER_DAY=10
الغرض: يحدد السعر اليومي لخدمات الشحن/إعادة الشحن في بوابة الرعاية الذاتية.
الحقول:
REACT_APP_TOPUP_PRICE_PER_DAY- السعر اليومي لخدمات إعادة الشحن (قيمة عددية)
مثال: إذا تم تعيينه على 10 وكانت العملة بالدولار الأمريكي، يدفع العملاء $10 لكل يوم خدمة.
ملاحظة: يجب أن تتطابق هذه القيمة مع تكوين الأسعار الخلفية. انظر features_topup_recharge للحصول على تفاصيل الإعداد الكاملة.
تطبيق تغييرا�� التكوين
الخلفية (crm_config.yaml)
- تحرير
OmniCRM-API/crm_config.yaml - حفظ التغييرات
- إعادة تشغيل خدمة واجهة برمجة التطبيقات:
cd OmniCRM-API
sudo systemctl restart omnicrm-api
# أو
./restart_api.sh
تدخل التغييرات حيز التنفيذ على الفور بعد إعادة التشغيل.
الواجهة الأمامية (.env)
- تحرير
OmniCRM-UI/.env - حفظ التغييرات
- إعادة بناء واجهة المستخدم:
cd OmniCRM-UI
npm run build
- إعادة تشغيل خدمة واجهة المستخدم أو خادم الويب
وضع التطوير:
أثناء التطوير باستخدام npm start، أعد تشغيل خادم التطوير لتطبيق التغييرات.
أفضل ممارسات التكوين
الأمان
- لا تقم أبداً بإرسال الأسرار - استخدم
.gitignoreلملفات التكوين التي تحتوي على بيانات الاعتماد - استخدم تكوينات خاصة بالبيئة - فصل تكوينات التطوير/الاختبار/الإنتاج
- قم بتدوير الأسرار بانتظام - تحديث أسرار JWT، مفاتيح API بش��ل دوري
- حدد أذونات مفاتيح API - تعيين الأدوار الضرورية فقط
- استخدم قائمة IP البيضاء بحذر - تفضل مفاتيح API لأمان أفضل
الصيانة
- وثق التغييرات - احتفظ بسجل التغييرات لتعديلات التكوين
- نسخ احتياطي للتكوينات - تخزين نسخ قبل التغييرات الكبيرة
- اختبار في بيئة الاختبار - تحقق من تغييرات التكوين قبل النشر في الإنتاج
- تحكم في الإصدارات - تتبع قوالب التكوين (بدون أسرار) في git
الأداء
- استخدم قاعدة بيانات محلية - تجنب قاعدة بيانات بعيدة للحصول على أداء أفضل
- تكوين التخزين المؤقت - تمكين تخزين OCS إذا كان متاحًا
- تحسين Grafana - تقليل عدد لوحات المعلومات المدمجة
العلامة التجارية
- مطابقة الألوان - تأكد من أن ألوان واجهة المستخدم تكمل شعارك
- اختبار التباين - تحقق من قابلية قراءة النص على الخلفيات الملونة
- اختبا�� الجوال - تحقق من العلامة التجارية على الأجهزة المحمولة
- موضع الشعار - ضع شعارات الشركة في
OmniCRM-UI/public/resources/
استكشاف الأخطاء وإصلاحها
التغييرات لم تُطبق
- السبب: لم يتم إعادة تشغيل الخدمة أو إعادة بناء واجهة المستخدم
- الإصلاح: إعادة تشغيل خدمات واجهة برمجة التطبيقات/واجهة المستخدم بعد تغييرات التكوين
أخطاء صياغة YAML
- السبب: تنسيق YAML غير صالح (التحجيم، الاقتباسات، إلخ)
- الإصلاح: تحقق من صحة YAML عبر الإنترنت أو استخدم
yamllint crm_config.yaml
فشل اتصال قاعدة البيانات
- السبب: بيانات اعتماد خاطئة أو الخادم غير متاح
- الإصلاح: تحقق من أن قاعدة البيانات تعمل، وأن بيانات الاعتماد صحيحة
مدفوعات Stripe لا تعمل
- السبب: مفاتيح غير متطابقة بين الخلفية والواجهة الأمامية
- الإصلاح: تأكد من تطابق
publishable_keyفي كلا ال��لفين
البريد الإلكتروني لا يُرسل
- السبب: بيانات اعتماد Mailjet غير صالحة أو معرفات القوالب
- الإصلاح: تحقق من مفتاح/سر Mailjet، تحقق من وجود معرفات القوالب
الوثائق ذات الصلة
administration_api_keys- إدارة مفاتيح APIintegrations_stripe- إعداد دفع Stripeintegrations_mailjet- تكامل البريد الإلكترونيconcepts_api- مصادقة واجهة برمجة التطبيقاتrbac- التحكم في الوصول القائم على الأدوار