Aller au contenu principal

Configuration du Système

OmniCRM utilise deux principaux systèmes de configuration : crm_config.yaml pour les paramètres de l'API backend et variables d'environnement pour l'interface utilisateur React. Ce guide couvre toutes les options de configuration et comment les modifier.

Aperçu des Fichiers de Configuration

Configuration de l'API Backend :

  • Fichier : OmniCRM-API/crm_config.yaml
  • Format : YAML
  • Nécessite : Redémarrage de l'API après modifications
  • Utilisé pour : Base de données, intégrations, sécurité, provisionnement

Configuration de l'Interface Utilisateur Frontend :

  • Fichier : OmniCRM-UI/.env
  • Format : Variables d'environnement
  • Nécessite : Reconstruction de l'UI après modifications
  • Utilisé pour : Branding, fonctionnalités, services externes

Configuration Backend (crm_config.yaml)

Le fichier crm_config.yaml contient tous les paramètres du système backend.

Configuration de la Base de Données

database:
username: omnitouch
password: omnitouch2024
server: localhost

Champs :

  • username - Nom d'utilisateur de la base de données MySQL
  • password - Mot de passe de la base de données MySQL
  • server - Nom d'hôte ou IP du serveur de base de données (par défaut : localhost)

Connexion à la Base de Données :

  • Le nom de la base de données est codé en dur comme omnicrm
  • Port par défaut : 3306 (par défaut MySQL)
  • Chaîne de connexion : mysql+pymysql://username:password@server/omnicrm

Remarque de Sécurité : Ne jamais valider ce fichier avec de vraies informations d'identification dans le contrôle de version. Utilisez une configuration spécifique à l'environnement ou une gestion des secrets.

Types de Services

service_types:
- omnicharge
- mobile
- internet
- iptv
- voip

But : Définit les valeurs de type de service valides pour le champ service_type.

Types Par Défaut :

  • mobile - Services mobiles/ cellulaires
  • internet - Internet fixe (fibre, DSL, sans fil)
  • iptv - Services de télévision
  • voip - Services de voix sur IP
  • omnicharge - Services de facturation/chargement

Ajoutez des types de services personnalisés ici pour vos cas d'utilisation spécifiques.

Configuration HSS (Home Subscriber Server)

hss:
hss_peers:
- 'http://10.179.2.140:8080'
apn_list: "1,2,3,4,5,6"

Champs :

  • hss_peers - Liste des URL des serveurs HSS pour la gestion des abonnés
  • apn_list - Liste séparée par des virgules des identifiants APN (Access Point Name)

Utilisé pour : Provisionnement de réseau mobile et authentification des abonnés.

Configuration de Mailjet Email

mailjet:
api_key: your_mailjet_api_key
api_secret: your_mailjet_api_secret

api_crmCommunicationCustomerWelcome:
from_email: "support@yourcompany.com"
from_name: "Votre Support Entreprise"
template_id: 5977509
subject: "Bienvenue chez Votre Entreprise"

api_crmCommunicationCustomerInvoice:
from_email: "billing@yourcompany.com"
from_name: "Votre Facturation Entreprise"
template_id: 6759851
subject: "Votre Facture - "

Types d'Email Configurés :

  • api_crmCommunicationCustomerWelcome - Email de bienvenue pour les nouveaux clients
  • api_crmCommunicationCustomerInvoice - Livraison de facture
  • api_crmCommunicationCustomerInvoiceReminder - Rappels de facture en retard
  • api_crmCommunicationUserWelcome - Bienvenue pour le nouvel utilisateur du personnel
  • api_crmCommunicationUserPasswordReset - Demandes de réinitialisation de mot de passe
  • api_crmCommunicationUserPasswordResetSuccess - Réinitialisation de mot de passe réussie
  • api_crmCommunicationUserPasswordChange - Notifications de changement de mot de passe
  • api_crmCommunicationEmailVerification - Vérification de l'adresse email
  • api_crmCommunicationsBalanceExpired - Notifications d'expiration de service
  • api_crmCommunicationsBalanceLow - Alertes de solde faible

IDs de Modèle :

Obtenez-les depuis votre compte Mailjet après avoir créé des modèles d'email. Voir integrations_mailjet pour les détails.

Configuration de Provisionnement

provisioning:
failure_list: ['admin@yourcompany.com', 'ops@yourcompany.com']

Champs :

  • failure_list - Adresses email à notifier lorsque le provisionnement échoue

Lorsque les playbooks Ansible échouent pendant le provisionnement, le système envoie les détails des erreurs à ces adresses.

Configuration de Facture

invoice:
template_filename: 'your_invoice_template.html'

Champs :

  • template_filename - Fichier de modèle HTML pour la génération de factures

Le fichier de modèle doit exister dans le répertoire OmniCRM-API/templates/.

URL de Base du CRM

crm:
base_url: 'http://localhost:5000'

But : Utilisé par les playbooks Ansible pour effectuer des appels API vers le CRM.

Important :

  • Ne PAS inclure de barre oblique à la fin
  • Utilisez une URL accessible publiquement si les playbooks s'exécutent sur des serveurs différents
  • Mettez à jour lors du déploiement en production (par exemple, https://api.yourcrm.com)

Configuration OCS (Online Charging System)

ocs:
ocsApi: 'http://10.179.2.142:8080/api'
ocsTenant: 'mnc380.mcc313.3gppnetwork.org'
cgrates: 'localhost:2080'

Champs :

  • ocsApi - URL du point de terminaison de l'API REST OCS
  • ocsTenant - Identifiant du locataire pour les déploiements OCS multi-locataires
  • cgrates - Point de terminaison CGRateS JSON-RPC (hôte:port)

Utilisé pour : Chargement en temps réel, gestion des soldes, suivi de l'utilisation.

Configuration SMSC (SMS Center)

smsc:
source_msisdn: 'YourCompany'
smsc_url: 'http://10.179.2.216/SMSc/'
api_key: 'your_smsc_api_key'

Champs :

  • source_msisdn - ID d'expéditeur pour les SMS sortants (nom de l'entreprise ou code court)
  • smsc_url - Point de terminaison de l'API du Centre SMS
  • api_key - Clé d'authentification pour l'API SMSC

Utilisé pour : Envoi de notifications SMS (alertes de solde, OTP, etc.)

Configuration de Cell Broadcast

cbc_url: 'http://10.179.1.113:8080'

But : Point de terminaison de l'API du Centre de Diffusion Cellulaire (CBC) pour les alertes d'urgence.

Voir features_cell_broadcast pour les détails d'utilisation.

Clé Secrète JWT

jwt_secret: '2b93110f723db60172c8e9a1eaa80027a9a9c3f05b44e50dc3fcf38dba68d87e'

But : Clé secrète pour signer les jetons d'authentification JWT.

Sécurité :

  • Générer en utilisant : openssl rand -hex 32
  • Ne jamais partager publiquement
  • Changer cela invalide toutes les sessions utilisateur existantes
  • Utilisez des secrets différents pour dev/staging/production

Configuration de Paiement Stripe

stripe:
secret_key: 'sk_test_...'
publishable_key: 'pk_test_...'
currency: 'usd'
statement_descriptor_suffix: 'YOURCOMPANY'

Champs :

  • secret_key - Clé API secrète Stripe (commence par sk_)
  • publishable_key - Clé publiable Stripe (commence par pk_)
  • currency - Code de devise ISO 4217 (usd, gbp, aud, eur, etc.)
  • statement_descriptor_suffix - Texte apparaissant sur les relevés de carte de crédit des clients

Types de Clés :

  • Clés de test : sk_test_... et pk_test_... (pour le développement)
  • Clés en direct : sk_live_... et pk_live_... (pour la production)

Voir integrations_stripe pour les détails de configuration.

Clés 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"]

Structure :

  • Clé (chaîne) : La clé API réelle (minimum 32 caractères)
  • roles (liste) : Noms de rôle auxquels cette clé a accès
  • ips (liste, optionnelle) : Adresses IP autorisées à utiliser cette clé

Génération de Clés API :

openssl rand -base64 48

Rôles :

  • admin - Accès complet à tous les points de terminaison
  • Rôles personnalisés définis dans le système RBAC

Voir administration_api_keys et concepts_api pour les détails.

Liste Blanche d'IP

ip_whitelist:
"10.179.2.142":
roles: ["admin"]
"192.168.1.100":
roles: ["provisioning"]

But : Permettre à des adresses IP spécifiques d'accéder à l'API sans authentification.

Structure :

  • Adresse IP (chaîne) : Adresse IPv4 à mettre sur liste blanche
  • roles (liste) : Rôles attribués aux demandes provenant de cette IP

Avertissement de Sécurité :

  • Utiliser uniquement pour des réseaux internes de confiance
  • Ne pas utiliser d'IP localhost (127.0.0.1, ::1)
  • Utiliser des clés API à la place pour un accès externe
  • Considérer les règles de pare-feu comme protection supplémentaire

Configuration Frontend (.env)

L'interface utilisateur React est configurée via des variables d'environnement dans OmniCRM-UI/.env.

Configuration de Branding

REACT_APP_COMPANY_NAME="VotreEntreprise"
REACT_APP_PORTAL_NAME="VotrePortail"
REACT_APP_SELF_CARE_NAME="VotreSoin"
REACT_APP_COMPANY_TAGLINE="Votre Slogan d'Entreprise"

Champs :

  • REACT_APP_COMPANY_NAME - Nom de l'entreprise (apparaît dans les en-têtes, emails, branding)
  • REACT_APP_PORTAL_NAME - Nom du portail admin (titres de page, navigation)
  • REACT_APP_SELF_CARE_NAME - Nom du portail client
  • REACT_APP_COMPANY_TAGLINE - Slogan marketing (apparaît sur la page de connexion)

Exemple :

Configuration Régionale

REACT_APP_DEFAULT_LOCATION="Londres, Royaume-Uni"
REACT_APP_DEFAULT_COUNTRY="Royaume-Uni"
REACT_APP_DEFAULT_LANGUAGE="en"
REACT_APP_LOCALE="en-GB"

Champs :

  • REACT_APP_DEFAULT_LOCATION - Emplacement par défaut pour les cartes et adresses
  • REACT_APP_DEFAULT_COUNTRY - Pays par défaut pour les formulaires
  • REACT_APP_DEFAULT_LANGUAGE - Langue de l'UI (ar, ch, en, fr, gr, it, ru, sp)
  • REACT_APP_LOCALE - Locale de formatage de date/nombre (en-GB, en-US, etc.)

Langues Supportées :

  • ar - Arabe
  • ch - Chinois
  • en - Anglais (par défaut)
  • fr - Français
  • gr - Grec
  • it - Italien
  • ru - Russe
  • sp - Espagnol

Configuration de Devise

REACT_APP_CURRENCY_CODE="USD"
REACT_APP_CURRENCY_SYMBOL="$"

Champs :

  • REACT_APP_CURRENCY_CODE - Code de devise ISO 4217
  • REACT_APP_CURRENCY_SYMBOL - Symbole à afficher (£, $, €, etc.)

Devises Courantes :

  • USD - $ (Dollar US)
  • GBP - £ (Livre Sterling)
  • EUR - € (Euro)
  • AUD - $ (Dollar Australien)
  • CAD - $ (Dollar Canadien)

Remarque : Doit correspondre à stripe.currency dans crm_config.yaml.

Configuration de Thème de Couleur

REACT_APP_PRIMARY_COLOR=#405189
REACT_APP_SECONDARY_COLOR=#2bFFcf
REACT_APP_TERTIARY_COLOR=#1a9fbf

Couleurs Disponibles :

  • REACT_APP_PRIMARY_COLOR - Couleur principale de la marque (boutons, liens, surlignages)
  • REACT_APP_SECONDARY_COLOR - Couleur d'accent
  • REACT_APP_TERTIARY_COLOR - Accent supplémentaire
  • REACT_APP_SUCCESS_COLOR - Messages de succès (#28a745)
  • REACT_APP_INFO_COLOR - Messages d'information (#17a2b8)
  • REACT_APP_WARNING_COLOR - Avertissements (#ffc107)
  • REACT_APP_DANGER_COLOR - Erreurs (#dc3545)
  • REACT_APP_LIGHT_COLOR - Arrière-plans clairs (#f8f9fa)
  • REACT_APP_DARK_COLOR - Texte sombre (#343a40)
  • REACT_APP_PRIMARY_DARK_COLOR - Variante sombre de la couleur primaire (pour le mode sombre/états de survol)

Format : Codes de couleur hexadécimaux (#RRGGBB)

Configuration de Police

REACT_APP_FONT_FAMILY=Quicksand

But : Définit la famille de police principale pour l'ensemble de l'UI.

Important : Toutes les polices sont auto-hébergées localement au sein de l'application OmniCRM-UI. Cela signifie :

  • Pas de chargement de police externe - Les polices sont regroupées avec l'application
  • Compatible jardin clos - Aucun accès Internet requis pour que les polices fonctionnent
  • Fonctionnement hors ligne - Fonctionnalité complète dans des environnements réseau isolés ou restreints
  • Confidentialité - Pas de requêtes externes vers Google Fonts, Adobe Fonts ou d'autres CDN
  • Performance - Chargement plus rapide sans dépendances externes
  • Sécurité - Pas de suivi tiers ou de fuite de données via des requêtes de police

Options Disponibles :

Polices Sans Serif :

  • Inter
  • Roboto
  • Open Sans
  • Lato
  • Quicksand (par défaut)
  • Poppins
  • Nunito
  • Montserrat
  • Work Sans
  • Source Sans Pro
  • Raleway
  • Ubuntu
  • Josefin Sans
  • HKGrotesk

Polices Serif :

  • Merriweather
  • Lora
  • Playfair Display

Polices Système :

  • Système - Utilise les polices natives de l'appareil pour une meilleure performance et une taille de bundle plus petite

Par Défaut : Quicksand

Ajout de Polices Personnalisées

Oui, vous pouvez ajouter des polices supplémentaires ! Toutes les polices sont stockées localement dans l'application.

Pour ajouter une nouvelle police personnalisée :

  1. Ajoutez les fichiers de police dans OmniCRM-UI/src/assets/fonts/your-font-name/

    • Utilisez le format WOFF2 pour une meilleure compression et un meilleur support des navigateurs
    • Incluez plusieurs poids (300, 400, 500, 600, 700) pour un rendu approprié
    • Nommez les fichiers : your-font-name-300.woff2, your-font-name-400.woff2, etc.
  2. Définissez les règles @font-face dans OmniCRM-UI/src/assets/scss/fonts/_google-fonts.scss

    //
    // Votre Police Personnalisée - Description
    //

    @font-face {
    font-family: 'Votre Nom de Police';
    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: 'Votre Nom de Police';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url("../../fonts/your-font-name/your-font-name-700.woff2") format('woff2');
    }
  3. Définissez dans le fichier .env :

    REACT_APP_FONT_FAMILY=Votre Nom de Police

Directives de Poids de Police :

  • 300 - Léger (optionnel, pour des titres subtils)
  • 400 - Régulier (obligatoire, texte par défaut)
  • 500 - Moyen (optionnel, accentuation)
  • 600 - Semi-Gras (optionnel, sous-titres)
  • 700 - Gras (obligatoire, titres et texte fort)

Remarque : Toutes les polices restent auto-hébergées et fonctionnent hors ligne. Aucun CDN externe ou connexion Internet requise.

Services Externes

REACT_APP_GOOGLE_API_KEY=your_google_maps_api_key
REACT_APP_STRIPE_PUBLISHABLE_KEY=pk_test_...

Champs :

  • REACT_APP_GOOGLE_API_KEY - Clé API Google Maps (pour les cartes, géolocalisation)
  • REACT_APP_STRIPE_PUBLISHABLE_KEY - Clé publiable Stripe (pour les paiements)

Doit Correspondre :

REACT_APP_STRIPE_PUBLISHABLE_KEY doit correspondre à stripe.publishable_key dans crm_config.yaml.

Liens Rapides vers l'Application Web

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"

But : Configurez jusqu'à 6 liens d'accès rapide vers des applications web dans la navigation de l'UI.

Modèle :

  • REACT_APP_WEB_APP_N_NAME - Nom affiché
  • REACT_APP_WEB_APP_N_URL - URL cible
  • REACT_APP_WEB_APP_N_ICON_PATH - Chemin du fichier d'icône (relatif à public/)

Exemples d'Icônes : GitHub, Xero, Monday.com, Gmail, MailJet, Slack

Intégration Grafana

REACT_APP_GRAFANA_URLS=http://grafana1.local/d/abc,http://grafana2.local/d/xyz
REACT_APP_GRAFANA_LABELS=Surveillance Réseau,Santé du Service
REACT_APP_GRAFANA_API_KEY=your_grafana_api_key

Champs :

  • REACT_APP_GRAFANA_URLS - Liste séparée par des virgules des URL de tableaux de bord Grafana
  • REACT_APP_GRAFANA_LABELS - Liste séparée par des virgules des noms de tableaux de bord
  • REACT_APP_GRAFANA_API_KEY - Clé API Grafana pour l'intégration

Utilisation : Intègre les tableaux de bord Grafana dans la page de tableau de bord d'OmniCRM.

URL de Support

REACT_APP_FAQS_URL=https://support.yourcompany.com/faqs
REACT_APP_SUPPORT_URL=https://support.yourcompany.com

But : Liens vers des ressources de support externes affichées dans l'UI.

Connexions Sociales

REACT_APP_ALLOW_SOCIAL_LOGINS=yes

Options :

  • yes - Activer les boutons de connexion sociale (Google, Facebook, etc.)
  • no - Désactiver les connexions sociales

Remarque : Les fournisseurs de connexion sociale doivent être configurés séparément.

Configuration de Recharge et de Remplissage

REACT_APP_TOPUP_PRICE_PER_DAY=10

But : Définit le prix par jour pour les services de recharge/remplissage dans le portail de self-care.

Champs :

  • REACT_APP_TOPUP_PRICE_PER_DAY - Prix quotidien pour les services de recharge (valeur numérique)

Exemple : Si défini à 10 et que la devise est USD, les clients paient $10 par jour de service.

Remarque : Cette valeur doit correspondre à la configuration des prix backend. Voir features_topup_recharge pour les détails complets de configuration.

Application des Changements de Configuration

Backend (crm_config.yaml)

  1. Éditez OmniCRM-API/crm_config.yaml
  2. Enregistrez les modifications
  3. Redémarrez le service API :
cd OmniCRM-API
sudo systemctl restart omnicrm-api
# ou
./restart_api.sh

Les changements prennent effet immédiatement après le redémarrage.

Frontend (.env)

  1. Éditez OmniCRM-UI/.env
  2. Enregistrez les modifications
  3. Reconstruisez l'UI :
cd OmniCRM-UI
npm run build
  1. Redémarrez le service UI ou le serveur web

Mode Développement :

Pendant le développement avec npm start, redémarrez le serveur de développement pour appliquer les changements.

Meilleures Pratiques de Configuration

Sécurité

  • Ne jamais valider de secrets - Utilisez .gitignore pour les fichiers de configuration avec des informations d'identification
  • Utilisez des configurations spécifiques à l'environnement - Séparez les configurations dev/staging/production
  • Faites tourner les secrets régulièrement - Mettez à jour les secrets JWT, les clés API périodiquement
  • Limitez les permissions des clés API - Attribuez les rôles minimaux nécessaires
  • Utilisez la liste blanche d'IP avec parcimonie - Préférez les clés API pour une meilleure sécurité

Maintenance

  • Documentez les changements - Gardez un changelog des modifications de configuration
  • Sauvegardez les configs - Conservez des copies avant les changements majeurs
  • Testez en staging - Vérifiez les changements de configuration avant le déploiement en production
  • Contrôle de version - Suivez les modèles de configuration (sans secrets) dans git

Performance

  • Utilisez une base de données locale - Évitez la base de données distante pour de meilleures performances
  • Configurez le caching - Activez le caching OCS si disponible
  • Optimisez Grafana - Limitez le nombre de tableaux de bord intégrés

Branding

  • Correspondance des couleurs - Assurez-vous que les couleurs de l'UI complètent votre logo
  • Testez le contraste - Vérifiez la lisibilité du texte sur des arrière-plans colorés
  • Tests mobiles - Vérifiez le branding sur des appareils mobiles
  • Placement du logo - Placez les logos de l'entreprise dans OmniCRM-UI/public/resources/

Dépannage

Changements non appliqués

  • Cause : Service non redémarré ou UI non reconstruite
  • Solution : Redémarrez les services API/UI après les changements de configuration

Erreurs de syntaxe YAML

  • Cause : Formatage YAML invalide (indentation, guillemets, etc.)
  • Solution : Validez le YAML en ligne ou utilisez yamllint crm_config.yaml

Échec de la connexion à la base de données

  • Cause : Mauvaises informations d'identification ou serveur inaccessible
  • Solution : Vérifiez que la base de données fonctionne, que les informations d'identification sont correctes

Les paiements Stripe ne fonctionnent pas

  • Cause : Clés non correspondantes entre le backend et le frontend
  • Solution : Assurez-vous que publishable_key correspond dans les deux fichiers

Emails non envoyés

  • Cause : Informations d'identification Mailjet invalides ou IDs de modèle
  • Solution : Vérifiez la clé/secrète API Mailjet, vérifiez que les IDs de modèle existent

Documentation Connexe

  • administration_api_keys - Gestion des clés API
  • integrations_stripe - Configuration de paiement Stripe
  • integrations_mailjet - Intégration d'email
  • concepts_api - Authentification API
  • rbac - Contrôle d'accès basé sur les rôles