ObsiGate/docs/ROADMAP.md

138 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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)*