5.8 KiB
5.8 KiB
ObsiGate — Roadmap (détaillé)
Date : 2026-06-02 | Version : 1.7.0 Dernier audit : 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
/rawformaté dans tooltip - Filtre tag, hover foncé unifié
Vue graphique — Phases 1-4 (v1.6.0)
- Full-vault view (
scope=full), filtre tag (?tag=), backlinks entrants - Métriques de nœud :
incoming_count,outgoing_count,tag_count - Recherche visuelle, tooltips survol, couleurs adaptatives CSS
- Slider profondeur (0-3), filtre type (dossier/fichier/.md/autre)
- Mode focus, plein écran, export PNG
- Barnes-Hut O(n log n), cache graphe
Qualité & Tests (v1.6.0)
- CI/CD Gitea Actions complet : lint (ruff 0 err), type (mypy 0 err), test (180 tests), security (bandit + pip-audit), build (Docker)
- sortedcontainers → SortedList pour O(log n) insert/remove
- Frontend tests Node.js : validate-imports.mjs + unit.test.mjs
Recherche (v1.5.1)
- Stemming français via snowballstemmer
- Performance O(T) au lieu de O(S×T), crash guard IndexError
Refactoring (v1.5.1)
- Split
app.js(8 875 lignes → 16 modules ES) dansfrontend/js/
Fonctionnel (v1.5.0)
- Publication publique de documents (token unique, expiration, lecture seule)
- Dashboard statistiques (4 cartes : fichiers, tags, taille, vaults)
- Webhooks HTTP avec signature HMAC-SHA256 optionnelle
- Documentation OpenAPI enrichie (modèles Pydantic documentés)
- Gestion conflits Syncthing (détection + résolution)
- Index inversé incrémental (hook pattern via
set_index_change_hook) - Export PDF (WeasyPrint intégré, accessible dans la vue publique)
Corrections (v1.4.0)
- Rate limiting login (IP + compte)
- Secret redactor (JWT, API keys, tokens, connection strings)
- Audit log JSON lines avec rotation 10MB
- Backup automatique avant écriture (
.obsigate-backup/) - Backlinks panel (index inversé + UI)
- Gestion fichiers non-supportés (UI message + download)
- Clic simple/double clic arborescence
- IGNORED_DIRS configurable via
OBSIGATE_IGNORED_DIRS - Timeout session configurable (
OBSIGATE_ACCESS_TOKEN_TTL) - TOC scroll avec caractères accentués (slugify unifié Unicode)
Quick Wins (v1.4.0)
.dockerignore— contexte de build réduit.envpour les secrets (mot de passe retiré de docker-compose.yml)- Compression GZip (SSE-safe)
- Cache-Control pour assets statiques
🔜 Prochaines étapes
P1 — Tests & Qualité
| # | Item | Effort | Impact |
|---|---|---|---|
| ✅ | 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 (version simplifiée), CHANGELOG.md