138 lines
5.8 KiB
Markdown
138 lines
5.8 KiB
Markdown
# ObsiGate — Roadmap (détaillé)
|
||
|
||
> **Date :** 2026-06-02 | **Version :** 1.7.0
|
||
> **Dernier audit :** [AUDIT_TECHNIQUE_2026-05-27.md](./AUDIT_TECHNIQUE_2026-05-27.md)
|
||
|
||
---
|
||
|
||
## Légende
|
||
|
||
- ✅ Complété
|
||
- 🟡 En cours / Partiel
|
||
- ⬜ À faire
|
||
- 🔴 Critique
|
||
|
||
---
|
||
|
||
## ✅ Fonctionnalités complétées (depuis le dernier audit)
|
||
|
||
### AI Editor (v1.7.0 — NOUVEAU)
|
||
- **Toolbar dropdown** : Edit (improve/fix/shorter/longer/simplify), Tone (professional/casual), Translate, Generate (explain/summarize/continue), Custom Rewrite, Toolbox (to list/to table/frontmatter/to canvas)
|
||
- **Multi-provider** : DeepSeek, OpenRouter, Gemini — configurable via `.env`
|
||
- **Backend** : `backend/ai.py` + `backend/ai_routes.py` — 16 endpoints REST
|
||
- **Frontend** : `frontend/js/ai.js` — toolbar intégrée à CodeMirror 6
|
||
- Auto-save silencieux (2s), loading toasts, cache si pas de clé API
|
||
|
||
### Vue graphique — Améliorations (v1.7.0)
|
||
- **Header flat design 2 lignes** : titre flexible + recherche dédiée + barre statut
|
||
- **Sticky panels** : tuile info (top-left/right), preview pleine hauteur (droite), boutons close
|
||
- **Navigation historique** : ← → (avant/arrière) + ↑ (parent)
|
||
- **Ctrl+survol** : aperçu contenu `/raw` formaté dans tooltip
|
||
- Filtre tag, hover foncé unifié
|
||
|
||
### Vue graphique — Phases 1-4 (v1.6.0)
|
||
- [x] Full-vault view (`scope=full`), filtre tag (`?tag=`), backlinks entrants
|
||
- [x] Métriques de nœud : `incoming_count`, `outgoing_count`, `tag_count`
|
||
- [x] Recherche visuelle, tooltips survol, couleurs adaptatives CSS
|
||
- [x] Slider profondeur (0-3), filtre type (dossier/fichier/.md/autre)
|
||
- [x] Mode focus, plein écran, export PNG
|
||
- [x] Barnes-Hut O(n log n), cache graphe
|
||
|
||
### Qualité & Tests (v1.6.0)
|
||
- [x] CI/CD Gitea Actions complet : lint (ruff 0 err), type (mypy 0 err), test (180 tests), security (bandit + pip-audit), build (Docker)
|
||
- [x] sortedcontainers → SortedList pour O(log n) insert/remove
|
||
- [x] Frontend tests Node.js : validate-imports.mjs + unit.test.mjs
|
||
|
||
### Recherche (v1.5.1)
|
||
- [x] Stemming français via snowballstemmer
|
||
- [x] Performance O(T) au lieu de O(S×T), crash guard IndexError
|
||
|
||
### Refactoring (v1.5.1)
|
||
- [x] Split `app.js` (8 875 lignes → 16 modules ES) dans `frontend/js/`
|
||
|
||
### Fonctionnel (v1.5.0)
|
||
- [x] Publication publique de documents (token unique, expiration, lecture seule)
|
||
- [x] Dashboard statistiques (4 cartes : fichiers, tags, taille, vaults)
|
||
- [x] Webhooks HTTP avec signature HMAC-SHA256 optionnelle
|
||
- [x] Documentation OpenAPI enrichie (modèles Pydantic documentés)
|
||
- [x] Gestion conflits Syncthing (détection + résolution)
|
||
- [x] Index inversé incrémental (hook pattern via `set_index_change_hook`)
|
||
- [x] Export PDF (WeasyPrint intégré, accessible dans la vue publique)
|
||
|
||
### Corrections (v1.4.0)
|
||
- [x] Rate limiting login (IP + compte)
|
||
- [x] Secret redactor (JWT, API keys, tokens, connection strings)
|
||
- [x] Audit log JSON lines avec rotation 10MB
|
||
- [x] Backup automatique avant écriture (`.obsigate-backup/`)
|
||
- [x] Backlinks panel (index inversé + UI)
|
||
- [x] Gestion fichiers non-supportés (UI message + download)
|
||
- [x] Clic simple/double clic arborescence
|
||
- [x] IGNORED_DIRS configurable via `OBSIGATE_IGNORED_DIRS`
|
||
- [x] Timeout session configurable (`OBSIGATE_ACCESS_TOKEN_TTL`)
|
||
- [x] TOC scroll avec caractères accentués (slugify unifié Unicode)
|
||
|
||
### Quick Wins (v1.4.0)
|
||
- [x] `.dockerignore` — contexte de build réduit
|
||
- [x] `.env` pour les secrets (mot de passe retiré de docker-compose.yml)
|
||
- [x] Compression GZip (SSE-safe)
|
||
- [x] Cache-Control pour assets statiques
|
||
|
||
---
|
||
|
||
## 🔜 Prochaines étapes
|
||
|
||
### P1 — Tests & Qualité
|
||
|
||
| # | Item | Effort | Impact |
|
||
|---|------|--------|--------|
|
||
| ✅ | ~~Tests unitaires backend (175 tests, 49% coverage)~~ | Fait | 🟢 |
|
||
| ⬜ | Coverage → 70%+ (main.py 26%, watcher.py 23%, router.py 37%) | 2-3j | 🟢 |
|
||
| ⬜ | Tests E2E (Playwright) | 3-5j | 🟢 |
|
||
| ⬜ | Git tags semver (`git tag v1.7.0`) | 10min | 🟡 |
|
||
|
||
### P2 — Fonctionnalités UX
|
||
|
||
| # | Item | Effort | Impact |
|
||
|---|------|--------|--------|
|
||
| ⬜ | Palette de commandes (Ctrl+P) | 1j | 🟡 |
|
||
| ⬜ | Drag & drop fichiers dans arborescence | 1-2j | 🟡 |
|
||
| ⬜ | Diff viewer (comparer backups `.obsigate-backup/`) | 1j | 🟢 |
|
||
| ⬜ | Filtres search avancés (created:, modified:, size:) | 1j | 🟡 |
|
||
| ⬜ | Fichiers récents par vault (dashboard) | 0.5j | 🟡 |
|
||
| ⬜ | Déduplication IGNORED_DIRS (indexer.py / watcher.py) | 0.5j | 🟢 |
|
||
| ⬜ | Export PDF — route API + UI dédiée | 1j | 🟡 |
|
||
|
||
### P3/P4 — Long terme
|
||
|
||
| # | Item | Effort |
|
||
|---|------|--------|
|
||
| ⬜ | Mode hors-ligne PWA (IndexedDB + synchro) | 5-7j |
|
||
| ⬜ | OAuth2/OIDC (Google, GitHub, SSO) | 3-5j |
|
||
| ⬜ | Plugin système (extensions utilisateur) | 5-10j |
|
||
| ⬜ | Collaboration temps réel (WebSocket + Yjs) | 5-10j |
|
||
| ⬜ | i18n (anglais + français) | 2-3j |
|
||
| ⬜ | MFA (TOTP/WebAuthn) | 3-5j |
|
||
| ⬜ | Thèmes personnalisés (CSS variables exposées) | 1j |
|
||
| ⬜ | Export multi-formats (HTML, MD bundle, ePub) | 2-3j |
|
||
| ⬜ | Notifications web Push API | 2-3j |
|
||
| ⬜ | Health check enrichi (index, mémoire, uptime, SSE) | 1j |
|
||
| ⬜ | Rotation des logs Python (RotatingFileHandler) | 0.5j |
|
||
|
||
---
|
||
|
||
## Chronologie suggérée
|
||
|
||
| Semaine | Actions |
|
||
|---------|---------|
|
||
| **S23** (cette semaine) | ✅ Quick Wins + Sécurité (rate limiting, secret redactor, audit, backup) |
|
||
| **S24** | ✅ Publication publique, Webhooks, Dashboard, OpenAPI |
|
||
| **S25** | ✅ Split app.js en modules ES, Stemming français |
|
||
| **S26** | ✅ Graph view (phases 1-4), CI/CD, sortedcontainers |
|
||
| **S27** | ✅ AI Editor + Graph improvements (sticky panels, nav history) |
|
||
| **S28** | Coverage 70%+, Export PDF, Palette commandes |
|
||
| **S29+** | Fonctionnalités P2 au fil de l'eau |
|
||
|
||
---
|
||
|
||
*Document généré le 2026-06-02 — Mis à jour depuis l'audit du 2026-05-27.*
|
||
*Voir aussi : [ROADMAP.md](../ROADMAP.md) (version simplifiée), [CHANGELOG.md](../CHANGELOG.md)* |