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.
Table des matières
- Vue d'ensemble du système
- Installation et déploiement (Windows / Linux)
- Configuration
- Guide de l'administrateur
- Guide de conception des rapports (chapitre principal)
- Guide de l'utilisateur standard
- Exécution des demandes et résultats
- FAQ (Questions fréquentes)
- Annexe : stockage des données et migration de sauvegarde
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.exeou 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/ettmp/sont générés à l'exécution et les fichiers sousconf/sont lus/écrits
2.2 Installation sur plateforme Windows
-
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\ # 语言包 -
(Facultatif) Modification de la configuration : ouvrez
conf\app.confavec le Bloc-notes et modifiez l'adresse d'écoute, le port, la connexion Oracle, etc., conformément au chapitre 3. -
Démarrage du programme : double-cliquez sur
SQLVantage.exe, ou exécutez dans la ligne de commande :cd D:\SQLVantage SQLVantage.exeAprès un démarrage réussi, la console affiche la version, le statut de la licence, puis passe en mode écoute.
-
Accès au système : ouvrez
http://127.0.0.1:8080dans le navigateur (adresse par défaut, modifiable dansapp.conf). -
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
-
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 -
Attribution des droits d'exécution :
chmod +x sqlvantage -
(Facultatif) Modification de la configuration : éditez
conf/app.conf(comme sous Windows). -
Test de démarrage en avant-plan :
./sqlvantageLe démarrage est réussi lorsque les informations de version et les journaux d'écoute s'affichent ; arrêtez avec
Ctrl+C. -
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.targetPuis exécutez :
systemctl daemon-reload systemctl enable sqlvantage systemctl start sqlvantage systemctl status sqlvantage -
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 :
- 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). - Création automatique des tables : les quatre tables
user,responsibility,reportetrequestsont créées automatiquement. - Création automatique du compte administrateur : lors de la première visite de
/admin/login, si l'utilisateurrootn'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 »).
- Nom d'utilisateur :
- Vérification du fichier de licence : si
conf/license.datest 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 dansapp.conf. - Méthode 2 (édition directe du fichier) : modifiez
conf/app.confavec 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
- Accédez à
http://<adresse_du_serveur>:<port>/admin/logindans le navigateur. - Connectez-vous avec le compte administrateur (initialement
root / SQLVantage). - 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 = adminetStatut = 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) |
| 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
rootne 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).
- Le compte
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
inactivesuffit à 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
- 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.
- 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.
- Le client importe le fichier reçu conformément au point 4.7.3.
4.7.3 Import de la licence
- L'administrateur se connecte → Gestion des licences (
/admin/license). - 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).
- Cliquez sur « Choisir un fichier » et sélectionnez le fichier de licence reçu (nom arbitraire, par exemple
license.dat) → cliquez sur « Importer ». - 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.datpuis 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
- L'administrateur se connecte → Gestion des rapports (
/admin/report). - Trouvez le rapport cible et cliquez sur le bouton « Code » (violet).
- 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 aufielddéfini dans le module FORM. Par exemple, si le paramètreP_OU_IDest 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 » :
-
Code SQL (éditeur) :
SELECT DEPT_NAME, MONTH, TOTAL_AMOUNT, RATE FROM DEPT_COST_V WHERE MONTH = :P_MONTH ORDER BY DEPT_NAME -
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-mmcenter TOTAL_AMOUNT Montant total des coûts number 2 #,##0.00right RATE Part des coûts percent 2 0.00%right -
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_sqlprennent 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) ettxt(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 utilisefield). - 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)
- Basculez sur l'onglet « Vérification ERP ».
- Saisissez le nom d'utilisateur EBS (par exemple
APPS), cliquez sur « Vérifier la connexion ». - Le système vérifie via Oracle si la session
icx_sessionsde 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. - Particularité : aucun mot de passe local requis ; l'identité de connexion est celle de l'utilisateur dans EBS.
Méthode 2 : Compte local
- Basculez sur l'onglet « Compte local ».
- Saisissez le nom d'utilisateur et le mot de passe attribués par l'administrateur, cliquez sur « Connexion ».
- 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).
- Nouvelle demande de rapport (accès à la page d'exécution des rapports
- En haut à droite, vous pouvez changer la langue de l'interface.
6.3 Créer une nouvelle demande de rapport
- Sur la page d'accueil du portail, cliquez sur la carte « Nouvelle demande de rapport », ou accédez directement à
/request. - Sur la page de liste des demandes, cliquez sur le bouton « Nouveau ».
- 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.
- Cliquez sur un rapport : le formulaire de paramètres de ce rapport se charge à droite.
- Remplissez les conditions de requête (date / liste déroulante / texte, etc.) et cliquez sur « Soumettre ».
- 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
- En haut de la page d'accueil du portail, cliquez sur « Changer le mot de passe ».
- 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).
- 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) + éventuellementdata/(résultats historiques). - Sauvegarde complète : tout le répertoire du programme (y compris
conf/etdata/).
9.3 Migration vers un nouveau serveur
- Déployez la même version du programme sur la machine cible conformément au chapitre 2.
- Arrêtez l'ancien programme → copiez
conf/(app.conf, data.dat, license.dat) vers les emplacements correspondants sur la nouvelle machine. - Si les résultats historiques sont nécessaires, copiez également
data/. - 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) et ne contient aucun lien d'image distant tiers. Lors de la migration du document, copiez également le répertoiredocs/images/, les images suivent ainsi le document. - Lecture en ligne : tous les fichiers
.mdsont 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.