2.6 KiB
2.6 KiB
ObsiGate — Roadmap
✅ Complété
CI/CD Pipeline (Gitea Actions)
- Ruff linting — 0 erreur
- Mypy type checking — 0 erreur (28 erreurs pré-existantes corrigées)
- Pytest — 175 tests, 49% coverage
- Bandit SAST — scan de sécurité
- Pip-audit — vulnérabilités des dépendances (advisory)
- Docker build — vérification image
- Coverage artifact — uploadé via
actions/upload-artifact@v3(natif Gitea) - Runner Gitea auto-hébergé —
gitea/act_runner:0.2.11sur Alpine/Proxmox
Performance
sortedcontainers— O(log n) insert/remove dans l'index inversé- Compression GZip (SSE-safe)
- Cache-Control immutable
- Recherche sans I/O disque
Sécurité
- JWT + Argon2id
- Rate limiting
- Audit log
- Backup automatique
- Redaction de secrets
- Headers CSP
- Protection path traversal
- Utilisateur non-root Docker
DX / Qualité
.dockerignore.env→.env.examplemigration- Ruff config — 0 erreur
- Mypy config — 0 erreur
🔜 Prochaines étapes (par priorité)
1. Stemming français 🇫🇷 ✅
- Effort : 30 min — FAIT
- Impact : 🟡 Améliore la recherche ×2 pour les termes fléchis
- Module :
snowballstemmer(stemmer français) - Fichiers :
backend/search.py(tokenizer)
2. Split app.js en modules ES
- Effort : 2-3 jours
- Impact : 🟡 Dette technique, maintenabilité
- Fichiers :
frontend/app.js(~8000 lignes → modules)
3. Tests d'intégration
- Effort : 3-5 jours
- Impact : 🟢 Couverture 49% → 70%+
- Cibles :
main.py(26%),watcher.py(23%),router.py(37%),create_admin.py(0%),image_processor.py(15%)
4. Export PDF
- Effort : 1 jour
- Impact : 🟡 WeasyPrint déjà intégré (lazy import), manque GTK sur certaines plateformes
- Alternative : Markdown → HTML → PDF via headless Chrome
5. Vue graphe des wikilinks
- Effort : 3-5 jours
- Impact : 🟢 Nouvelle fonctionnalité, visualisation des connexions entre notes
- Stack : D3.js ou Cytoscape.js
📋 Backlog
- Filtres de recherche avancés : created:, modified:, size:
- Mode hors-ligne : Service Worker + cache IndexedDB
- API publique documentée : OpenAPI/Swagger amélioré
- Thèmes personnalisés : CSS variables exposées
- Export multi-formats : HTML, MD bundle, ePub
- Notifications web : Push API pour changements de vault
- Multi-langue i18n : Interface traduisible
- Plugins système : Extensions utilisateur (similaire Obsidian)