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

ElementVerificationNotes
.NET 10 SDKdotnet --versionHosting Bundle pour IIS en production
Node.js 22 LTSnode --versionLa 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.PSVersionLe 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 -dsUbuntu 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-smiOptionnel : 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.

Snippet 1PowerShell
& ([scriptblock]::Create((irm https://wuic-framework.com/install.ps1))) -Src

Options 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.

Snippet 2text
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=True

La 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 avec package.json qui reference wuic-framework-lib depuis le registre npm
  • appsettings.json preconfigure en mode firstRun = "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 (admin par 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) :

Snippet 3PowerShell
# 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/ :

Snippet 4PowerShell
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:dev

Le 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/requete
  • rag-engine-profile = release — release = sources du framework en signature seulement ; internal = index integral
  • rag-engine-models-url — source du telechargement au premier demarrage
  • rag-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

ServicePortObligatoireCommande rapide
SQL Server1433oui(service Windows)
Backend .NET5000ouidotnet watch ... run
Frontend Angular4200ouinpm run serve:dev
Engine RAG .NET (ONNX)in-processnoncharge 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.

Snippet 5HTML
<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 :

Snippet 6Bash
curl -s http://localhost:5000/api/Meta/LicenseStatus

licenseValid: 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.