Documentation

Guides complets et documentation pour SQLVantage

Préface

Manuel d'utilisation SQLVantage (Français)

Version applicable : v1.0.2 (publiée le 2026-07-15) Ce document est le manuel d'utilisation complet de SQLVantage. Il se divise en cinq grandes parties : « Installation et déploiement », « Configuration », « Guide de l'administrateur », « Guide de conception des rapports » et « Guide de l'utilisateur standard » ; administrateurs et utilisateurs standard y trouvent chacun ce dont ils ont besoin.


1. Vue d'ensemble du système

1.1 De quoi s'agit-il

SQLVantage est un système de rapports Web. L'« administrateur » gère les définitions de rapports, tandis que les « utilisateurs standard » sélectionnent un rapport sur une page Web, remplissent les conditions de requête, obtiennent les résultats de manière asynchrone et exportent en Excel / HTML / JSON / TEXT.

1.2 Pile technologique

Le système repose sur une architecture purement Web : le navigateur ne nécessite l'installation d'aucun client ni plug-in, un navigateur moderne suffit ; le serveur ne requiert que le programme exécutable et son répertoire de configuration associé pour fonctionner, le déploiement est simple.

1.3 Concepts fondamentaux

Concept Description
Rapport (Report) Un rapport = code SQL + FORM + HTML + trois fichiers JSON de format (SqlFormat / FormFormat / HtmlFormat), rattaché à une certaine « responsabilité »
Responsabilité (Responsibility) Répertoire de classification des rapports, correspondant aux responsabilités d'Oracle EBS, utilisé pour regrouper les rapports par module et les afficher aux utilisateurs
Paramètre (Parameter) Condition de requête définie dans FORM (date, client, organisation, etc.), liée au SQL en tant que paramètre nommé après soumission
Demande (Request) Tâche d'exécution d'un rapport spécifique lancée par un utilisateur standard ; le système l'exécute de manière asynchrone en arrière-plan et génère le fichier de résultat
Licence (License) Fichier de licence conf/license.dat contrôlant le nombre de rapports et la durée de validité

1.4 Rôles des utilisateurs

Rôle Accès Droits
Administrateur (admin) /admin/login Gestion des utilisateurs, des responsabilités, des rapports, import de licence, paramètres système, supervision de toutes les demandes
Utilisateur standard (normal) /login Sélectionner un rapport, remplir les paramètres, soumettre une demande, consulter ses propres demandes, télécharger les résultats, modifier le mot de passe

1.5 Structure des répertoires

Fichiers principaux après décompression du package de distribution :

SQLVantage/
├── SQLVantage.exe / sqlvantage   # 主程序(Windows / Linux)
├── conf/
│   ├── app.conf        # 系统配置文件(端口/语言/Oracle 等)
│   ├── data.dat        # 业务数据库(用户/职责/报表/请求)
│   ├── license.dat     # 授权文件
│   └── locale/         # 语言包
├── data/               # 运行期生成:<请求ID>.xlsx / <请求ID>.json
├── docs/               # 使用文档(多语言,含 images/)
└── tmp/                # 临时文件(会话、任务)

2. Installation et déploiement (Windows / Linux)

2.1 Exigences d'environnement

  • Système d'exploitation : Windows 7+ / Linux 64 bits (x86_64)
  • Mode d'exécution (recommandé) : utiliser directement l'exécutable publié (SQLVantage.exe ou le binaire Linux), sans installer d'environnement d'exécution
  • Base de données Oracle : l'exécution des rapports nécessite une connexion à Oracle (le système se connecte par défaut à Oracle EBS), veuillez confirmer le réseau et le compte à l'avance
  • Disque / droits sur les répertoires : le répertoire d'exécution du programme nécessite un droit d'écriture, car les répertoires data/ et tmp/ sont générés à l'exécution et les fichiers sous conf/ sont lus/écrits

2.2 Installation sur plateforme Windows

  1. Décompression : décompressez le package de distribution (zip) dans n'importe quel répertoire, par exemple D:\SQLVantage\. Après décompression, vérifiez la présence des fichiers clés suivants :

    D:\SQLVantage\
    ├── SQLVantage.exe      # 主程序
    ├── conf\app.conf       # 配置文件
    ├── conf\data.dat       # 数据库(随包附带的空库)
    └── conf\locale\        # 语言包
    
  2. (Facultatif) Modification de la configuration : ouvrez conf\app.conf avec le Bloc-notes et modifiez l'adresse d'écoute, le port, la connexion Oracle, etc., conformément au chapitre 3.

  3. Démarrage du programme : double-cliquez sur SQLVantage.exe, ou exécutez dans la ligne de commande :

    cd D:\SQLVantage
    SQLVantage.exe
    

    Après un démarrage réussi, la console affiche la version, le statut de la licence, puis passe en mode écoute.

  4. Accès au système : ouvrez http://127.0.0.1:8080 dans le navigateur (adresse par défaut, modifiable dans app.conf).

  5. Configuration du pare-feu : si vous avez besoin d'un accès LAN / distant, autorisez le port correspondant (par exemple 8080) dans le pare-feu Windows :

    netsh advfirewall firewall add rule name="SQLVantage" dir=in action=allow protocol=TCP localport=8080
    

2.3 Installation sur plateforme Linux

  1. Décompression : décompressez le package de distribution (tar.gz ou zip) dans le répertoire cible, par exemple /opt/sqlvantage :

    mkdir -p /opt/sqlvantage
    tar -xzf sqlvantage-linux-amd64.tar.gz -C /opt/sqlvantage
    cd /opt/sqlvantage
    
  2. Attribution des droits d'exécution :

    chmod +x sqlvantage
    
  3. (Facultatif) Modification de la configuration : éditez conf/app.conf (comme sous Windows).

  4. Test de démarrage en avant-plan :

    ./sqlvantage
    

    Le démarrage est réussi lorsque les informations de version et les journaux d'écoute s'affichent ; arrêtez avec Ctrl+C.

  5. Exécution en arrière-plan (recommandé : systemd ou nohup) :

    Méthode A : nohup

    cd /opt/sqlvantage
    nohup ./sqlvantage > sqlvantage.log 2>&1 &
    

    Méthode B : systemd (créez /etc/systemd/system/sqlvantage.service) :

    [Unit]
    Description=SQLVantage Report System
    After=network.target
    
    [Service]
    WorkingDirectory=/opt/sqlvantage
    ExecStart=/opt/sqlvantage/sqlvantage
    Restart=always
    RestartSec=5
    User=sqlvantage
    
    [Install]
    WantedBy=multi-user.target
    

    Puis exécutez :

    systemctl daemon-reload
    systemctl enable sqlvantage
    systemctl start sqlvantage
    systemctl status sqlvantage
    
  6. Pare-feu / groupe de sécurité : autorisez le port (par exemple 8080) :

    firewall-cmd --permanent --add-port=8080/tcp && firewall-cmd --reload
    

2.4 Compilation à partir du code source (facultatif)

Réservé aux utilisateurs ayant obtenu le code source : exécutez la commande de compilation dans le répertoire du code source pour générer l'exécutable de la plateforme actuelle. Pour les environnements de production, il est recommandé d'utiliser directement le programme exécutable publié officiellement.

2.5 Premier démarrage

Lors du premier démarrage, le système effectue automatiquement l'initialisation suivante :

  1. Vérification des fichiers de données : lit conf/data.dat (fourni avec le package ; s'il manque, le message « conf/data.dat is not found » s'affiche et le programme se ferme — ne supprimez pas ce fichier).
  2. Création automatique des tables : les quatre tables user, responsibility, report et request sont créées automatiquement.
  3. Création automatique du compte administrateur : lors de la première visite de /admin/login, si l'utilisateur root n'existe pas, le système le crée automatiquement :
    • Nom d'utilisateur : root
    • Mot de passe initial : SQLVantage
    • Rôle : admin (administrateur)
    • Avertissement de sécurité : modifiez immédiatement ce mot de passe après la première connexion (l'administrateur peut le modifier dans « Gestion des utilisateurs »).
  4. Vérification du fichier de licence : si conf/license.dat est manquant ou invalide, la console affiche un avertissement ; le système continue de fonctionner, mais sous réserve des limites de licence de la section 4.7.

3. Configuration

3.1 Emplacement du fichier de configuration

Le fichier de configuration est conf/app.conf (format INI). Deux méthodes de modification :

  • Méthode 1 (recommandée, via l'interface) : l'administrateur se connecte puis accède à « Paramètres système » (/admin/setting), renseigne et enregistre ; le système réécrit automatiquement dans app.conf.
  • Méthode 2 (édition directe du fichier) : modifiez conf/app.conf avec un éditeur de texte puis redémarrez le programme.

3.2 Tableau des paramètres

Paramètre Valeur par défaut Description
appname SQLVantage Nom de l'application
httpaddr 127.0.0.1 Adresse IP d'écoute ; 0.0.0.0 signifie écouter sur toutes les interfaces réseau (accessible sur le réseau local)
httpport 8080 Port d'écoute, recommandé 8080~8099
runmode dev Mode d'exécution : dev (développement, affiche les erreurs détaillées) / prod (production, masque les détails des erreurs)
language en-US Langue d'interface par défaut (priorité inférieure au paramètre URL / au Cookie / à la langue du navigateur)
sessiongcmaxlifetime 3600 Durée d'expiration de la session (secondes), 1 heure par défaut
max_execution_time 30 Durée maximale d'exécution d'une tâche de rapport (minutes) ; les tâches en dépassement sont automatiquement marquées Terminated
oracle_server ex. 192.168.10.13 IP / nom d'hôte du serveur de base de données Oracle
oracle_port 1521 Port d'écoute Oracle
oracle_database test Nom de service Oracle (SERVICE_NAME)
oracle_username apps Nom d'utilisateur de connexion Oracle
oracle_password aucun Mot de passe de connexion Oracle (veuillez saisir le mot de passe réel)

3.3 Prise d'effet après modification

  • sessiongcmaxlifetime : prend effet immédiatement après enregistrement.
  • Les autres paramètres (port, Oracle, etc.) : nécessitent un redémarrage du programme après modification.

3.4 Changement de langue

  • Le système intègre 12 langues : zh-CN, zh-TW, en-US, ja-JP, ko-KR, fr-FR, de-DE, es-ES, th-TH, vi-VN, ru-RU, pt-PT.
  • Méthode de bascule : ajoutez ?lang=zh-CN à l'URL (par exemple /?lang=zh-CN), ou basculez via le menu de langue en haut à droite du panneau d'administration ; après sélection, un Cookie est écrit avec une validité de 1 an.

4. Guide de l'administrateur

4.1 Connexion administrateur

  1. Accédez à http://<adresse_du_serveur>:<port>/admin/login dans le navigateur.
  2. Connectez-vous avec le compte administrateur (initialement root / SQLVantage).
  3. Après connexion, entrez dans le panneau d'administration (/admin) ; le menu de gauche comprend : Gestion des rapports, Gestion des responsabilités, Gestion des utilisateurs, Gestion des demandes, Gestion des licences, Paramètres système, Tableau de bord, À propos.

Remarque : le compte administrateur doit satisfaire Rôle = admin et Statut = active, sinon la connexion au panneau d'administration est impossible.

4.2 Tableau de bord et navigation supérieure

  • La navigation supérieure permet des accès rapides : Tableau de bord (/admin), Exécution de rapports (/request, nouvelle fenêtre), Page d'accueil du portail (/).
  • En haut à droite, vous pouvez changer de langue ou vous déconnecter (/admin/logout).

4.3 Gestion des utilisateurs

Accès : /admin/user (menu de gauche « Gestion des utilisateurs »).

Description des champs utilisateur :

Champ Description
Nom d'utilisateur UserName Compte de connexion, non modifiable après création (lecture seule)
Email Facultatif
Rôle Role normal (utilisateur standard) / admin (administrateur)
Statut Status active (en poste, peut se connecter) / inactive (départ, connexion interdite)
Mot de passe Obligatoire à la création ; stocké de manière chiffrée, jamais affiché dans l'interface

Opérations :

  • Créer : cliquez sur le bouton « Créer » → renseignez nom d'utilisateur / email / rôle / statut / mot de passe / confirmation du mot de passe → soumettez.
  • Modifier : cliquez sur « Modifier » dans la ligne → modifiez email, rôle, statut ; laissez le mot de passe vide pour ne pas le modifier.
  • Supprimer : cliquez sur « Supprimer » dans la ligne. Attention :
    • Le compte root ne peut pas être supprimé ;
    • Un utilisateur ayant des rapports à son actif ne peut pas être supprimé (il faut d'abord supprimer ou transférer ses rapports).

Points de gestion :

  • L'accès de connexion de l'utilisateur standard est /login (page d'accueil), celui de l'administrateur est /admin/login ; les deux sont différents.
  • Mettre un utilisateur standard en statut inactive suffit à lui interdire la connexion, sans supprimer le compte.
  • La liste des utilisateurs masque automatiquement root.

4.4 Gestion des responsabilités

Accès : /admin/responsibility (menu de gauche « Gestion des responsabilités »).

Description des champs de responsabilité :

Champ Description
ID de responsabilité (RespId) ID de responsabilité dans Oracle EBS
Clé de responsabilité (RespKey) Clé de responsabilité dans Oracle EBS
Nom de responsabilité (Name) Nom affiché, également le nom du groupe du menu de rapports côté utilisateur standard
Abréviation (ShortName) Facultatif

Opérations :

  • Créer : cliquez sur « Créer » → sélectionnez une responsabilité d'un utilisateur dans la liste déroulante (les données proviennent de l'interface de requête Oracle EBS /api/user/responsibilities/) ; une fois sélectionnée, RespId / RespKey / Name sont automatiquement remplis ; la saisie manuelle est aussi possible → soumettez.
  • Modifier / Supprimer : boutons dans la ligne. Attention : une responsabilité référencée par des rapports ne peut pas être supprimée.

Utilité : un rapport doit appartenir à une responsabilité ; côté utilisateur standard, le « menu des rapports » est affiché groupé par responsabilité (les rapports sans responsabilité sont regroupés dans « Non classés »).

4.5 Gestion des rapports

Accès : /admin/report (menu de gauche « Gestion des rapports »).

Champs du rapport :

Champ Description
ID Numérotation automatique du système
Responsabilité Catégorie d'appartenance du rapport
Nom (Name) Nom du rapport, visible par les utilisateurs standard
Description Facultatif
Statut (Status) Draft (brouillon) / Release (publié) / Discard (abandonné)
Date de création / mise à jour Enregistrée automatiquement par le système

Cycle de vie du rapport (important) :

Draft(草稿,设计阶段)──▶ Release(已发布,用户可见)
       │                        │
       │                        └──▶ 不可直接删除,需先改为 Draft/Discard
       └──▶ Discard(废弃,用户不可见)
  • Seuls les rapports dont le statut est Release apparaissent dans le menu de rapports côté utilisateur standard.
  • Les rapports publiés (Release) ne peuvent pas être supprimés ; il faut d'abord passer leur statut à Draft ou Discard dans la liste avant de les supprimer.
  • Les colonnes « Nom », « Description » et « Statut » de la liste prennent en charge l'édition directe par double-clic dans la cellule (enregistrement automatique).

Opérations :

Bouton Description
Créer Affiche un formulaire : choisir la responsabilité, renseigner nom / description / statut → soumettre
Code (violet) Ouvre le concepteur de rapports (voir chapitre 5, la fonctionnalité la plus centrale du système)
Modifier (bleu) Ouvre le formulaire d'informations de base pour modification
Supprimer (rouge) Supprime le rapport (suppression interdite en statut Release)

4.6 Gestion des demandes (vue administrateur)

Accès : /admin/request (menu de gauche « Gestion des demandes »).

L'administrateur peut consulter les demandes de rapports de tous les utilisateurs (les utilisateurs standard ne voient que les leurs), avec prise en charge :

  • Consultation par nom de rapport / statut / phase ;
  • Consultation des paramètres, du demandeur, de l'adresse IP, des dates de création / achèvement ;
  • La liste déroulante « Sortie » permet de télécharger directement les résultats Excel / HTML / JSON / TEXT de la demande ;
  • Suppression simple ou « Suppression groupée » après coche.

La signification des statuts de demande figure au chapitre 7.

4.7 Gestion des licences (License)

Accès : /admin/license (menu de gauche « Gestion des licences »).

4.7.1 Qu'est-ce que le fichier de licence

Le fichier de licence est conf/license.dat, un court texte émis par le fournisseur, contenant les informations de licence suivantes :

Champ Description
reg_id ID d'enregistrement (identifiant unique du client)
company Nom de la société enregistrée
expire Date limite de validité (format YYYY-MM-DD, par exemple 2026-12-31)

Le système vérifie automatiquement la validité du fichier de licence au démarrage et à l'import ; toute altération (modification des informations d'enregistrement ou de la date d'expiration) rend la licence invalide.

4.7.2 Processus d'achat

  1. Contactez le fournisseur / développeur de SQLVantage et fournissez les informations suivantes :
    • Nom de l'organisation / de la société (company) ;
    • ID d'enregistrement du serveur à autoriser (reg_id, attribué par le fournisseur) ;
    • Durée de licence souhaitée.
  2. Le fournisseur génère le fichier de licence (un texte) à l'aide de l'outil de génération de licences et le remet au client.
  3. Le client importe le fichier reçu conformément au point 4.7.3.

4.7.3 Import de la licence

  1. L'administrateur se connecte → Gestion des licences (/admin/license).
  2. La page affiche le statut actuel de la licence (ID d'enregistrement / société / date d'expiration ; un message rouge s'affiche en cas d'invalidité ou d'absence).
  3. Cliquez sur « Choisir un fichier » et sélectionnez le fichier de licence reçu (nom arbitraire, par exemple license.dat) → cliquez sur « Importer ».
  4. Après un import réussi, le système vérifie automatiquement et actualise la page, affichant les informations de licence valides.

Vous pouvez aussi le placer manuellement : enregistrez le contenu du fichier de licence sous conf/license.dat puis redémarrez le programme.

4.7.4 Limites sans licence / licence expirée

Limite Description
Nombre de rapports Sans licence (ou expirée), il peut exister au maximum 3 rapports ; au-delà, la création de rapports est refusée (message « limite de licence atteinte »)
Soumission de demandes Sans licence et avec un nombre de rapports ≥ 3, la soumission de demandes par les utilisateurs standard est refusée
Expiration de la licence L'expiration n'affecte pas les opérations déjà connectées, mais la création de nouveaux rapports / la soumission de demandes sont restreintes

4.8 Paramètres système

Accès : /admin/setting (menu de gauche « Paramètres système »), édition visuelle de conf/app.conf :

  • Paramètres d'application : adresse d'écoute, port, mode d'exécution, langue par défaut, durée maximale d'exécution ;
  • Paramètres de session : durée d'expiration de la session (secondes) ;
  • Paramètres de base de données Oracle : serveur, port, nom de service, nom d'utilisateur, mot de passe (avec bouton de bascule texte clair / chiffré).

Après enregistrement, certains paramètres prennent effet immédiatement ; les paramètres tels que le port nécessitent un redémarrage du programme.

4.9 À propos

Accès : /admin/aboutus, consultez la version du système, les informations de publication, etc.


5. Guide de conception des rapports (chapitre principal)

C'est la fonctionnalité la plus importante de SQLVantage. Un rapport se compose de trois parties :

  • SQL : définit quelles données interroger (SQL de source de données + configuration des métadonnées de colonnes)
  • FORM : définit quelles conditions de requête l'utilisateur remplit (formulaire de paramètres)
  • HTML : définit comment les résultats sont affichés (mise en page tableau / graphique / cartes d'indicateurs)

Chacune des trois parties possède deux ensembles de données, le « code » et le « JSON de format », finalement enregistrés dans l'enregistrement du rapport.

5.1 Atelier du concepteur

5.1.1 Accès au concepteur

  1. L'administrateur se connecte → Gestion des rapports (/admin/report).
  2. Trouvez le rapport cible et cliquez sur le bouton « Code » (violet).
  3. Une grande fenêtre de concepteur s'ouvre (environ 98 % de l'écran), avec une interface divisée en deux colonnes :
┌────────────────────────────────────────────────────────┐
│ [下拉:SQL设计 | FORM设计 | HTML设计]   [保存全部]        │
├───────────────────────────────┬────────────────────────┤
│ 左侧:代码编辑器                │ 右侧:动态设计面板       │
│ (SQL 代码 / FORM 代码 /        │ (随左侧模式切换)      │
│  HTML 代码 共用一个编辑器)     │   · SQL: 列元数据配置表  │
│                               │   · FORM: 参数配置表    │
│                               │   · HTML: 布局块配置表  │
└───────────────────────────────┴────────────────────────┘

5.1.2 Les trois modes

La liste déroulante en haut bascule entre les modes de conception ; lors du basculement, l'éditeur de gauche et le panneau de droite sont synchronisés :

Mode Contenu de l'éditeur Panneau de droite
Conception SQL SQL de requête du rapport (syntaxe Oracle) Tableau de configuration des métadonnées de colonnes (influence l'export Excel / les en-têtes de colonnes de la page)
Conception FORM Code HTML du formulaire de paramètres Tableau de configuration des paramètres + aperçu en temps réel + brouillon de code de formulaire
Conception HTML Code HTML d'affichage des résultats (fragment de modèle) Tableau de configuration des blocs de mise en page + aperçu de mise en page + brouillon de code HTML

5.1.3 Enregistrement

  • Pendant la conception : les modifications du panneau de droite sont automatiquement réécrites dans les champs cachés (sql_code/sql_format/form_code/form_format/html_code/html_format).
  • Enregistrement officiel : cliquez sur le bouton « Tout enregistrer » en haut à gauche pour soumettre les six ensembles de données en une seule fois à /admin/report/code/ et les enregistrer dans la base de données.

À retenir : après avoir modifié SQL / FORM / HTML, cliquez impérativement sur « Tout enregistrer », sinon la fermeture de la fenêtre entraînera la perte des modifications.

5.2 Module SQL (conception de la source de données du rapport)

5.2.1 Écrire le SQL de requête

  • Le SQL utilise la syntaxe Oracle : écrivez directement l'instruction SELECT (peut contenir FROM/JOIN/WHERE/GROUP BY, etc.).

  • Les conditions de requête utilisent des espaces réservés de paramètres nommés :nom_de_paramètre ; le nom du paramètre doit correspondre au field défini dans le module FORM. Par exemple, si le paramètre P_OU_ID est défini dans FORM, écrivez dans SQL :

    SELECT company_name, ou_id, amount
      FROM fnd_ou_tl
     WHERE ou_id = :P_OU_ID
    
  • Tous les noms de colonnes sélectionnés dans le SQL sont les identifiants de champ de l'export Excel et des tableaux de la page HTML (il est recommandé d'utiliser des majuscules, par exemple COMPANY_NAME).

5.2.2 Tableau de configuration des métadonnées de colonnes (point clé : export Excel)

Le tableau « Configuration des métadonnées de colonnes SQL » à droite : chaque ligne correspond à une colonne de la sortie SQL :

Colonne Description Exemple
Nom de champ field Nom de la colonne de sortie SQL (converti automatiquement en majuscules à la saisie) AMOUNT
Titre d'en-tête title Titre affiché, l'en-tête de l'export Excel et l'en-tête de colonne du tableau de la page 金额
Type de données type text / number / percent / date / month / time / datetime number
Précision precision Nombre de décimales conservées pour les valeurs numériques (2 par défaut) 2
Format format Format numérique / date personnalisé Excel #,##0.00
Alignement align left / center / right right

Opérations : cliquez sur « Ajouter une ligne » pour ajouter une colonne → double-cliquez dans la cellule pour remplir → l'instantané JSON est généré automatiquement (zone de prévisualisation de code noire à droite) et réécrit en temps réel dans sql_format.

5.2.3 Correspondance entre la configuration des colonnes SQL et l'export Excel

Le système génère le fichier Excel (xlsx) en arrière-plan selon les règles de correspondance suivantes :

Configuration de colonne Comportement de sortie Excel
field Correspond au nom de colonne du résultat de la requête, détermine sur quelle colonne s'applique la configuration de la ligne
title Écrit dans les cellules d'en-tête de la ligne 1, soit le titre d'en-tête Excel
type = text La valeur est écrite dans la cellule en tant que texte
type = number La valeur est écrite en tant que nombre, nombre de décimales = precision ; si format est configuré, sortie selon le format numérique personnalisé, par exemple #,##0.00
type = percent La valeur est sortie au format pourcentage, format peut être remplacé, par exemple 0.00%
type = date La valeur est sortie en tant que date, format peut servir de format de date, par exemple yyyy-mm-dd
align Alignement horizontal des cellules : left / center / right
precision Précision numérique (2 par défaut)

En d'autres termes : le tableau de configuration des colonnes SQL = définition complète de l'« en-tête + type de colonne + format numérique + alignement » de l'export Excel. Même sans aucune configuration, l'export Excel fonctionne (type texte par défaut, alignement à gauche, en-tête avec le nom de colonne d'origine), mais après configuration, l'Excel exporté est plus professionnel.

5.2.4 Un exemple complet de conception SQL

Supposons que vous souhaitiez créer un « rapport des coûts par département » :

  1. Code SQL (éditeur) :

    SELECT DEPT_NAME, MONTH, TOTAL_AMOUNT, RATE
      FROM DEPT_COST_V
     WHERE MONTH = :P_MONTH
     ORDER BY DEPT_NAME
    
  2. Configuration des métadonnées de colonnes :

    field title type precision format align
    DEPT_NAME Nom du département text left
    MONTH Mois date yyyy-mm center
    TOTAL_AMOUNT Montant total des coûts number 2 #,##0.00 right
    RATE Part des coûts percent 2 0.00% right
  3. Effet de l'export Excel : les en-têtes sont « Nom du département / Mois / Montant total des coûts / Part des coûts », les montants alignés à droite avec séparateur de milliers et 2 décimales, la part affichée en pourcentage.

5.3 Module FORM (conception du formulaire de paramètres de requête)

5.3.1 Tableau de configuration des paramètres

Chaque ligne du « Tableau de configuration des paramètres » à droite définit un paramètre de requête :

Colonne Description Exemple
Nom de paramètre field Identifiant du paramètre, doit correspondre au :nom_de_paramètre dans SQL P_OU_ID
Libellé affiché label Texte du libellé affiché dans le formulaire 业务实体
Type de composant type Voir le tableau des types de composants ci-dessous select
Valeur par défaut value Facultatif, valeur initiale 101
Validation verify Règle de validation (par exemple required) required
Options statiques static_options Options statiques de la liste déroulante / des boutons radio, format clé:valeur,clé:valeur 101:Shanghai,102:Pékin
URL API api_url Adresse de l'interface pour les options dynamiques, peut contenir l'espace réservé {nom_de_variable} /api/query?ou={P_OU_ID}
SQL de requête query_sql SQL de requête pour les options dynamiques, peut contenir l'espace réservé {nom_de_variable}, renvoie deux colonnes (valeur / texte) SELECT id, name FROM tab WHERE ou = {P_OU_ID}

Tableau des types de composants :

Type Description
text Champ de texte sur une ligne
number Champ de saisie numérique
select Liste déroulante (options issues des options statiques ou d'une API/SQL dynamique)
radio Groupe de boutons radio (options issues des options statiques)
date Sélecteur de date (YYYY-MM-DD)
year Sélecteur d'année
month Sélecteur de mois
time Sélecteur d'heure
datetime Sélecteur de date et heure
hidden Champ caché (non affiché, mais soumis avec le formulaire)
temp Valeur cachée temporaire (non soumise)

5.3.2 Liaison de paramètres (filtres dépendants)

  • api_url / query_sql prennent en charge l'espace réservé {nom_de_variable} : lorsque l'utilisateur modifie un paramètre en amont (par exemple sélectionne une organisation), le système remplace automatiquement l'espace réservé par la valeur réelle du formulaire actuel et demande dynamiquement les options de la liste déroulante en aval.
  • Si le paramètre en amont n'est pas renseigné, la liste déroulante en aval affiche « veuillez d'abord compléter les filtres ci-dessus » et vide ses options, afin d'éviter les données erronées.
  • Il suffit de choisir entre la liste déroulante statique (static_options) et la liste déroulante dynamique (api_url / query_sql).

Format de données requis pour les options dynamiques de la liste déroulante : chaque enregistrement renvoyé par l'interface / SQL contient les deux champs val (valeur) et txt (texte affiché).

5.3.3 Aperçu en temps réel et génération de code

  • Sous le tableau se trouve la « zone d'aperçu en temps réel » : le formulaire est rendu en temps réel au fur et à mesure de la configuration des paramètres (avec sélecteurs de date, listes déroulantes liées, etc.).
  • La zone de texte « brouillon de code de formulaire » en bas génère en temps réel le code HTML FORM complet.
  • Cliquez sur le bouton « Copier et appliquer » : le brouillon de code est écrit dans l'éditeur (mode FORM) et synchronisé dans form_code / form_format.

Vous pouvez aussi, sans passer par le panneau de droite, écrire directement le HTML FORM (syntaxe de formulaire) dans l'éditeur de gauche ; il prend effet de la même manière à l'enregistrement.

5.3.4 Comportement à l'exécution

Après que l'utilisateur standard a soumis le formulaire, le système lie les données du formulaire en tant que paramètres nommés au SQL et les exécute ; les paramètres sont également enregistrés dans la demande pour permettre à la page de résultats / aux fichiers exportés de rappeler les conditions de requête.

5.4 Module HTML (conception de l'affichage des résultats)

5.4.1 Tableau de configuration des blocs de mise en page

Chaque ligne du « Tableau de configuration des composants de vue HTML » à droite définit un bloc d'affichage :

Colonne Description Exemple
ID de conteneur block_id ID unique du bloc (préfixe de l'id DOM généré) chart_zone
Titre title Titre du bloc 费用趋势
Largeur de grille grid_md Largeur de grille de 1 à 12 (12 = ligne entière) 8
Type de composant component table (tableau) / chart (graphique) / card (carte d'indicateur) / custom (conteneur personnalisé) chart
Sous-total subtotal Y (ligne de totaux activée pour le tableau) / N N
Type de graphique chart_type line (ligne) / bar (barres) line
Champ axe X x_field Champ de l'axe horizontal du graphique (issu des colonnes de sortie SQL) MONTH
Champs axe Y y_fields Champs de l'axe vertical du graphique, plusieurs séparés par des virgules anglaises TOTAL_AMOUNT

Description des composants :

Composant Effet d'affichage Technologie à l'exécution
table Tableau de données, pagination, tri, en-têtes issus du title des métadonnées de colonnes ; avec subtotal=Y, les colonnes numériques affichent une ligne de totaux table
chart Graphique (line / bar), champs des axes X / Y issus de la configuration chart
card Carte d'indicateurs (carte KPI), affiche des valeurs clés rendu personnalisé
custom Conteneur de contenu personnalisé HTML

5.4.2 Aperçu de la mise en page et génération de code

  • La zone « aperçu de la mise en page en temps réel » affiche en temps réel les maquettes haute fidélité de chaque bloc (titre + type de bloc + largeur).
  • Le « brouillon Html Code » génère en temps réel le code HTML complet (avec les attributs d'exécution data-component, data-subtotal, data-charttype, data-xfield, data-yfields, etc.).
  • Cliquez sur « Copier et appliquer » pour écrire dans l'éditeur et synchroniser html_code / html_format.

Vous pouvez aussi écrire directement le fragment de modèle HTML dans l'éditeur de gauche (la syntaxe de modèle courante est prise en charge). Les objets de données disponibles dans le modèle lors du rendu à l'exécution figurent en 5.4.3.

5.4.3 Mécanisme de rendu de la page de résultats

Lorsque l'utilisateur standard télécharge / consulte le résultat HTML (/request/output?ext=html), le système rend le code HTML du rapport avec le JSON des résultats de requête, la configuration des colonnes, etc. :

Variable de modèle Description
data Tableau JSON des résultats de requête (injecté à l'exécution, associé à {{.data}} pour produire les données JS)
params Paramètres de requête de cette demande (paires clé-valeur)
colsConfig Métadonnées des colonnes SQL (utilisées pour les en-têtes de tableau / les noms de séries de graphiques)
reportName / reportDate / status Nom du rapport, date de génération, statut

La page rend automatiquement le conteneur data-component="table" en tableau de données, chart en graphique et card en carte d'indicateurs.

5.5 Processus de publication des rapports (recommandation pour l'administrateur)

1. 报表管理 → 新建报表(选择职责、填名称、状态选 Draft)
2. 点「代码」进入设计器
3. SQL 设计:写查询 SQL + 配置列元数据(Excel 导出依据)
4. FORM 设计:配置查询参数(与 SQL 参数一一对应)
5. HTML 设计:配置展示布局(表格/图表/指标卡)
6. 点「保存全部」→ 关闭设计器
7. 回到报表列表,把状态改为 Release(发布)
8. 普通用户登录即可在报表菜单中看到该报表并执行

5.6 Précautions de conception

  • Les noms de paramètres SQL et FORM doivent être strictement identiques (SQL utilise :nom_de_paramètre, FORM utilise field).
  • Les noms de colonnes SQL doivent être en majuscules ; le tableau de configuration des métadonnées de colonnes convertit automatiquement field en majuscules.
  • Le SQL du rapport doit pouvoir être précompilé par Oracle (db.Prepare) ; une erreur de syntaxe entraîne l'échec de l'exécution de la demande (statut Error).
  • Sans licence, le nombre de rapports est limité à 3 ; vérifiez le statut de la licence avant la conception.
  • Après l'enregistrement, vous pouvez exécuter une demande dans « Gestion des demandes » ou côté utilisateur standard pour vérifier que le SQL et l'affichage sont corrects.

6. Guide de l'utilisateur standard

6.1 Connexion

Accédez à la page d'accueil du système dans le navigateur (par défaut http://<adresse_du_serveur>:<port>/), cliquez sur la carte « Connexion utilisateur » pour entrer sur la page de connexion /login. La page de connexion propose deux méthodes (onglets de bascule) :

Méthode 1 : Vérification ERP (authentification unique Oracle EBS)

  1. Basculez sur l'onglet « Vérification ERP ».
  2. Saisissez le nom d'utilisateur EBS (par exemple APPS), cliquez sur « Vérifier la connexion ».
  3. Le système vérifie via Oracle si la session icx_sessions de cet utilisateur dans EBS est valide (fenêtre de validité de 30 minutes) ; si elle est valide, l'accès au système est immédiat.
  4. Particularité : aucun mot de passe local requis ; l'identité de connexion est celle de l'utilisateur dans EBS.

Méthode 2 : Compte local

  1. Basculez sur l'onglet « Compte local ».
  2. Saisissez le nom d'utilisateur et le mot de passe attribués par l'administrateur, cliquez sur « Connexion ».
  3. Particularité : le compte est créé par l'administrateur dans « Gestion des utilisateurs ».

Remarque : un compte défini par l'administrateur comme inactive (départ) ne peut plus se connecter.

6.2 Page d'accueil du portail

Après une connexion réussie, vous entrez sur la page d'accueil du portail (/), qui comprend :

  • En haut : message de bienvenue (nom d'utilisateur), accès Changer le mot de passe.
  • Cartes de navigation :
    • Nouvelle demande de rapport (accès à la page d'exécution des rapports /request) ;
    • Mes demandes (consultation des demandes historiques et des résultats) ;
    • Cartes telles que Connexion administrateur, Paramètres système, Gestion des licences, À propos (inutiles pour l'utilisateur standard ; un clic redirige vers la page de connexion de l'administrateur).
  • En haut à droite, vous pouvez changer la langue de l'interface.

6.3 Créer une nouvelle demande de rapport

  1. Sur la page d'accueil du portail, cliquez sur la carte « Nouvelle demande de rapport », ou accédez directement à /request.
  2. Sur la page de liste des demandes, cliquez sur le bouton « Nouveau ».
  3. La fenêtre « Menu des rapports » s'ouvre : les rapports sont affichés groupés par responsabilité (module), seuls les rapports publiés (Release) sont affichés ; vous pouvez aussi rechercher par nom dans la liste déroulante en haut.
  4. Cliquez sur un rapport : le formulaire de paramètres de ce rapport se charge à droite.
  5. Remplissez les conditions de requête (date / liste déroulante / texte, etc.) et cliquez sur « Soumettre ».
  6. Après soumission réussie, un nouvel enregistrement apparaît dans la liste des demandes avec le statut Queued (en file d'attente).

6.4 Liste de mes demandes

Accès : /request (également accessible depuis la carte du portail en haut).

Colonne Description
ID Numéro de la demande
Nom du rapport Rapport exécuté
Phase Pending (en file d'attente) / Running (en cours d'exécution) / Completed (terminée)
Statut Status Queued (en file d'attente) / Processing (en traitement) / Success (réussie) / Error (échec) / Terminated (terminée par dépassement de délai)
Sortie Output Liste déroulante de téléchargement des résultats
Message Informations d'exécution (par exemple erreur SQL)
Paramètres Parameters Conditions de requête soumises pour cette demande
Dates de création / achèvement Heures d'enregistrement

Opérations : cliquez sur la liste déroulante « Sortie » d'une ligne et choisissez Excel / HTML / JSON / TEXT pour ouvrir dans une nouvelle fenêtre ou télécharger le fichier de résultat au format correspondant.

6.5 Changer le mot de passe

  1. En haut de la page d'accueil du portail, cliquez sur « Changer le mot de passe ».
  2. Renseignez le mot de passe actuel, le nouveau mot de passe et la confirmation du nouveau mot de passe (le nouveau mot de passe doit comporter au moins 6 caractères).
  3. Après soumission réussie, vous pouvez vous connecter avec le nouveau mot de passe (valable uniquement pour la connexion par compte local ; la méthode de vérification ERP est indépendante du mot de passe EBS).

7. Exécution des demandes et résultats

7.1 Flux d'exécution (asynchrone)

用户提交请求
   │
   ▼
写入 request 表(Phase=Pending, Status=Queued)
   │
   ▼
后台轮询协程(每 3 秒)拉取排队任务(每批最多 5 个,并发最多 3 个)
   │
   ▼
乐观锁抢占任务 → Phase=Running, Status=Processing
   │
   ▼
解析参数 → 读取报表 SQL → Oracle 预编译执行
   │
   ├── 失败 → Status=Error(记录错误消息)
   │
   ▼
生成结果文件:data/<请求ID>.xlsx 与 data/<请求ID>.json
   │
   ▼
Phase=Completed, Status=Success
  • Protection contre les dépassements de délai : les tâches dont l'exécution dépasse max_execution_time (30 minutes par défaut) sont automatiquement marquées Terminated.
  • Les fichiers de résultats sont enregistrés dans le répertoire data/ selon l'ID de la demande et ne se chevauchent jamais.

7.2 Formats de sortie

Format Description
Excel Fichier xlsx ; en-têtes / types de colonnes / formats / alignement déterminés par les métadonnées des colonnes SQL (voir 5.2.3) ; format de nom de fichier : <nom_du_rapport>_<horodatage>.xlsx
HTML Rendu dans le navigateur de la mise en page HTML du rapport (tableaux / graphiques / cartes d'indicateurs) + rappel des conditions de requête
JSON JSON brut des résultats de requête (pratique pour un développement secondaire / une intégration par interface)
TEXT Page de texte brut affichant les données

7.3 Contrôle des droits

  • L'utilisateur standard ne peut voir que les demandes qu'il a lui-même soumises (filtrage par créateur).
  • L'administrateur peut consulter les demandes de tous les utilisateurs dans « Gestion des demandes ».
  • Lorsqu'un utilisateur connecté via ERP soumet une demande, si le formulaire contient des paramètres de droits d'organisation tels que P_OU_ID / P_ORG_ID, le système vérifie que la valeur se trouve dans la plage des OU/ORG possédés par l'utilisateur dans EBS ; tout dépassement est refusé.

8. FAQ (Questions fréquentes)

Q1 : au démarrage, le message « conf/data.dat is not found » s'affiche ? Le fichier de base de données est manquant. Vérifiez que la décompression est complète et que conf/data.dat existe ; ne le remplacez pas par un fichier vide, utilisez le fichier de base de données fourni avec le package de distribution.

Q2 : la page ne s'ouvre pas dans le navigateur ? Vérifiez que le programme est démarré ; vérifiez que httpaddr / httpport sont correctement configurés (par défaut 127.0.0.1:8080, l'accès local fonctionne ; pour un accès depuis d'autres machines, remplacez par 0.0.0.0 et autorisez le port dans le pare-feu).

Q3 : la connexion signale un nom d'utilisateur ou un mot de passe incorrect ?

  • Compte local : vérifiez que le nom d'utilisateur / mot de passe est correct et que le statut est active.
  • Administrateur : vérifiez que le rôle est admin.
  • Mot de passe oublié : contactez l'administrateur pour le réinitialiser dans « Gestion des utilisateurs ».

Q4 : après soumission d'une demande de rapport, le statut reste Error ? Il s'agit le plus souvent d'une erreur de syntaxe SQL ou d'un problème de connexion Oracle. Consultez le message d'erreur dans la colonne « Message » de la demande : Prepare statement failed signifie que la précompilation SQL a échoué ; Oracle connection failed signifie que la configuration de connexion à la base de données est erronée (vérifiez les paramètres oracle_* dans app.conf).

Q5 : le rapport n'apparaît pas dans le menu des utilisateurs standard ? Vérifiez que le statut du rapport est Release (seuls les rapports publiés sont visibles).

Q6 : une demande reste longtemps en Running ? Une demande dont la durée d'exécution dépasse max_execution_time minutes est automatiquement terminée. Vous pouvez augmenter ce paramètre puis redémarrer.

Q7 : la création d'un rapport signale que la limite de licence est atteinte ? Aucun fichier de licence valide n'a été importé (ou il est expiré) ; sans licence, 3 rapports au maximum sont autorisés. Importez la licence conformément à la section 4.7.

Q8 : les en-têtes de l'export Excel sont des noms de colonnes anglais ? title n'a pas été renseigné dans la configuration des métadonnées des colonnes SQL, ou ne correspond pas au nom de colonne de sortie SQL. Dans le tableau de configuration des colonnes de « Conception SQL », remplissez field avec le nom de colonne de sortie SQL et renseignez title.

Q9 : après modification du mot de passe Oracle, le système continue de se connecter avec l'ancien mot de passe ? Après modification de oracle_password dans conf/app.conf, redémarrez le programme.

Q10 : le changement de port ne prend pas effet ? Après modification de app.conf, un redémarrage est nécessaire ; vous pouvez aussi modifier via la page « Paramètres système » (un redémarrage est également nécessaire).


9. Annexe : stockage des données et migration de sauvegarde

9.1 Emplacements de stockage des données

Données Emplacement Description
Données système (utilisateurs / responsabilités / rapports / demandes) conf/data.dat Base de données locale (fournie avec le package)
Informations de licence conf/license.dat Fichier de licence
Configuration système conf/app.conf Fichier de configuration
Fichiers de résultats des demandes data/<ID_demande>.xlsx, data/<ID_demande>.json Générés à l'exécution
Fichiers temporaires tmp/ Fichiers temporaires d'exécution
Journaux Console / journaux du répertoire d'exécution Journaux du programme

9.2 Recommandations de sauvegarde

  • Ensemble de sauvegarde minimal : conf/ (app.conf + data.dat + license.dat) + éventuellement data/ (résultats historiques).
  • Sauvegarde complète : tout le répertoire du programme (y compris conf/ et data/).

9.3 Migration vers un nouveau serveur

  1. Déployez la même version du programme sur la machine cible conformément au chapitre 2.
  2. Arrêtez l'ancien programme → copiez conf/ (app.conf, data.dat, license.dat) vers les emplacements correspondants sur la nouvelle machine.
  3. Si les résultats historiques sont nécessaires, copiez également data/.
  4. Démarrez le nouveau programme et vérifiez que la configuration (adresse Oracle, port, etc.) convient au nouvel environnement.

9.4 Migration et lecture en ligne de ce document (versions multilingues)

  • Ce manuel est stocké dans le répertoire docs/ du programme, nommé par langue : zh-CN.md, zh-TW.md, en-US.md, ja-JP.md, ko-KR.md, fr-FR.md, de-DE.md, es-ES.md, th-TH.md, vi-VN.md, ru-RU.md, pt-PT.md.
  • Images : toutes les images sont stockées dans le répertoire docs/images/ ; le document utilise des chemins relatifs locaux (par exemple ![Schéma](images/xxx.png)) et ne contient aucun lien d'image distant tiers. Lors de la migration du document, copiez également le répertoire docs/images/, les images suivent ainsi le document.
  • Lecture en ligne : tous les fichiers .md sont en Markdown pur, directement rendus et lisibles en ligne dans les dépôts de documentation des plateformes telles que Gitea, GitLab ou Gitee, sans outil supplémentaire.
  • Le contenu des versions linguistiques est identique ; l'accès se fait via l'index docs/README.md.