Overview
Panorama du Framework
WUIC Framework est une plateforme pilotee par metadata pour creer des interfaces metier de maniere rapide et coherente.
Contenu
- DataSource et DataRepeater pour orchestrer les donnees et le rendu.
- Archetypes visuels (list, map, scheduler, chart, carousel).
- Designer runtime pour les dashboards et les templates dynamiques.
- Workflow designer/runner pour les processus operationnels.
- RAG Chatbot pour interroger la codebase en langage naturel.
- Multi-SGBD : SQL Server, MySQL, PostgreSQL et Oracle via des providers drop-in (
dbms:mssql|mysql|postgresql|oracle).
First Steps — Demarrage de l'environnement dev
La stack WUIC est composee de plusieurs services. Demarrez-les dans l'ordre indique.
Prerequis
| Element | Verification | Notes |
|---|---|---|
| .NET 10 SDK | dotnet --version | Hosting Bundle pour IIS en production |
| Node.js 22 LTS | node --version | La 22 est la version avec laquelle le paquet est teste ; avec npm 10.9.x l'installation passe grace au package-lock.json inclus |
| PowerShell 5.1+ | $PSVersionTable.PSVersion | Le Windows PowerShell livre avec Windows suffit : rename-project.ps1 et les scripts llm-workspace/ fonctionnent aussi sur 5.1. PowerShell 7 est recommande, pas requis |
| SQL Server 2019+ | sqlcmd -S localhost\sqlexpress -E -C -Q "SELECT 1" | S'il manque, la ligne unique l'installe elle-meme (SQL Server Express, ou le moteur choisi avec -Dbms) ; pas sur Windows Server, voir l'encadre ci-dessous. 2019 suffit pour les packages sans .bak ; le tutoriel .bak est une sauvegarde SQL Server 2022 et exige 2022 ou plus recent |
Linux (installeur install.sh) | lsb_release -ds | Ubuntu 22.04 ou 24.04 LTS (24.04 recommandee) : ce sont les seules versions d'Ubuntu supportees par Microsoft pour SQL Server, la 26.04 n'est pas supportee (Supported platforms). Meme recommandation avec MySQL, PostgreSQL et Oracle, car l'installeur est teste sur ces versions |
| GPU NVIDIA (CUDA 12.x + cuDNN 9) | nvidia-smi | Optionnel : accelere le RAG Chatbot (sans GPU il tourne sur CPU) |
> Sur Windows Server la base de donnees doit etre installee avant. La ligne unique recupere
> les composants manquants via winget, absent sur Windows Server : sans une instance deja
> joignable, l'installation s'arrete avec `No SQL Server instance reachable and winget is
> missing`. Installe donc le moteur avant de lancer la ligne - SQL Server doit etre **2019 ou
> superieur (Express suffit ; 2022 ou superieur** pour le tutoriel .bak), et une 2017
> n'est pas acceptee. Si l'instance n'est pas celle par defaut, passe-la avec
> -SqlServer 'localhost\NOMINSTANCE'. Cela vaut pour tous les moteurs, pas seulement SQL Server.
1. Telecharger le template de projet
Sous Windows, une seule ligne PowerShell fait tout : elle telecharge le paquet, verifie le SDK .NET 10
et Node.js 22 (en installant ce qui manque), execute dotnet restore et npm install,
et installe l'extension WUIC Assistant dans VS Code.
& ([scriptblock]::Create((irm https://wuic-framework.com/install.ps1))) -SrcOptions utiles sur la meme ligne : -Dbms mysql (ou postgres, oracle) pour un moteur
autre que SQL Server — l'installeur l'installe et le configure lui-meme — et -WithTutorial
pour telecharger aussi la base de donnees d'exemple.
Quand c'est termine, le dernier ecran est deja votre liste de taches : ouvrez le fichier de
workspace WuicTest.code-workspace dans VS Code et appuyez sur F5, qui demarre backend et
frontend ensemble via le lanceur Fullstack: WuicTest + Chrome (les lanceurs sont dans
.vscode/launch.json, a cote de celui pour le backend seul). Si vous preferez le terminal, les
commandes equivalentes se trouvent plus bas.
Developer workspace ready: C:\Users\<user>\AppData\Local\WUIC\app
code "C:\Users\<user>\AppData\Local\WUIC\app\WuicTest.code-workspace"
then F5 > 'Fullstack: WuicTest + Chrome' (backend http://localhost:5000, frontend http://localhost:4200)
First start opens the first-run wizard: paste this connection string (Windows authentication)
Data Source=localhost\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=WuicData;Encrypt=False;TrustServerCertificate=TrueLa chaine de connexion est prete a l'emploi : au premier demarrage le wizard ne demande rien
d'autre. Avec -Dbms mysql ou -Dbms postgres cette ligne change en consequence et porte en
elle l'utilisateur et le mot de passe, parce que le mot de passe du superutilisateur est
genere par l'installeur ; ce meme mot de passe est enregistre dans wuic-secrets.json, a
cote de l'installation, et c'est le seul endroit ou il reste ecrit.
Le chemin manuel reste valable, sur n'importe quel systeme :
Partez du paquet WuicTest-src-*.zip (lien dans la section Download du site).
Extrayez-le dans un dossier de travail, ex. C:\dev\WuicTest (les fichiers vont directement
a la racine, PAS dans un sous-dossier src/). Le paquet contient :
WuicTest.csproj→ projet host avec<PackageReference Include="WuicCore" Version="..." />wwwroot/→ app Angular avecpackage.jsonqui referencewuic-framework-libdepuis le registre npmappsettings.jsonpreconfigure en modefirstRun = "true"avec placeholders__SET_*__appsettings-samples/→ 6 templates prets (mssql/mysql, firstRun/post-firstRun,Development)
> Pas besoin de cloner le repository du framework : WuicCore arrive comme paquet NuGet
> depuis nuget.org et wuic-framework-lib comme paquet npm depuis le registre npm. Le source
> du framework n'est necessaire que si vous voulez le modifier — typiquement pas votre cas.
> npm 10.9.x et les paquets anterieurs a la 1.7.1 : ces paquets ne contiennent pas de
> package-lock.json, et sans lock npm 10.9.x (la version installee par Node 22 LTS) s'arrete avec
> Cannot read properties of null (reading 'edgesOut') pendant la resolution des peers.
> Telechargez le lock publie a cote de la release —
> https://wuic-framework.com/downloads/locks/<nom-du-zip>.package-lock.json — placez-le dans
> wwwroot/ et relancez npm install. La ligne unique -Src le fait pour vous.
2. Base de donnees
Il faut une instance du moteur joignable. Avec la ligne unique, rien a faire : elle
installe et configure l'instance, et la chaine de connexion a coller dans le wizard est la
derniere chose qu'elle affiche. Sur le chemin manuel, l'instance doit deja exister.
Connexions dans appsettings.json :
MetaDataSQLConnection— DB metadata (menu, tables, colonnes, board, utilisateurs)DataSQLConnection— DB donnees applicatives
S'il s'agit de la premiere installation (AppSettings.firstRun = "true" dans le template),
le wizard de scaffolding au premier demarrage cree le schema metadata et peuple le DB donnees.
Voir la page Scaffolding initial pour le flux guide.
#### Ce que demande le wizard de premier demarrage
Au premier demarrage l'application n'affiche pas le formulaire de connexion mais la page
Configuration initiale du projet. On la remplit une seule fois : a la fin firstRun passe
a false et la page ne revient plus.
- Mode d'installation — deux entrees : Base existante, qui enregistre une base a vous,
et Tutorial WideWorldImporters, qui installe la base d'exemple. La seconde n'apparait que
si le paquet embarque le tutoriel (tutorialAvailable) : dans les paquets sans tutoriel la
liste deroulante n'existe pas et le mode est "Base existante".
- SGBD — le moteur. En le changeant, la chaine de connexion ci-dessous est reecrite dans la
forme du provider choisi.
- DataSQLConnection — la chaine vers la base de donnees, et le champ dont depend tout le
reste : tant que vous n'avez pas appuye sur Tester la connexion et charger les bases, la
liste des bases reste desactivee. Le test valide les identifiants, liste les bases du serveur
et, sur SQL Server, corrige lui-meme les parametres de certificat
(Encrypt=False;TrustServerCertificate=True) en vous le signalant. Integrated Security ne
vaut que sur SQL Server : les autres moteurs exigent un utilisateur et un mot de passe.
- Base de donnees et Nom de la base de metadonnees — la premiere se choisit dans la
liste chargee par le test (en mode tutoriel c'est un champ libre, WideWorldImporters par
defaut) ; la seconde est le nom de la base de metadonnees a creer (metadataDB par defaut,
MetadataCRM en mode tutoriel). Si cette base existe deja, le wizard demande confirmation
avant de la recreer.
- Generer automatiquement les metadonnees des tables (uniquement en "Base existante") —
remplit _metadati__tabelle / _metadati__colonne a partir de toutes les tables de la base
choisie. C'est ce qui allonge le plus le provisioning sur une base comptant beaucoup de
tables.
- Utilisateur administrateur initial — nom d'utilisateur (
adminpar defaut), mot de passe
(4 caracteres minimum) et langue. Il n'y a pas de mot de passe par defaut : celui saisi ici
est le seul qui ouvrira la premiere session. La langue choisie est appliquee a
l'administrateur et a cette page elle-meme. Si le nom d'utilisateur correspond a un
utilisateur deja present dans la DB metadata, le mot de passe et la langue choisis sont
appliques a cet utilisateur. Le wizard cree aussi l'utilisateur wuic_assistant pour le WUIC
Assistant, avec un mot de passe genere : voir RAG Chatbot.
- RAG Chatbot — uniquement la cle Anthropic, facultative. Rien a installer : voir l'etape 5.
Une fois Confirmer et creer la base de metadonnees presse, le provisioning se deroule seul,
avec une barre de progression et le nombre de lots traites. Duree mesuree sur les installations
de test : 30 s - 2 min en mode tutoriel, 1-4 min sur une base existante avec la
generation automatique activee. A la fin, la page laisse place au formulaire de connexion.
3. Backend (.NET)
Depuis la racine du dossier extrait (ex. C:\dev\WuicTest) :
# Premiere fois : restore des paquets NuGet (pulls WuicCore + deps depuis nuget.org, ~30 s)
dotnet restore
# Demarrage dev avec hot reload
$env:ASPNETCORE_ENVIRONMENT = 'Development'
dotnet watch run
Le backend expose les API sur http://localhost:5000.
4. Frontend (Angular)
Dans un second shell, depuis le sous-dossier wwwroot/ :
cd wwwroot
# Premiere fois : restore des dependances npm (pulls wuic-framework-lib depuis npm registry, ~2 min)
npm install
# Demarrage dev server
npm run serve:devLe frontend est disponible sur http://localhost:4200.
Les identifiants sont ceux de l'administrateur choisi dans le wizard de premier demarrage :
le nom d'utilisateur est admin si vous ne l'avez pas change, et le mot de passe est celui que
vous avez saisi (il n'y a pas de mot de passe par defaut).
5. RAG Chatbot (optionnel)
Le RAG Chatbot (Administration > RAG Chat) tourne dans le backend .NET :
le moteur de retrieval (rag-engine/WuicRagEngine.dll, ONNX Runtime
in-process) est charge par le backend quand AppSettings.rag-use-dotnet-engine
vaut "true" (valeur par defaut des packages de release). **Pas de Python, pas
de venv, aucun serveur separe a demarrer.**
A la premiere ouverture du chatbot (ou a la fin du first-run) le backend
telecharge seul les modeles ONNX (bge-m3 + reranker), le tokenizer et
l'index (~4,5 Go) depuis rag-engine-models-url (par defaut
https://wuic-framework.com/rag-models) dans rag-engine/artifacts/. Une
connexion internet n'est necessaire qu'une seule fois ; le telechargement
tourne en arriere-plan (1-5 min) et une notification in-app arrive au debut
et a la fin. Entre-temps le composant affiche l'etat RAG offline et le
reste de l'application fonctionne normalement.
Cles AppSettings pertinentes (toutes avec des valeurs par defaut pretes) :
rag-use-dotnet-engine=true— active le moteur .NET (false= fallback Python, voir ci-dessous)rag-engine-device=auto—auto|cuda|cpu: avec GPU NVIDIA (CUDA 12.x + cuDNN 9) ~1 s/requete, sur CPU ~15-25 s/requeterag-engine-profile=release—release= sources du framework en signature seulement ;internal= index integralrag-engine-models-url— source du telechargement au premier demarragerag-engine-cuda-path= (vide) — dossier des DLL CUDA/cuDNN si elles ne sont pas installees au niveau systeme
Pour le chat avec LLM, renseignez rag-llm-provider + rag-llm-api-key
(Claude via Anthropic, ou un modele local via Ollama avec rag-llm-base-url).
Sans provider, seul le mode retrieval (recherche de snippets) fonctionne.
Detail des cles sur la page AppSettings.
> L'ancien stack Python (scripts/rag-setup.ps1 + rag_server.py sur
> 127.0.0.1:8765) n'est utilisable qu'en fallback avec
> rag-use-dotnet-engine = "false" et n'est pas inclus dans les packages de release.
Recapitulatif des services
| Service | Port | Obligatoire | Commande rapide |
|---|---|---|---|
| SQL Server | 1433 | oui | (service Windows) |
| Backend .NET | 5000 | oui | dotnet watch ... run |
| Frontend Angular | 4200 | oui | npm run serve:dev |
| Engine RAG .NET (ONNX) | in-process | non | charge par le backend au premier chat |
Quick Start — premier composant
1. Configurez l'endpoint AsmxProxy.
2. Definissez la route metadata et les colonnes.
3. Montez wuic-data-source + wuic-data-repeater.
<wuic-data-source [hardcodedRoute]="'cities'"></wuic-data-source>
<wuic-data-repeater [hardcodedAction]="'list'"></wuic-data-repeater>Les premieres listes affichent 20 enregistrements : c'est le mode Trial
Une installation neuve fonctionne sans licence, donc en mode Trial, et dans ce mode
chaque requete est limitee a 20 enregistrements. Ce n'est ni une anomalie ni une limite
de la base de donnees : une liste qui affiche "20 sur 20" sur une table de plusieurs milliers
de lignes tourne tout simplement sans licence.
Comment le confirmer en une seconde :
curl -s http://localhost:5000/api/Meta/LicenseStatuslicenseValid: false confirme le mode Trial, et licenseReason en donne la raison
(invalid_signature, license_expired, machine_fingerprint_not_authorized, ...).
Comment en sortir : on colle la licence depuis Administration > Editeur AppSettings, onglet
Licensing, et elle prend effet immediatement - aucun redemarrage du backend n'est necessaire.
Les details, y compris les limites que le mode Trial impose au-dela du nombre
d'enregistrements, se trouvent sur la page Licensing.