auto-sync via WEVIA git_sync_all intent 2026-04-21T15:59:46+02:00
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
This commit is contained in:
32
api/ambre-sov-scan.php
Normal file
32
api/ambre-sov-scan.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
header("Content-Type: application/json");
|
||||
$out = [];
|
||||
// Direct scan
|
||||
$d = "/var/www/html/api/sovereign";
|
||||
if (is_dir($d)) {
|
||||
$cmd = "find $d -maxdepth 5 -type f 2>/dev/null | head -30";
|
||||
$out["files"] = array_filter(array_map("trim", explode("\n", @shell_exec($cmd) ?: "")));
|
||||
}
|
||||
// Nginx config that handles /api/sovereign/
|
||||
$ng = @shell_exec("grep -l sovereign /etc/nginx/sites-enabled/* 2>/dev/null");
|
||||
$out["nginx_configs"] = array_filter(array_map("trim", explode("\n", $ng ?: "")));
|
||||
|
||||
// If we have a config, extract the location block
|
||||
foreach ($out["nginx_configs"] ?? [] as $f) {
|
||||
if (!$f) continue;
|
||||
$content = @file_get_contents($f);
|
||||
if ($content) {
|
||||
// find any location containing /api/sovereign or similar
|
||||
if (preg_match_all("/location[^{]*\/api\/sovereign[^{]*\{[^}]+\}/m", $content, $matches)) {
|
||||
$out["nginx_blocks_$f"] = $matches[0];
|
||||
}
|
||||
if (preg_match_all("/proxy_pass[^;]+sovereign[^;]+;/", $content, $pp)) {
|
||||
$out["proxy_pass_sov"] = $pp[0];
|
||||
}
|
||||
if (preg_match_all("/\/api\/sovereign[^\s{}]+/", $content, $refs)) {
|
||||
$out["sovereign_refs_$f"] = array_unique($refs[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
echo json_encode($out, JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);
|
||||
70
api/ambre-thinking.php
Normal file
70
api/ambre-thinking.php
Normal file
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
/**
|
||||
* ambre-thinking.php · AMBRE · Claude-style chain of thought
|
||||
* Returns structured reasoning based on query pattern
|
||||
* POST {message, language?} → {thinking: "step1 step2 step3..."}
|
||||
*/
|
||||
header("Content-Type: application/json; charset=utf-8");
|
||||
|
||||
$raw = file_get_contents("php://input");
|
||||
$in = json_decode($raw, true) ?: $_POST;
|
||||
$q = trim($in["message"] ?? "");
|
||||
$lang = trim($in["language"] ?? "fr");
|
||||
|
||||
if (!$q) { echo json_encode(["thinking"=>"Analyse de la demande en cours..."]); exit; }
|
||||
|
||||
// Detect query pattern and build tailored reasoning
|
||||
$lc = mb_strtolower($q);
|
||||
$thinking = "";
|
||||
|
||||
// File gen patterns
|
||||
if (preg_match("/g[eéèê]n[eéèê]re?.*(pdf|pptx?|powerpoint|docx?|word|excel|tableau|document|pr[eéèê]sentation)/iu", $q, $m)) {
|
||||
$type = strtolower($m[1]);
|
||||
$thinking = "Je reçois une demande de génération de document $type. Étape 1 : extraction du sujet depuis la requête. Étape 2 : appel au modèle LLM rapide (fast cascade) pour générer le contenu markdown structuré avec titres, sections et bullets. Étape 3 : conversion du markdown via pandoc vers le format $type cible. Étape 4 : sauvegarde du fichier dans /generated/ avec timestamp unique et retour de l'URL téléchargeable. Temps estimé : 400-1500ms selon la complexité. Engine : pandoc " . ($type === "pdf" ? "+ wkhtmltopdf" : "") . ".";
|
||||
}
|
||||
elseif (preg_match("/g[eéèê]n[eéèê]re?.*(sch[eéèê]ma|mermaid|diagramme|flowchart)/iu", $q)) {
|
||||
$thinking = "Demande de diagramme Mermaid détectée. Étape 1 : extraction du sujet du flowchart. Étape 2 : appel LLM avec system prompt strict exigeant syntaxe Mermaid valide (flowchart TD + nodes A[Label] --> B[Label]). Étape 3 : validation regex de la sortie, ajout du header si manquant. Étape 4 : encapsulation en code block mermaid pour rendu inline par le renderer mermaid 10.9.0 de l'interface.";
|
||||
}
|
||||
elseif (preg_match("/g[eéèê]n[eéèê]re?.*image/iu", $q)) {
|
||||
$thinking = "Demande d'image SVG. Étape 1 : extraction du sujet de l'image. Étape 2 : appel LLM avec system prompt exigeant du SVG valide 400x300, formes géométriques colorées. Étape 3 : nettoyage (strip backticks markdown). Étape 4 : sauvegarde .svg dans /generated/ et retour URL + aperçu inline. Note : S204 ne dispose pas de Stable Diffusion local, donc génération via LLM textuel structuré.";
|
||||
}
|
||||
elseif (preg_match("/(?:ecris?|[eéèê]cri).*code/iu", $q)) {
|
||||
$thinking = "Demande de génération de code. Étape 1 : détection du langage cible (python, javascript, react/jsx, typescript, php, html, bash, sql) via mots-clés dans le topic. Étape 2 : extraction du sujet métier. Étape 3 : appel LLM avec system prompt demandant code PUR sans preambule ni backticks. Étape 4 : sauvegarde dans /generated/ avec extension correcte. Étape 5 : retour inline avec code block pour rendu syntax-highlighted.";
|
||||
}
|
||||
elseif (preg_match("/traduis?|traduire?|translate/iu", $q)) {
|
||||
$thinking = "Demande de traduction. Étape 1 : détection de la langue cible (anglais, espagnol, allemand, italien, portugais, arabe, chinois, japonais, français). Étape 2 : extraction du texte à traduire. Étape 3 : appel LLM avec prompt 'translate only, no explanation'. Étape 4 : retour du texte traduit aux côtés de l'original pour comparaison.";
|
||||
}
|
||||
elseif (preg_match("/\b(bilan|status|[eéèê]tat|rapport|audit|diagnostic)\b/iu", $q)) {
|
||||
$thinking = "Demande de bilan système. Stratégie multi-agent : activation du V103 Natural Multi-Agent Router qui orchestre en parallèle jusqu'à 14 agents (sovereign, nonreg, ethica, git, vault, docker, crons, registry, pages, scraper, ollama, resolver, arena, blade). Chaque agent rapporte son état. Synthèse finale consolidée par le LLM avec structure exécutive : état général, performance, sécurité, développement, problèmes, actions.";
|
||||
}
|
||||
elseif (preg_match("/\b(qui|what|whoa?|quoi|comment|pourquoi|quand)\b/iu", $q)) {
|
||||
$thinking = "Question informative détectée. Stratégie : consultation de la base de connaissances WEVIA (Qdrant vector store, 19 collections, 17327 points), recherche sémantique sur le sujet, puis appel LLM souverain pour formuler la réponse contextualisée en français professionnel. Si le sujet est hors KB, fallback sur la connaissance générale du modèle.";
|
||||
}
|
||||
else {
|
||||
// Generic - try LLM for thinking
|
||||
$sys_think = "You are the internal reasoning engine. Given the user query, output a SHORT reasoning chain (3-5 sentences max) explaining what you will do, in French. No preamble, no quotes, just the reasoning.";
|
||||
$raw = @file_get_contents("http://127.0.0.1:4000/v1/chat/completions", false, stream_context_create([
|
||||
"http" => [
|
||||
"method" => "POST",
|
||||
"header" => "Content-Type: application/json\r\n",
|
||||
"content" => json_encode([
|
||||
"model" => "fast",
|
||||
"messages" => [
|
||||
["role"=>"system","content"=>$sys_think],
|
||||
["role"=>"user","content"=>"Requête : $q"],
|
||||
],
|
||||
"max_tokens" => 300,
|
||||
"temperature" => 0.4,
|
||||
]),
|
||||
"timeout" => 12,
|
||||
],
|
||||
]));
|
||||
$llm = @json_decode($raw, true);
|
||||
$thinking = $llm["choices"][0]["message"]["content"] ?? "Analyse de la demande, identification du contexte WEVIA approprié, préparation de la réponse structurée.";
|
||||
}
|
||||
|
||||
echo json_encode([
|
||||
"thinking" => trim($thinking),
|
||||
"source" => "ambre-thinking-v1",
|
||||
"ts" => date("c"),
|
||||
], JSON_UNESCAPED_UNICODE);
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"generated_at": "2026-04-21T15:50:02.021263",
|
||||
"generated_at": "2026-04-21T15:55:01.779634",
|
||||
"stats": {
|
||||
"total": 48,
|
||||
"pending": 31,
|
||||
|
||||
@@ -0,0 +1,281 @@
|
||||
{
|
||||
"ts": "2026-04-21T13:55:01+00:00",
|
||||
"server": "s204",
|
||||
"s204": {
|
||||
"load": 0.9,
|
||||
"uptime": "2026-04-14 11:51:24",
|
||||
"ram_total_mb": 31335,
|
||||
"ram_used_mb": 11594,
|
||||
"ram_free_mb": 19740,
|
||||
"disk_total": "150G",
|
||||
"disk_used": "117G",
|
||||
"disk_free": "27G",
|
||||
"disk_pct": "82%",
|
||||
"fpm_workers": 140,
|
||||
"docker_containers": 19,
|
||||
"cpu_cores": 8
|
||||
},
|
||||
"s95": {
|
||||
"load": 0.9,
|
||||
"disk_pct": "81%",
|
||||
"status": "UP",
|
||||
"ram_total_mb": 15610,
|
||||
"ram_free_mb": 12027
|
||||
},
|
||||
"pmta": [
|
||||
{
|
||||
"name": "SER6",
|
||||
"ip": "110.239.84.121",
|
||||
"status": "DOWN"
|
||||
},
|
||||
{
|
||||
"name": "SER7",
|
||||
"ip": "110.239.65.64",
|
||||
"status": "DOWN"
|
||||
},
|
||||
{
|
||||
"name": "SER8",
|
||||
"ip": "182.160.55.107",
|
||||
"status": "DOWN"
|
||||
},
|
||||
{
|
||||
"name": "SER9",
|
||||
"ip": "110.239.86.68",
|
||||
"status": "DOWN"
|
||||
}
|
||||
],
|
||||
"assets": {
|
||||
"html_pages": 315,
|
||||
"php_apis": 803,
|
||||
"wiki_entries": 1988,
|
||||
"vault_doctrines": 74,
|
||||
"vault_sessions": 104,
|
||||
"vault_decisions": 12
|
||||
},
|
||||
"tools": {
|
||||
"total": 627,
|
||||
"registry_version": "?"
|
||||
},
|
||||
"sovereign": {
|
||||
"status": "UP",
|
||||
"providers": [
|
||||
"Cerebras-fast",
|
||||
"Cerebras-think",
|
||||
"Groq",
|
||||
"Cloudflare-AI",
|
||||
"Gemini",
|
||||
"SambaNova",
|
||||
"NVIDIA-NIM",
|
||||
"Mistral",
|
||||
"Groq-OSS",
|
||||
"HF-Space",
|
||||
"HF-Router",
|
||||
"OpenRouter",
|
||||
"GitHub-Models"
|
||||
],
|
||||
"active": 13,
|
||||
"total": 13,
|
||||
"primary": "Cerebras-fast",
|
||||
"cost": "0€"
|
||||
},
|
||||
"ethica": {
|
||||
"total_hcps": 161733,
|
||||
"with_email": 110609,
|
||||
"with_phone": 155151,
|
||||
"gap_email": 51124,
|
||||
"pct_email": 68.4,
|
||||
"pct_phone": 95.9,
|
||||
"by_country": [
|
||||
{
|
||||
"country": "DZ",
|
||||
"hcps": 122337,
|
||||
"with_email": 78506,
|
||||
"with_tel": 119396,
|
||||
"pct_email": 64.2,
|
||||
"pct_tel": 97.6
|
||||
},
|
||||
{
|
||||
"country": "MA",
|
||||
"hcps": 19723,
|
||||
"with_email": 15077,
|
||||
"with_tel": 18737,
|
||||
"pct_email": 76.4,
|
||||
"pct_tel": 95
|
||||
},
|
||||
{
|
||||
"country": "TN",
|
||||
"hcps": 17794,
|
||||
"with_email": 15147,
|
||||
"with_tel": 17018,
|
||||
"pct_email": 85.1,
|
||||
"pct_tel": 95.6
|
||||
},
|
||||
{
|
||||
"country": "INTL",
|
||||
"hcps": 1879,
|
||||
"with_email": 1879,
|
||||
"with_tel": 0,
|
||||
"pct_email": 100,
|
||||
"pct_tel": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"docker": [
|
||||
{
|
||||
"name": "loki",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "listmonk",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "plausible-plausible-1",
|
||||
"status": "Up 3 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "plausible-plausible-db-1",
|
||||
"status": "Up 3 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "plausible-plausible-events-db-1",
|
||||
"status": "Up 3 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "n8n-docker-n8n-1",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "mattermost-docker-mm-db-1",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "mattermost-docker-mattermost-1",
|
||||
"status": "Up 5 days (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "twenty",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "twenty-redis",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "langfuse",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "redis-weval",
|
||||
"status": "Up 7 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "gitea",
|
||||
"status": "Up 7 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "node-exporter",
|
||||
"status": "Up 7 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "prometheus",
|
||||
"status": "Up 7 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "searxng",
|
||||
"status": "Up 7 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "uptime-kuma",
|
||||
"status": "Up 38 hours (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "vaultwarden",
|
||||
"status": "Up 7 days (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "qdrant",
|
||||
"status": "Up 7 days",
|
||||
"ports": ""
|
||||
}
|
||||
],
|
||||
"crons": {
|
||||
"active": 35
|
||||
},
|
||||
"git": {
|
||||
"head": "b3889d7f2 auto-sync-1555",
|
||||
"dirty": 1,
|
||||
"status": "DIRTY"
|
||||
},
|
||||
"nonreg": {
|
||||
"total": 153,
|
||||
"passed": 153,
|
||||
"score": "100%"
|
||||
},
|
||||
"services": [
|
||||
{
|
||||
"name": "DeerFlow",
|
||||
"port": 3002,
|
||||
"status": "UP"
|
||||
},
|
||||
{
|
||||
"name": "DeerFlow API",
|
||||
"port": 8001,
|
||||
"status": "UP"
|
||||
},
|
||||
{
|
||||
"name": "Qdrant",
|
||||
"port": 6333,
|
||||
"status": "UP"
|
||||
},
|
||||
{
|
||||
"name": "Ollama",
|
||||
"port": 11434,
|
||||
"status": "UP"
|
||||
},
|
||||
{
|
||||
"name": "Redis",
|
||||
"port": 6379,
|
||||
"status": "UP"
|
||||
},
|
||||
{
|
||||
"name": "Sovereign",
|
||||
"port": 4000,
|
||||
"status": "UP"
|
||||
},
|
||||
{
|
||||
"name": "SearXNG",
|
||||
"port": 8080,
|
||||
"status": "UP"
|
||||
}
|
||||
],
|
||||
"whisper": {
|
||||
"binary": "COMPILED",
|
||||
"model": "142MB"
|
||||
},
|
||||
"grand_total": 3826,
|
||||
"health": {
|
||||
"score": 5,
|
||||
"max": 6,
|
||||
"pct": 83
|
||||
},
|
||||
"elapsed_ms": 10122
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"ok": true,
|
||||
"version": "V83-business-kpi",
|
||||
"ts": "2026-04-21T13:54:03+00:00",
|
||||
"ts": "2026-04-21T13:59:43+00:00",
|
||||
"summary": {
|
||||
"total_categories": 8,
|
||||
"total_kpis": 64,
|
||||
|
||||
39
generated/wevia-strategie-Q3-20260421-135939-70370d.md
Normal file
39
generated/wevia-strategie-Q3-20260421-135939-70370d.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# strategie Q3
|
||||
|
||||
# Stratégie Q3
|
||||
|
||||
## Présentation
|
||||
|
||||
La troisième trimestre (Q3) est une période critique pour les entreprises, marquée par des objectifs à atteindre et des défis à relever. Dans ce document, nous présentons notre stratégie pour Q3, qui vise à atteindre nos objectifs de croissance et de développement.
|
||||
|
||||
## Objectifs Q3
|
||||
|
||||
* **Augmentation des ventes** : 15% par rapport au Q2
|
||||
* **Développement de nouveaux produits** : lancement de 2 nouveaux produits dans le marché
|
||||
* **Amélioration de la satisfaction client** : 90% de satisfaction client au Q3
|
||||
|
||||
## Stratégie Marketing
|
||||
|
||||
* **Campagnes publicitaires** : lancement de 2 campagnes publicitaires ciblées pour atteindre les objectifs de vente
|
||||
* **Contenu de qualité** : création de contenu de qualité pour attirer et fidéliser les clients
|
||||
* **Réseaux sociaux** : augmentation de la présence sur les réseaux sociaux pour améliorer la visibilité et la communication avec les clients
|
||||
|
||||
## Stratégie Commerciale
|
||||
|
||||
* **Prix compétitifs** : mise en place de prix compétitifs pour attirer les clients
|
||||
* **Promotions et offres** : mise en place de promotions et offres pour fidéliser les clients
|
||||
* **Partenariats** : conclusion de partenariats avec des entreprises pour améliorer la gamme de produits et services
|
||||
|
||||
## Stratégie Opérationnelle
|
||||
|
||||
* **Amélioration de l'efficacité** : mise en place de processus plus efficaces pour améliorer la productivité
|
||||
* **Réduction des coûts** : mise en place de mesures pour réduire les coûts sans affecter la qualité des produits
|
||||
* **Investissement dans la formation** : investissement dans la formation des employés pour améliorer leurs compétences
|
||||
|
||||
## Suivi et Évaluation
|
||||
|
||||
* **Rapports réguliers** : présentation de rapports réguliers pour suivre les progrès et les résultats
|
||||
* **Révisions et ajustements** : mise en place de révisions et ajustements pour s'assurer que la stratégie est sur la bonne voie
|
||||
* **Récompenses et sanctions** : mise en place de récompenses et sanctions pour inciter les employés à atteindre les objectifs
|
||||
|
||||
En suivant cette stratégie, nous sommes convaincus que nous pourrons atteindre nos objectifs de croissance et de développement pour Q3. Nous nous engageons à travailler dur pour atteindre ces objectifs et à améliorer notre performance continue.
|
||||
BIN
generated/wevia-strategie-Q3-20260421-135939-70370d.pdf
Normal file
BIN
generated/wevia-strategie-Q3-20260421-135939-70370d.pdf
Normal file
Binary file not shown.
BIN
generated/wevia-tuto-20260421-135942-e0b9f9.docx
Normal file
BIN
generated/wevia-tuto-20260421-135942-e0b9f9.docx
Normal file
Binary file not shown.
109
generated/wevia-tuto-20260421-135942-e0b9f9.md
Normal file
109
generated/wevia-tuto-20260421-135942-e0b9f9.md
Normal file
@@ -0,0 +1,109 @@
|
||||
# tuto
|
||||
|
||||
**Tuto : Comment Créer un Document Professionnel en Word**
|
||||
|
||||
# Introduction
|
||||
=====================================
|
||||
|
||||
Bienvenue dans ce tuto sur la création d'un document professionnel en Word. Dans cet article, nous allons vous guider étape par étape pour créer un document complet et professionnel.
|
||||
|
||||
## Prérequis
|
||||
---------------
|
||||
|
||||
Avant de commencer, assurez-vous d'avoir les compétences de base en Word et d'avoir installé le logiciel sur votre ordinateur.
|
||||
|
||||
## Étape 1 : Créer un Nouveau Document
|
||||
-------------------------------------
|
||||
|
||||
1. Ouvrez Word et cliquez sur "Nouveau" pour créer un nouveau document.
|
||||
2. Sélectionnez le modèle de document que vous souhaitez utiliser (par exemple, "Article" ou "Rapport").
|
||||
3. Nommez votre document et choisissez l'emplacement où vous le souhaitez enregistrer.
|
||||
|
||||
# Section 1 : La Structure du Document
|
||||
=====================================
|
||||
|
||||
## 1.1 : L'En-tête
|
||||
-----------------
|
||||
|
||||
L'en-tête est la partie supérieure de votre document qui contient les informations de base, telles que le titre, le sous-titre, et les informations de contact.
|
||||
|
||||
### Exemple d'En-tête
|
||||
|
||||
* Titre : "Document Professionnel"
|
||||
* Sous-titre : "Création d'un Document Complexe"
|
||||
* Informations de contact : "Nom : John Doe, Email : [johndoe@example.com](mailto:johndoe@example.com)"
|
||||
|
||||
## 1.2 : Le Contenu
|
||||
------------------
|
||||
|
||||
Le contenu est la partie principale de votre document qui contient les informations que vous souhaitez partager avec vos lecteurs.
|
||||
|
||||
### Exemple de Contenu
|
||||
|
||||
* Introduction : "Bienvenue dans ce document sur la création d'un document professionnel en Word."
|
||||
* Corps : "Voici les étapes à suivre pour créer un document complet et professionnel..."
|
||||
* Conclusion : "En suivant ces étapes, vous serez en mesure de créer un document professionnel de haute qualité."
|
||||
|
||||
## 1.3 : La Fin
|
||||
----------------
|
||||
|
||||
La fin est la partie inférieure de votre document qui contient les informations de copyright, les références, et les annexes.
|
||||
|
||||
### Exemple de Fin
|
||||
|
||||
* Copyright : "Tous droits réservés à [Nom de l'entreprise]"
|
||||
* Références : "[Référence 1], [Référence 2], etc."
|
||||
* Annexes : "Annexe 1 : [Nom de l'annexe], Annexe 2 : [Nom de l'annexe], etc."
|
||||
|
||||
# Section 2 : Les Formules de Style
|
||||
=====================================
|
||||
|
||||
## 2.1 : Les Titres
|
||||
-----------------
|
||||
|
||||
Les titres sont utilisés pour structurer votre document et aider les lecteurs à comprendre le contenu.
|
||||
|
||||
### Exemple de Titre
|
||||
|
||||
* Titre 1 : "Introduction"
|
||||
* Titre 2 : "Les Étapes à Suivre"
|
||||
* Titre 3 : "La Conclusion"
|
||||
|
||||
## 2.2 : Les Sous-Titres
|
||||
----------------------
|
||||
|
||||
Les sous-titres sont utilisés pour fournir plus de détails sur le contenu du titre.
|
||||
|
||||
### Exemple de Sous-Titre
|
||||
|
||||
* Sous-titre 1 : "Créer un Nouveau Document"
|
||||
* Sous-titre 2 : "La Structure du Document"
|
||||
* Sous-titre 3 : "Les Formules de Style"
|
||||
|
||||
## 2.3 : Les Éléments de Formules de Style
|
||||
------------------------------------------
|
||||
|
||||
Les éléments de formules de style sont utilisés pour mettre en forme le contenu de votre document.
|
||||
|
||||
### Exemple d'Élément de Formules de Style
|
||||
|
||||
* Titre en gras : "Titre 1"
|
||||
* Texte en italique : "Voici un exemple de texte en italique."
|
||||
* Liste à puces : "Voici une liste à puces :"
|
||||
+ Élément 1
|
||||
+ Élément 2
|
||||
+ Élément 3
|
||||
|
||||
# Conclusion
|
||||
==============
|
||||
|
||||
En suivant ces étapes, vous serez en mesure de créer un document professionnel de haute qualité en Word. N'hésitez pas à essayer et à expérimenter pour améliorer vos compétences en Word.
|
||||
|
||||
**Annexe 1 : Ressources Complémentaires**
|
||||
|
||||
* [Lien vers une ressource complémentaire](https://www.example.com)
|
||||
* [Lien vers une autre ressource complémentaire](https://www.autreexemple.com)
|
||||
|
||||
**Annexe 2 : Exemple de Document**
|
||||
|
||||
* [Lien vers un exemple de document](https://www.example.com/document.pdf)
|
||||
51
wevia.html
51
wevia.html
@@ -1065,11 +1065,12 @@ function showThinking() {
|
||||
cur.className = 'think-cursor';
|
||||
stream.appendChild(cur);
|
||||
|
||||
// Call fast LLM for real reasoning about this specific query
|
||||
fetch('/api/sovereign/v1/chat/completions', {
|
||||
// === AMBRE-V3-THINKING 2026-04-21 · route to custom thinking endpoint ===
|
||||
// Doctrine: real chain-of-thought for all queries, pattern-specific for gen tasks
|
||||
fetch('/api/ambre-thinking.php', {
|
||||
method: 'POST',
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
body: JSON.stringify({ message: q, language: lang || 'fr' })
|
||||
body: JSON.stringify({ message: q, language: (typeof lang !== 'undefined' ? lang : 'fr') })
|
||||
})
|
||||
.then(function(r) { return r.json(); })
|
||||
.then(function(data) {
|
||||
@@ -1266,6 +1267,50 @@ function send() {
|
||||
}
|
||||
payload.mode = effectiveMode;
|
||||
|
||||
// === AMBRE-V2-GEN-ROUTER 2026-04-21 · intercept file generation patterns ===
|
||||
// Doctrine: route gen/code/translate patterns → wevia-master-api.php (real handler)
|
||||
// other queries continue to sovereign. No regression, pure additive.
|
||||
var _ambre_gen_pat = /g[eéèê]n[eéèê]re?\s+(?:un|une|des|le|la)?\s*(pdf|pptx?|powerpoint|docx?|word|excel|xlsx?|pr[eéèê]sentation|document|tableau|sch[eéèê]ma|mermaid|diagramme|image)|ecri[srt]?\s+(?:le|du|un)?\s*code|traduis?\s+(?:ce\s+texte|en)?\s*(anglais|francais|espagnol|allemand|italien|portugais|arabe|chinois|japonais|english|spanish|french|german|italian|portuguese|arabic|chinese|japanese)/i;
|
||||
if (_ambre_gen_pat.test(text)) {
|
||||
// Route to wevia-master-api.php (my handler pipeline)
|
||||
fetch('/api/wevia-master-api.php', {
|
||||
method: 'POST',
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
body: JSON.stringify({message: text, session_id: convId || ('wv-' + Date.now())})
|
||||
})
|
||||
.then(function(r) { return r.json(); })
|
||||
.then(function(data) {
|
||||
hideThinking();
|
||||
var elapsed = ((performance.now() - startTime) / 1000).toFixed(1);
|
||||
var response = data.response || data.content || 'Pas de reponse.';
|
||||
if (data.conversation_id) convId = data.conversation_id;
|
||||
chatHistory.push({role: 'assistant', content: response});
|
||||
var msgEl = addMsg('assistant', response, elapsed);
|
||||
var badges = [];
|
||||
if(data.provider) badges.push('<span class="nx-badge nx-prov">' + (data.provider||'').substring(0,20) + '</span>');
|
||||
if(data.intent) badges.push('<span class="nx-badge" style="background:rgba(124,107,240,0.15);color:#7C6BF0">' + data.intent + '</span>');
|
||||
badges.push('<span class="nx-badge" style="background:rgba(16,185,129,0.15);color:#10B981">⚡ Gen</span>');
|
||||
if(badges.length > 0 && msgEl && msgEl.querySelector('.msg-inner')) {
|
||||
var badgeEl = document.createElement('div');
|
||||
badgeEl.className = 'nx-badges';
|
||||
badgeEl.innerHTML = badges.join('');
|
||||
msgEl.querySelector('.msg-inner').appendChild(badgeEl);
|
||||
}
|
||||
// Detect code/artifact blocks in response
|
||||
var codeMatch = response.match(/```(\w+)?\n([\s\S]*?)```/);
|
||||
if (codeMatch && window._artifactCode !== undefined) {
|
||||
window._artifactCode = codeMatch[2];
|
||||
}
|
||||
setTimeout(function(){ if(typeof generateFollowups==='function') generateFollowups(window._lastQuery, response); }, 500);
|
||||
})
|
||||
.catch(function(err) {
|
||||
hideThinking();
|
||||
addMsg('assistant', '❌ Erreur generation: ' + err.message, '0');
|
||||
});
|
||||
return;
|
||||
}
|
||||
// === END AMBRE-V2-GEN-ROUTER ===
|
||||
|
||||
// Fast mode: direct to fast endpoint (2s response)
|
||||
if (effectiveMode === 'fast' && !pendingFile) {
|
||||
fetch('/api/sovereign/v1/chat/completions', {
|
||||
|
||||
Reference in New Issue
Block a user