fix(ci): e2e - fixtures de test versionnees + acces via passerelle docker (dind)
CI / lint (push) Successful in 30s
CI / security (push) Successful in 19s
CI / test (push) Successful in 34s
CI / build (push) Successful in 11s
CI / e2e (push) Failing after 25m16s

- test_vault/ et test_dir/ : fixtures markdown pour les tests E2E Playwright (22 fichiers, .obsigate-backup ignore)

- ci.yml e2e : health check et BASE_URL via IP passerelle docker (localhost du job container ne voit pas le port publie sur l hote)

- ci.yml e2e : l etape Start ObsiGate echoue explicitement si l app n est pas joignable
This commit is contained in:
2026-08-24 16:48:37 -04:00
parent fdc0b5b15a
commit 62eabb2944
24 changed files with 3235 additions and 4 deletions
+11 -2
View File
@@ -134,14 +134,23 @@ jobs:
-e DIR_1_PATH=/vaults/TestDir \
-e OBSIGATE_AUTH_ENABLED=false \
obsigate:ci
# Docker-in-docker : le port publié est joignable via l'IP de la
# passerelle (localhost dans le job container ne voit pas le port
# publié sur l'hôte).
GW=$(ip route show default | awk '{print $3}' || echo 172.17.0.1)
echo "Gateway IP: $GW"
# Wait for health check
for i in $(seq 1 30); do
curl -s http://localhost:2029/api/health && break
if curl -sf "http://$GW:2029/api/health"; then echo "Health OK"; break; fi
sleep 1
done
curl -sf "http://$GW:2029/api/health" >/dev/null || { echo "App not reachable at $GW:2029"; exit 1; }
- name: Run E2E tests
run: npx playwright test --project=chromium-desktop --reporter=list
run: |
GW=$(ip route show default | awk '{print $3}' || echo 172.17.0.1)
echo "Using BASE_URL=http://$GW:2029"
BASE_URL="http://$GW:2029" npx playwright test --project=chromium-desktop --reporter=list
- name: Upload test results
if: always()
+1 -2
View File
@@ -4,8 +4,6 @@ __pycache__/
.env
.env.*
!.env.example
test_vault/
test_dir/
.venv/
venv/
*.egg-info/
@@ -19,6 +17,7 @@ odysseus/
node_modules/
test-results/
playwright-report/
**/.obsigate-backup/
# Desktop build artifacts
desktop/target/
File diff suppressed because it is too large Load Diff
+2
View File
@@ -0,0 +1,2 @@
# Nouveau fichier dans Dir
+1
View File
@@ -0,0 +1 @@
test
+3
View File
@@ -0,0 +1,3 @@
# Mon projet de développement web
La programma
+384
View File
@@ -0,0 +1,384 @@
# ObsiGate — Analyse complète & Recommandations V1.1
> **Date :** 2026-05-25 | **Analyste :** Hermes-Claw + Audit Code Source | **Version testée :** 1.4.0 (backend) / 1.5.0 (frontend) — http://openclaw1.dev.home:2020
---
## 📋 Table des matières
1. [Résumé exécutif](#1-resume-executif)
2. [Fonctionnalités actuelles](#2-fonctionnalites-actuelles)
3. [Forces](#3-forces)
4. [Points d'amélioration](#4-points-damelioration)
5. [Roadmap suggérée](#5-roadmap-suggeree)
6. [Checklist de professionnalisation](#6-checklist-de-professionnalisation)
7. [Notes de révision V1.1](#7-notes-de-revision-v11)
---
## 1. Résumé exécutif
**ObsiGate** est un gestionnaire web de vaults Obsidian Markdown auto-hébergé.
La version actuelle (1.4.0/1.5.0) est un produit **riche et mature**, bien au-delà d'une simple V1.
Il dispose d'un moteur de recherche TF-IDF avancé, un éditeur CodeMirror 6 intégré, une vue graphique,
un support PWA complet, des opérations CRUD sur fichiers/dossiers, et une synchronisation temps réel via SSE + watchdog.
**Note globale : 8.5/10** — Produit fonctionnel, performant et professionnel.
Les améliorations restantes sont principalement d'ordre sécuritaire
(masquage des secrets, rate limiting) et de polish (documentation API, backlinks, tests automatisés).
**Recommandation prioritaire :** Traiter les 2 points de sécurité
(masquage secrets + rate limiting), puis les enrichissements UX
(backlinks, conflits Syncthing).
---
## 2. Fonctionnalités actuelles
| # | Fonctionnalité | Statut | Détail |
|---|---------------|:------:|--------|
| 1 | Authentification | ✅ | JWT HS256 + Argon2id, sessions persistantes, "Se souvenir de moi", contrôle d'accès par vault |
| 2 | Multi-vaults | ✅ | Configurables via env vars ou API dynamique, support VAULT et DIR |
| 3 | Arborescence de fichiers | ✅ | Navigation hiérarchique avec lazy-loading, compteur d'éléments par dossier, icônes par type |
| 4 | Rendu Markdown | ✅ | Conversion HTML via mistune, tables, task lists, footnotes, strikethrough |
| 5 | Extraction YAML frontmatter | ✅ | Tous les champs parsés, carte frontmatter pliable avec badges, dates formatées, tags |
| 6 | Vue Source (raw) | ✅ | Toggle markdown brut + frontmatter |
| 7 | Bouton Copier | ✅ | Copie du contenu source |
| 8 | Bouton Télécharger | ✅ | Téléchargement du fichier |
| 9 | Onglet RÉCENT | ✅ | Onglet sidebar dédié + dashboard avec timestamps relatifs, previews, tags, bookmarks |
| 10 | Onglet TAGS | ✅ | Nuage de tags cliquable, compteurs, filtrage des tags template configurables |
| 11 | Recherche avancée | ✅ | Moteur TF-IDF, opérateurs (`tag:`, `vault:`, `title:`, `path:`, `ext:`), snippets `<mark>`, facettes, pagination, tri |
| 12 | Autocomplétion de recherche | ✅ | Dropdown avec historique (localStorage), suggestions fichiers + tags, navigation clavier |
| 13 | Filtre fichiers sidebar | ✅ | Filtre par nom, option case-sensitive, recherche sur l'index des chemins |
| 14 | Thème Sombre | ✅ | Toggle clair/sombre, persisté localStorage, highlight.js adaptatif |
| 15 | Administration utilisateurs | ✅ | Interface CRUD complète (admin uniquement) |
| 16 | Configurations | ✅ | Paramètres recherche, backend, watcher, tags, fichiers cachés, diagnostics, à propos |
| 17 | Table des matières | ✅ | Panneau droit avec scroll-spy, IntersectionObserver, barre de progression de lecture |
| 18 | Bookmarks | ✅ | Dashboard avec favoris, toggle depuis les cartes de fichiers |
| 19 | Historique d'ouverture | ✅ | Fichiers récemment ouverts par utilisateur, persisté sur disque |
| 20 | Éditeur CodeMirror 6 | ✅ | Coloration syntaxique multi-langages, autocomplétion, Ctrl+F, Ctrl+S |
| 21 | Création fichiers/dossiers | ✅ | Via menu contextuel (clic droit) et modals dédiées |
| 22 | Renommage fichiers/dossiers | ✅ | Renommage inline via menu contextuel |
| 23 | Suppression fichiers/dossiers | ✅ | Avec confirmation, suppression récursive pour les dossiers |
| 24 | Menu contextuel | ✅ | Clic droit : copier chemin, vue graphique, créer, renommer, supprimer |
| 25 | Wikilinks cliquables | ✅ | `[[lien]]` et `[[lien|alias]]` convertis en liens navigables, liens brisés en rouge |
| 26 | Images Obsidian | ✅ | Résolution intelligente (7 stratégies), support `![[image]]`, `![alt](path)`, `<img>` dans liens |
| 27 | Vue Graphique | ✅ | Canvas force-directed, nœuds fichiers/dossiers, arêtes parent + wikilinks, zoom/pan |
| 28 | Onglets de contenu | ✅ | Barre d'onglets multi-fichiers |
| 29 | Fenêtres popout | ✅ | Vue standalone avec éditeur, TOC, thème sombre, login intégré |
| 30 | Find in Page | ✅ | Barre Ctrl+F avec case-sensitive, mot entier, regex |
| 31 | PWA | ✅ | Service worker, manifest.json, icônes, notification de mise à jour |
| 32 | SSE — Synchronisation temps réel | ✅ | Reconnexion automatique, panneau d'état, événements index/vault |
| 33 | Watchdog — Surveillance fichiers | ✅ | inotify natif + fallback polling, debounce configurable, mise à jour incrémentale |
| 34 | Filtrage dossiers/fichiers cachés | ✅ | Par vault (`hideHiddenFiles`), paramétrable dans Configurations |
| 35 | Gestion dynamique des vaults | ✅ | Ajout/suppression via API sans redémarrage |
| 36 | API REST | ✅ | 20+ endpoints (CRUD fichiers, recherche, tags, graph, bookmarks, config, diagnostics...) |
| 37 | Sécurité | ✅ | Headers CSP/X-Frame/XSS, protection path traversal, non-root, permissions vault |
| 38 | Toast notifications | ✅ | Feedback utilisateur (succès, erreur) |
| 39 | Barre de progression d'indexation | ✅ | Affichée dans le header pendant l'indexation initiale |
| 40 | Breadcrumb navigable | ✅ | Cliquable, repositionne automatiquement la sidebar |
| 41 | Redimensionnement sidebar | ✅ | Drag handle, persisté localStorage, limites min/max |
| 42 | Docker multi-plateforme | ✅ | linux/amd64, arm64, arm/v7, i386 |
---
## 3. Forces
### 🎨 Design & UX
- **Interface épurée** — layout 3 colonnes (sidebar | contenu | TOC) avec onglets sidebar
- **Français natif** — rare et appréciable pour un outil de cette catégorie
- **Responsive** — s'adapte aux différentes tailles d'écran, menu hamburger mobile
- **Feedback visuel** — timestamps relatifs ("il y a 5 min", "il y a 3 h"), toasts, barres de progression
- **PWA** — installation sur l'écran d'accueil, service worker, notifications de mise à jour
### 🧠 Métadonnées
- **Extraction YAML complète** — tous les champs du frontmatter parsés et affichés dans une carte pliable stylisée
- **Tags cliquables** — dans la vue fichier, l'onglet RÉCENT, et le nuage de tags
- **Résolution wikilinks** — O(1) via table de lookup, support multi-vaults
- **Images** — résolution multi-stratégies (7 stratégies) des syntaxes Obsidian
### 🏗️ Architecture
- **Multi-vaults** — supporte plusieurs vaults simultanément avec contrôle d'accès par utilisateur
- **Auto-détection** — découverte automatique des vaults via variables d'environnement
- **API dynamique** — ajout/suppression de vaults sans redémarrage
- **Performance** — TF-IDF avec ThreadPoolExecutor, index mémoire, lookup O(1), SSE temps réel
- **Stack moderne** — FastAPI + mistune + watchdog (backend), Vanilla JS SPA + CodeMirror 6 + highlight.js (frontend)
---
## 4. Points d'amélioration
### 4.1 🔴 Critique — Sécurité
#### 4.1.1 Masquage automatique des secrets
**Problème :** Les clés API, tokens et secrets sont visibles en clair dans les aperçus de contenu et la vue RÉCENT.
**Exemple concret observé :** Fichier "AI API" → preview contient des clés OpenAI en clair.
**Solution :** Implémenter un `SecretRedactor` (backend) qui scanne le contenu avant affichage :
- Patterns : OpenAI/Claude keys, JWT tokens, GitHub tokens, clés hex/base64 > 40 chars
- Preview RÉCENT/Dashboard : Masquer toutes les clés
- Vue Source : Warning "Ce fichier contient N secrets potentiels. [Afficher]"
- Vue Rendu : Masquer avec placeholder visuel
- Export/Téléchargement : Conserver le contenu original
**Priorité :** 🔴 P0 — Corriger avant toute exposition publique
---
#### 4.1.2 Rate limiting & protection brute-force
**Problème :** Absence de rate limiting sur le login.
**Solution :** Middleware rate-limit — 5 tentatives max par IP sur 15 minutes, blocage après 10 échecs.
**Priorité :** 🔴 P0
---
#### 4.1.3 Filtrage des dossiers sensibles — Amélioration
**État actuel :** VaultWatcher ignore déjà `.obsidian`, `.trash`, `.git`, `__pycache__`, `node_modules`.
Le paramètre `hideHiddenFiles` par vault masque les fichiers/dossiers commençant par `.`.
**Amélioration :** Rendre la liste `IGNORED_DIRS` configurable.
**Priorité :** 🟡 P2 — Déjà partiellement résolu
---
### 4.2 🟠 Important — Performance & Robustesse
#### 4.2.1 Log d'audit
Pas de traçabilité des actions critiques (écritures, suppressions, changements de config).
Logger les actions avec utilisateur, timestamp, vault, chemin dans `data/audit.log`.
**Priorité :** 🟠 P1
---
#### 4.2.2 Backup automatique avant écriture
Pas de filet de sécurité avant modification/suppression.
Sauvegarder le contenu original dans `.obsigate-backup/` horodaté.
**Priorité :** 🟠 P1
---
#### 4.2.3 Timeout de session configurable
TTL JWT codé en dur. Rendre configurable.
**Priorité :** 🟡 P2
---
### 4.3 🟡 UX & Navigation
#### 4.3.1 Backlinks panel
Afficher les fichiers contenant des wikilinks pointant vers le fichier courant.
Construire un index inversé des wikilinks au scan initial.
**Priorité :** 🟡 P2
---
#### 4.3.2 Correction TOC — scroll avec caractères accentués
Le clic sur un titre dans la TOC ne fonctionne pas pour certains titres accentués.
Les fonctions slugify backend/frontend utilisent des normalisations Unicode qui divergent.
**Solution :** Unifier l'algorithme + fallback `scrollIntoView`.
**Priorité :** 🟡 P2
---
#### 4.3.3 Gestion fichiers non-supportés
Les fichiers binaires non supportés déclenchent une erreur 500.
Ajouter un message explicite avec bouton de téléchargement.
**Priorité :** 🟢 P3
---
### 4.4 🟢 Fonctionnel — Feature Gaps
#### 4.4.1 Gestion des conflits Syncthing
Les fichiers `.sync-conflict-*` sont indexables mais pas d'outil de résolution.
Ajouter section « Conflits » avec diff et choix (garder local/conflit).
**Priorité :** 🟢 P3
---
#### 4.4.2 Dashboard statistiques
Dashboard avec métriques par vault : fichiers totaux, taille, top tags, orphelins.
**Priorité :** 🟢 P4
---
### 4.5 🔵 Architecture & Code
#### 4.5.1 Documentation OpenAPI/Swagger enrichie
L'API REST (20+ endpoints) est documentée via docstrings Python.
FastAPI génère automatiquement /docs et /redoc. Enrichir les modèles Pydantic.
**Priorité :** 🟡 P2
---
#### 4.5.2 Webhook / Event system
Notifier des systèmes externes lors de changements (création, modification, suppression).
**Priorité :** 🟢 P3
---
#### 4.5.3 Authentification multi-facteurs
TOTP ou WebAuthn pour l'accès admin.
**Priorité :** 🔵 P5
---
## 5. Roadmap suggérée
### Phase 1 — Correctifs urgents (1-2 semaines)
| # | Tâche | Effort |
|---|-------|:------:|
| 1 | Redacteur de secrets dans les aperçus | 2h |
| 2 | Rate limiting sur le login | 2h |
| 3 | Log d'audit (écritures, suppressions) | 3h |
| 4 | Backup automatique avant écriture | 3h |
### Phase 2 — UX (2-4 semaines)
| # | Tâche | Effort |
|---|-------|:------:|
| 5 | Backlinks panel | 6h |
| 6 | Correction TOC scroll avec accents | 3h |
| 7 | Gestion des conflits Syncthing (diff + résolution) | 8h |
| 8 | Liste IGNORED_DIRS configurable | 2h |
| 9 | Gestion élégante des fichiers non supportés | 2h |
### Phase 3 — Avancé (4-8 semaines)
| # | Tâche | Effort |
|---|-------|:------:|
| 10 | Dashboard statistiques | 6h |
| 11 | Webhooks | 5h |
| 12 | Enrichissement doc OpenAPI/Swagger | 3h |
| 13 | Timeout de session configurable | 2h |
### Phase 4 — Polish (continu)
| # | Tâche | Effort |
|---|-------|:------:|
| 14 | Tests automatisés (pytest + Playwright) | 16h |
| 15 | CI/CD pipeline | 4h |
| 16 | Docker image officielle (registry) | 3h |
| 17 | i18n (anglais + français) | 8h |
| 18 | Documentation utilisateur enrichie | 8h |
---
## 6. Checklist de professionnalisation
### 🔒 Sécurité
- [ ] Redacteur de secrets (API keys, tokens, passwords)
- [x] Exclusion dossiers .obsidian/, .trash/, .git/ (watcher + hideHiddenFiles)
- [ ] Rate limiting sur le login
- [x] CSP headers (Content-Security-Policy)
- [ ] HTTPS obligatoire en production (reverse proxy recommandé)
- [ ] Session timeout configurable
- [ ] Log d'audit (qui a fait quoi quand)
- [ ] Backup automatique avant écriture
### 🚀 Performance
- [x] Moteur TF-IDF avec normalisation d'accents
- [x] Lazy-loading de l'arborescence
- [x] Pagination des résultats de recherche
- [x] Table de lookup O(1) pour wikilinks
### 🎨 UX
- [x] Wikilinks cliquables
- [x] Tags cliquables
- [x] Breadcrumb navigable
- [x] Mode sombre persistant (localStorage)
- [x] Raccourcis clavier (Ctrl+K, Ctrl+T)
- [ ] Drag & drop pour upload d'images
- [x] Notifications toast
- [ ] Page 404 personnalisée
- [x] États vides stylisés
### 🛠️ Fonctionnel
- [x] Éditeur CodeMirror 6
- [x] Création fichiers/dossiers (menu contextuel)
- [x] Renommage fichiers/dossiers (menu contextuel)
- [x] Suppression fichiers/dossiers (menu contextuel)
- [x] API REST complète (20+ endpoints)
- [ ] Documentation OpenAPI enrichie
- [ ] CLI companion (obsigate-cli)
- [ ] Gestion conflits Syncthing (diff + résolution)
- [ ] Export multi-formats (PDF, HTML standalone)
### 🧪 Qualité
- [ ] Tests unitaires (pytest)
- [ ] Tests E2E (Playwright)
- [ ] CI/CD (GitHub Actions)
- [x] Image Docker (Dockerfile)
- [ ] Documentation utilisateur
- [ ] CHANGELOG.md
- [ ] Semantic versioning
### 🌍 Communauté
- [x] Page Git avec README
- [ ] Capture d'écran animée (GIF/WebM)
- [x] Badges (version, license)
- [x] Guide de contribution (CONTRIBUTING.md)
- [ ] Template d'issue (bug / feature request)
---
## 7. Notes de révision V1.1
**Corrections majeures par rapport à l'analyse V1 (qui sous-estimait largement le projet) :**
| Analyse V1 | Réalité V1.1 |
|---|---|
| "Feature Gap — Éditeur Markdown (CodeMirror) Phase 3" | ✅ Déjà implémenté avec 15+ langages, autocomplétion, Ctrl+F, Ctrl+S |
| "Feature Gap — Création fichiers/dossiers Phase 3" | ✅ Déjà fonctionnel via menu contextuel + modals |
| "Feature Gap — Wikilinks cliquables Phase 2" | ✅ Déjà fonctionnels avec résolution multi-vaults et liens brisés |
| "Feature Gap — Tags cliquables Phase 3" | ✅ Déjà fonctionnels |
| "Feature Gap — Breadcrumb navigable Phase 2" | ✅ Déjà implémenté |
| Recherche notée "performances à améliorer" | ✅ Moteur TF-IDF complet avec opérateurs avancés, facettes, autocomplétion |
| "Filtrage dossiers sensibles non implémenté" | ✅ Déjà présent (watcher + hideHiddenFiles par vault) |
| Non mentionné : PWA | ✅ Service worker, manifest, icônes, notif de mise à jour |
| Non mentionné : Vue Graphique | ✅ Canvas force-directed avec wikilinks |
| Non mentionné : Find in Page | ✅ Ctrl+F avec case-sensitive, mot entier, regex |
| Non mentionné : Onglets de contenu | ✅ Barre d'onglets multi-fichiers |
| Non mentionné : Fenêtres Popout | ✅ Standalone avec éditeur, TOC, login |
| Non mentionné : Menu contextuel | ✅ Clic droit avec CRUD complet |
| Non mentionné : Bookmarks | ✅ Toggle + dashboard |
| Non mentionné : Toast notifications | ✅ Feedback succès/erreur |
| Non mentionné : Résolution images | ✅ 7 stratégies pour syntaxes Obsidian |
**Note globale révisée :** 7/10 → **8.5/10**
---
*Analyse réalisée le 2026-05-25 — Révisée V1.1 après audit complet du code source*
*Document : ANALYSE_REVIEW.md*
+22
View File
@@ -0,0 +1,22 @@
---
titre: Accueil
statut: actif
tags: [accueil, important]
catégorie: général
publish: true
date: 2025-01-15
---
# Bienvenue dans le vault de test
Ceci est un document de test pour [[ObsiGate]].
## Sections
- [[Projets/Projet Alpha]] - Un projet en cours
- [[Notes/Configuration serveur]] - Documentation technique
- [[Recettes/Pâtes carbonara]] - Une recette
## Tags
#accueil #important #test
+55
View File
@@ -0,0 +1,55 @@
---
date: 2025-03-01
favoris: true
tags:
- docker
- devops
- conteneur
title: Docker Guide
---
# Docker Guide
## Commandes essentielles
```bash
# Lister les conteneurs
docker ps -a
# Build une image
docker build -t myapp:latest .
# Lancer un conteneur
docker run -d -p 8080:80 myapp:latest
# Voir les logs
docker logs -f container_name
```
## Docker Compose
```yaml
version: "3.9"
services:
web:
image: nginx:alpine
ports:
- "80:80"
```
## Volumes
Les volumes permettent de persister les données :
- **Named volumes** : gérés par Docker
- **Bind mounts** : montage direct depuis l'hôte
- **tmpfs** : stockage en mémoire
Voir aussi : [[Proxmox Setup]]
## Bonnes pratiques
- [ ] Utiliser des images Alpine
- [ ] Multi-stage builds
- [x] Fichier `.dockerignore`
- [x] Un processus par conteneur
+35
View File
@@ -0,0 +1,35 @@
---
title: Proxmox Setup
tags: [proxmox, virtualisation, homelab]
date: 2025-01-20
---
# Proxmox Setup
## Installation
Guide d'installation de Proxmox VE sur un serveur dédié.
### Prérequis
- CPU avec support VT-x / AMD-V
- Minimum 8GB RAM (16GB recommandé)
- SSD pour le stockage local
### Post-installation
```bash
# Désactiver le repo enterprise
sed -i 's/^deb/#deb/' /etc/apt/sources.list.d/pve-enterprise.list
# Ajouter le repo no-subscription
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-sub.list
apt update && apt full-upgrade -y
```
## Réseau
Configuration réseau typique avec un bridge `vmbr0`.
Voir aussi : [[Docker Guide]]
+44
View File
@@ -0,0 +1,44 @@
---
title: Pizza Maison
tags: [recette, pizza, rapide]
date: 2025-03-15
---
# Pizza Maison 2
## Ingrédients
- 300g de farine
- 200ml d'eau tiède
- 1 sachet de levure
- Sauce tomate
- Mozzarella
- Garniture au choix
## Préparation
1. Mélanger la farine et la levure
2. Ajouter l'eau tiède progressivement
3. Pétrir pendant 10 minutes
4. Laisser reposer 1h
5. Étaler la pâte
6. Ajouter sauce et garniture
> **Astuce** : Préchauffer le four à 250°C pour une cuisson optimale.
Voir aussi : [[Pâte à pizza]] et [[Sauce tomate maison]]
## Code exemple
```python
def pizza_timer(minutes=12):
import time
time.sleep(minutes * 60)
print("Pizza prête !")
```
| Étape | Temps |
|-------|-------|
| Pétrissage | 10 min |
| Repos | 60 min |
| Cuisson | 12 min |
+29
View File
@@ -0,0 +1,29 @@
---
titre: Pâtes carbonara
tags: [recette, cuisine, italien, pâtes]
catégorie: cuisine
date: 2025-04-10
favoris: true
---
# Pâtes carbonara authentiques
## Ingrédients
- 400g de spaghetti
- 200g de guanciale
- 4 jaunes d'œufs
- 100g de pecorino romano
- Poivre noir
## Préparation
1. Cuire les pâtes al dente
2. Faire revenir le guanciale
3. Mélanger les jaunes avec le fromage
4. Assembler hors du feu
## Notes
Ne jamais utiliser de crème !
La vraie carbonara n'a pas de crème.
+27
View File
@@ -0,0 +1,27 @@
---
title: Soupe Miso
tags: [recette, soupe, japonais]
date: 2025-02-10
---
# Soupe Miso
Recette classique de soupe miso japonaise.
## Ingrédients
- 1L d'eau
- 3 cuillères de pâte miso
- Tofu soyeux
- Algues wakame
- Oignons verts
## Préparation
1. Faire chauffer l'eau sans la faire bouillir
2. Dissoudre la pâte miso
3. Ajouter le tofu coupé en dés
4. Ajouter les algues réhydratées
5. Garnir d'oignons verts émincés
Voir aussi : [[Pizza Maison]]
+28
View File
@@ -0,0 +1,28 @@
---
titre: Tiramisu classique
tags: [recette, cuisine, italien, dessert]
catégorie: cuisine
date: 2025-04-15
publish: true
---
# Tiramisu
## Ingrédients
- 500g de mascarpone
- 4 œufs
- 100g de sucre
- Biscuits à la cuillère
- Café fort
- Cacao en poudre
## Préparation
1. Séparer les blancs des jaunes
2. Mélanger jaunes + sucre + mascarpone
3. Monter les blancs en neige
4. Incorporer délicatement
5. Tremper les biscuits dans le café
6. Alterner couches
7. Réfrigérer 4h minimum
+442
View File
@@ -0,0 +1,442 @@
# 🧪 Suite de Tests Complète : Diagrammes Mermaid
Ce document sert de référence pour valider le rendu de tous les types de diagrammes Mermaid.js, ainsi que leurs fonctionnalités avancées (styling, interactions, sous-éléments).
---
## 1. Flowchart (Organigramme)
*Teste : Formes de nœuds variées, sous-graphes, liens avec texte, classes de style, et markdown dans les nœuds.*
```mermaid
flowchart LR
%% Définition des styles
classDef default fill:#f9f9f9,stroke:#333,stroke-width:2px;
classDef success fill:#d4edda,stroke:#28a745,stroke-width:2px;
classDef error fill:#f8d7da,stroke:#dc3545,stroke-width:2px;
subgraph Groupe A [Processus Principal]
direction TB
A([Début]) --> B{Condition ?}
B -->|Oui| C[Action Standard]
B -->|Non| D[/Action Alternative/]
end
subgraph Groupe B [Résultats]
C --> E((Fin Succès)):::success
D --> F{{Fin Erreur}}:::error
end
%% Lien avec markdown et événement clic
E -.->|"**Résultat**<br/>[Voir détails](#)"| G
click G "https://example.com" "Ouvrir exemple" _blank
```
---
## 2. Sequence Diagram (Diagramme de Séquence)
*Teste : Participants, alias, boucles, alternatives, parallélisme, notes, activation et types de messages.*
```mermaid
sequenceDiagram
autonumber
participant C as Client
participant API as API Gateway
participant DB as Base de Données
C->>API: Requete POST /login
activate API
API->>DB: Verifier identifiants
activate DB
alt Identifiants valides
DB-->>API: Succes (200 OK)
API-->>C: Token JWT
else Identifiants invalides
DB-->>API: Echec (401 Unauthorized)
API--xC: Rejete
end
deactivate DB
deactivate API
rect rgb(200, 220, 250)
Note over C,DB: Cette section est surlignee pour l'audit
C->>DB: Requete de logs
end
```
---
## 3. Class Diagram (Diagramme de Classes)
*Teste : Espaces de noms, relations (héritage, composition, agrégation), visibilité, génériques et méthodes.*
```mermaid
classDiagram
namespace Base {
class Utilisateur {
-int id
+String nom
+String email
+seConnecter() bool
}
}
namespace Admin {
class Administrateur {
+String niveauAcces
+gererUtilisateurs() void
}
}
class Session {
-String token
+Date expiration
}
Utilisateur <|-- Administrateur : hérite
Utilisateur "1" *-- "0..*" Session : possède
Utilisateur ..> InterfaceAuth : implémente
```
---
## 4. State Diagram (Diagramme d'États)
*Teste : États composites, choix, fourches/joins, états finaux et transitions.*
```mermaid
stateDiagram-v2
[*] --> EnAttente
state CommandeEnCours {
EnAttente --> Validée : Paiement reçu
Validée --> Expédiée : Colis préparé
}
Expédiée --> ChoixLivraison
state ChoixLivraison <<choice>>
ChoixLivraison --> Livrée : Domicile
ChoixLivraison --> RetraitPoint : Point relais
Livrée --> [*]
RetraitPoint --> [*]
note right of Validée
L'état est irréversible
une fois le colis parti.
end note
```
---
## 5. Entity Relationship Diagram (MCD)
*Teste : Entités, attributs avec types, clés primaires (PK), clés étrangères (FK) et cardinalités.*
```mermaid
erDiagram
CLIENT {
int id PK
string nom
string email UK
}
COMMANDE {
int id PK
int client_id FK
date date_creation
float total
}
PRODUIT {
int id PK
string reference UK
float prix
}
CLIENT ||--o{ COMMANDE : "passe"
COMMANDE }o--o{ PRODUIT : "contient"
```
---
## 6. User Journey (Parcours Utilisateur)
*Teste : Sections, tâches avec score de satisfaction et acteurs multiples.*
```mermaid
journey
title Parcours d'achat sur l'application
section Recherche
Ouvrir l'application : 5: Utilisateur
Utiliser la barre de recherche : 4: Utilisateur, Moteur de recherche
section Achat
Ajouter au panier : 5: Utilisateur
Procéder au paiement : 3: Utilisateur, Système bancaire
section Post-achat
Recevoir l'email de confirmation : 5: Utilisateur, Service Email
```
---
## 7. Gantt Chart (Diagramme de Gantt)
*Teste : Format de date, sections, dépendances (`after`), marqueur "aujourd'hui" et exclusion de week-ends.*
```mermaid
gantt
title Planning de Développement v2.0
dateFormat YYYY-MM-DD
axisFormat %d/%m
excludes weekends
section Conception
Maquettes UI/UX :a1, 2024-01-01, 10d
Validation client :milestone, m1, 2024-01-11, 0d
section Développement
Frontend :a2, after a1, 15d
Backend API :a3, 2024-01-05, 20d
Intégration :a4, after a2, 5d
```
---
## 8. Pie Chart (Diagramme Circulaire)
*Teste : Titre, affichage des valeurs et des pourcentages.*
```mermaid
pie showData
title Répartition du trafic web (2024)
"Moteurs de recherche" : 45.5
"Liens directs" : 30.2
"Réseaux sociaux" : 15.8
"Campagnes email" : 8.5
```
---
## 9. Git Graph
*Teste : Commits, branches, checkout, merges, cherry-picks et tags.*
```mermaid
gitGraph
commit id: "Initial commit"
branch develop
checkout develop
commit id: "Ajout feature A"
commit id: "Ajout feature B"
checkout main
merge develop id: "Merge develop" tag: "v1.0.0"
commit id: "Hotfix critique"
checkout develop
cherry-pick id: "Hotfix critique"
commit id: "Préparation v1.1"
```
---
## 10. Requirement Diagram (Ingenierie Systeme)
*Teste : Exigences, elements, risques et relations de tracabilite.*
*Note : `requirementDiagram` n'est pas supporte par Mermaid 11. Utilise un flowchart equivalent.*
```mermaid
flowchart LR
subgraph Requirements["Exigences"]
SEC001["SEC-001<br/>Le systeme doit chiffrer<br/>les mots de passe<br/>Risk: High<br/>Verif: Test"]
end
subgraph Elements["Elements"]
Auth["Serveur Auth<br/>Node.js<br/>doc: Architecture.md"]
DB["Base de Donnees<br/>PostgreSQL"]
end
Auth -->|"satisfies"| SEC001
DB -->|"copies"| SEC001
```
---
## 11. Mindmap (Carte Mentale)
*Teste : Nœud racine, formes variées, icônes FontAwesome et sauts de ligne.*
```mermaid
mindmap
root((Projet Web))
Frontend
React
::icon(fa fa-react)
Tailwind CSS
Backend
Node.js
::icon(fa fa-node)
Base de données
PostgreSQL
Redis
Déploiement
Docker<br/>et CI/CD
::icon(fa fa-docker)
```
---
## 12. Timeline (Frise Chronologique)
*Teste : Titre, sections et événements avec texte multi-lignes.*
```mermaid
timeline
title Historique des versions du produit
section 2022
v1.0 : Lancement initial : Fonctionnalités de base
section 2023
v1.5 : Ajout du mode sombre : Refonte de l'UI
v2.0 : Architecture microservices : Passage à l'échelle
section 2024
v2.5 : Intégration IA : Assistant virtuel
```
---
## 13. Quadrant Chart (Matrice)
*Teste : Titres, axes personnalisés, quadrants et points avec styles.*
```mermaid
quadrantChart
title Matrice des priorités (Impact vs Effort)
x-axis "Faible Impact" --> "Fort Impact"
y-axis "Faible Effort" --> "Fort Effort"
quadrant-1 "À planifier"
quadrant-2 "À prioriser (Quick Wins)"
quadrant-3 "À éviter"
quadrant-4 "À déléguer"
"Correction de bugs mineurs": [0.2, 0.2]
"Nouvelle fonctionnalité IA": [0.8, 0.8]
"Refonte du logo": [0.3, 0.8]
"Optimisation SEO": [0.8, 0.3]
```
---
## 14. XY Chart (Beta)
*Teste : Graphique combiné (barres + ligne) avec axes personnalisés.*
```mermaid
xychart-beta
title "Ventes mensuelles vs Objectifs (2024)"
x-axis ["Jan", "Fév", "Mar", "Avr", "Mai"]
y-axis "Montant (€)" 0 --> 10000
bar [5000, 6000, 7500, 8200, 9500]
line [6000, 6500, 7000, 8000, 10000]
```
---
## 15. Block Diagram (Beta)
*Teste : Mise en page libre, blocs imbriqués, spans et icônes.*
```mermaid
block-beta
columns 3
%% Ligne 1
db[("Base de Données")]
space
api["API Gateway"]
%% Ligne 2 (span sur 3 colonnes)
block:Frontend:3
columns 2
web["Application Web"]
mobile["Application Mobile"]
end
%% Liaisons (visuelles via l'ordre ou explicites si supporté)
db --> api
api --> web
api --> mobile
style db fill:#f9f,stroke:#333
style api fill:#bbf,stroke:#333
```
---
## 16. Sankey Diagram (Beta)
*Teste : Flux de données avec valeurs et couleurs de liens.*
```mermaid
sankey-beta
%% source,target,value
Energie fossile,Electricite,40
Energie solaire,Electricite,30
Energie eolienne,Electricite,30
Electricite,Industrie,50
Electricite,Residentiel,35
Electricite,Pertes reseau,15
```
---
## 17. Packet Diagram (Beta)
*Teste : Représentation de trames réseau avec taille de mot et champs de bits.*
```mermaid
packet-beta
title Trame Ethernet Simplifiée
0-15: "Adresse MAC Destination"
16-31: "Adresse MAC Source"
32-47: "Type / Longueur"
48-127: "Payload (Données)"
128-143: "FCS (Contrôle)"
```
---
## 18. Kanban (Nouveauté v11)
*Teste : Sections, tickets avec ID, assignations, priorités et dates d'échéance.*
```mermaid
kanban
column1[À faire]
task1[Créer maquettes]@{ assigned: 'Alice', priority: 'High', ticket: 'DES-101' }
task2[Rédiger spécifications]@{ assigned: 'Bob', priority: 'Medium' }
column2[En cours]
task3[Développer l'API]@{ assigned: 'Charlie', priority: 'High', ticket: 'DEV-204', due: '2024-02-15' }
column3[Terminé]
task4[Configurer le CI/CD]@{ assigned: 'Alice', priority: 'Low', ticket: 'OPS-005' }
```
---
## 19. C4 Model (Context)
*Teste : Personnes, systèmes internes, systèmes externes et relations.*
```mermaid
C4Context
title Diagramme de Contexte Système - Application E-commerce
Person(client, "Client", "Un utilisateur qui achète des produits.")
System(eCommerce, "Système E-commerce", "Permet aux clients de parcourir et acheter des produits.")
System_Ext(payment, "Système de Paiement", "Stripe", "Gère les transactions bancaires.")
System_Ext(shipping, "Service de Livraison", "FedEx", "Gère l'expédition des colis.")
Rel(client, eCommerce, "Utilise pour acheter", "HTTPS")
Rel(eCommerce, payment, "Soumet le paiement", "API")
Rel(eCommerce, shipping, "Envoie les détails de livraison", "API")
```
---
## 20. Cas Limites & Compatibilité (Edge Cases)
*Teste la robustesse du parser face à des syntaxes hybrides ou des caractères spéciaux.*
```mermaid
flowchart TD
%% Test de caracteres speciaux et echappement
A["Noeud avec des guillemets #quot;internes#quot; et des sauts<br/>de ligne"] --> B
%% Test de formules mathematiques (si le moteur le supporte)
B("Formule : $E = mc^2$") --> C
%% Test de syntaxe style Obsidian (doit soit s'afficher en brut, soit etre pre-processe)
C["Lien wiki : Page Interne"] --> D
D["Highlight : Texte important"] --> E
%% Test de lien avec ID contenant des tirets et underscores
E --> F{Decision_Complexe-2024}
```
+32
View File
@@ -0,0 +1,32 @@
---
titre: Configuration serveur
tags: [serveur, configuration, technique, linux]
catégorie: technique
date: 2025-02-20
---
# Configuration du serveur
Documentation pour configurer un serveur Linux.
## Prérequis
- Ubuntu 22.04 LTS
- Docker installé
- 4 Go RAM minimum
## Étapes
1. Installation des dépendances
2. Configuration du firewall
3. Déploiement Docker
```bash
sudo apt update
sudo apt install docker.io
```
## Notes
Voir [[Notes/Sécurité]] pour la sécurisation.
Voir [[Notes/Performance]] pour l'optimisation.
+22
View File
@@ -0,0 +1,22 @@
---
titre: Astuces Docker
tags: [docker, conteneur, déploiement, technique]
catégorie: technique
date: 2025-05-01
---
# Astuces Docker
## Nettoyage
```bash
docker system prune -a
```
## Docker Compose
Toujours utiliser des fichiers `.env` pour les secrets.
## Volumes
Préférer les volumes nommés aux bind mounts.
+20
View File
@@ -0,0 +1,20 @@
---
titre: Optimisation des performances
tags: [performance, optimisation, serveur]
catégorie: technique
date: 2025-03-01
---
# Optimisation des performances
## Cache
Utiliser Redis pour le cache.
## Indexation
Configurer les index de base de données.
## Monitoring
Mettre en place Prometheus et Grafana.
+31
View File
@@ -0,0 +1,31 @@
---
titre: Sécurité
tags: [sécurité, serveur, firewall]
catégorie: technique
date: 2025-01-30
publish: true
---
# Sécurité du serveur
## Firewall
Utiliser ufw pour le firewall :
```bash
sudo ufw enable
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
```
## Certificats SSL
Utiliser Let's Encrypt pour les certificats.
## Mots de passe
Toujours utiliser des mots de passe forts.
Minimum 16 caractères.
Voir aussi [[Notes/Configuration serveur]].
+22
View File
@@ -0,0 +1,22 @@
```mermaid
flowchart TD
A[Start] --> B[Process] --> C[End]
D[Allo] --> C[End]
```
```mermaid
erDiagram
CUSTOMER ||--o{ ORDER : places
ORDER ||--|{ LINE_ITEM : contains
```
+31
View File
@@ -0,0 +1,31 @@
---
titre: Projet Alpha
statut: en cours
tags: [projet, alpha, serveur]
catégorie: développement
publish: true
date: 2025-03-10
favoris: true
---
# Projet Alpha
Ce projet consiste à déployer un [[Notes/Configuration serveur|serveur]] pour l'application.
## Objectifs
- Mise en place du serveur
- Configuration de [[Notes/Sécurité]]
- Tests de performance
## Équipe
- Bruno (lead)
- Équipe DevOps
## Avancement
Le projet est **en cours**. La première phase est terminée.
La deuxième phase débute la semaine prochaine.
Voir aussi [[Projet Beta]] pour le projet connexe.
+21
View File
@@ -0,0 +1,21 @@
---
titre: Projet Beta
statut: planifié
tags: [projet, beta, frontend]
catégorie: développement
date: 2025-05-20
---
# Projet Beta
Ce projet est le successeur du [[Projets/Projet Alpha]].
## Technos
- React
- TypeScript
- Tailwind CSS
## Planning
Début prévu : juin 2025
+21
View File
@@ -0,0 +1,21 @@
------
titre: Test de nouveau nom 2
tags: []
catégorie:
statut:
date:
favoris: true
publish: true
---
# Test de nouveau nom 2
toto
titi
tata
toto
+7
View File
@@ -0,0 +1,7 @@
---
tags: [caché, test]
---
# Document dans un sous-dossier
Ce document teste l'arborescence.