fix(ci): e2e - fixtures de test versionnees + acces via passerelle docker (dind)
- 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:
+11
-2
@@ -134,14 +134,23 @@ jobs:
|
|||||||
-e DIR_1_PATH=/vaults/TestDir \
|
-e DIR_1_PATH=/vaults/TestDir \
|
||||||
-e OBSIGATE_AUTH_ENABLED=false \
|
-e OBSIGATE_AUTH_ENABLED=false \
|
||||||
obsigate:ci
|
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
|
# Wait for health check
|
||||||
for i in $(seq 1 30); do
|
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
|
sleep 1
|
||||||
done
|
done
|
||||||
|
curl -sf "http://$GW:2029/api/health" >/dev/null || { echo "App not reachable at $GW:2029"; exit 1; }
|
||||||
|
|
||||||
- name: Run E2E tests
|
- 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
|
- name: Upload test results
|
||||||
if: always()
|
if: always()
|
||||||
|
|||||||
+1
-2
@@ -4,8 +4,6 @@ __pycache__/
|
|||||||
.env
|
.env
|
||||||
.env.*
|
.env.*
|
||||||
!.env.example
|
!.env.example
|
||||||
test_vault/
|
|
||||||
test_dir/
|
|
||||||
.venv/
|
.venv/
|
||||||
venv/
|
venv/
|
||||||
*.egg-info/
|
*.egg-info/
|
||||||
@@ -19,6 +17,7 @@ odysseus/
|
|||||||
node_modules/
|
node_modules/
|
||||||
test-results/
|
test-results/
|
||||||
playwright-report/
|
playwright-report/
|
||||||
|
**/.obsigate-backup/
|
||||||
|
|
||||||
# Desktop build artifacts
|
# Desktop build artifacts
|
||||||
desktop/target/
|
desktop/target/
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
|||||||
|
# Nouveau fichier dans Dir
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
test
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# Mon projet de développement web
|
||||||
|
|
||||||
|
La programma
|
||||||
@@ -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]]`, ``, `<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*
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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]]
|
||||||
@@ -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 |
|
||||||
@@ -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.
|
||||||
@@ -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]]
|
||||||
@@ -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
|
||||||
@@ -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}
|
||||||
|
```
|
||||||
|
|
||||||
@@ -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.
|
||||||
@@ -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.
|
||||||
@@ -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.
|
||||||
@@ -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]].
|
||||||
@@ -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
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -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.
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
tags: [caché, test]
|
||||||
|
---
|
||||||
|
|
||||||
|
# Document dans un sous-dossier
|
||||||
|
|
||||||
|
Ce document teste l'arborescence.
|
||||||
Reference in New Issue
Block a user