SOGOMS v1.0.1 - Microservices logs, smtp et roadmap
Nouveaux services:
- sogoms-logs : logging centralisé avec rotation
- sogoms-smtp : envoi emails avec templates YAML
Nouvelles fonctionnalités:
- Queries YAML externalisées (config/queries/{app}/)
- CRUD générique paramétrable
- Filtres par rôle (default, admin)
- Templates email (config/emails/{app}/)
Documentation:
- DOCTECH.md : documentation technique complète
- README.md : vision et roadmap
- TODO.md : phases 11-15 planifiées
Roadmap:
- Phase 11: sogoms-crypt (chiffrement)
- Phase 12: sogoms-imap/mailproc (emails)
- Phase 13: sogoms-cron (tâches planifiées)
- Phase 14: sogoms-push (MQTT temps réel)
- Phase 15: sogoms-schema (API auto-générée)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
181
TODO.md
181
TODO.md
@@ -75,18 +75,179 @@ curl https://prokov.unikoffice.com/api/auth/me \
|
||||
|
||||
## Phase 7 : Microservice Logs
|
||||
|
||||
- [ ] `cmd/sogoms/logs/main.go` : point d'entrée
|
||||
- [ ] Écoute sur Unix socket `/run/sogoms-logs.1.sock`
|
||||
- [ ] Actions `log_error`, `log_event` : écriture dans fichiers
|
||||
- [ ] Format fichiers : `/var/log/sogoms/{app}-{YYYYMMDD}-{type}.log`
|
||||
- [ ] Rotation automatique : suppression des fichiers > N jours (défaut 15)
|
||||
- [ ] Paramètre `retention_days` dans config
|
||||
- [ ] Intégration avec sogoway et sogoms-db
|
||||
- [x] `cmd/sogoms/logs/main.go` : point d'entrée
|
||||
- [x] Écoute sur Unix socket `/run/sogoms-logs.1.sock`
|
||||
- [x] Actions `log_error`, `log_event` : écriture dans fichiers
|
||||
- [x] Format fichiers : `/var/log/sogoms/{app}-{YYYYMMDD}-{type}.log`
|
||||
- [x] Rotation automatique : suppression des fichiers > 30 jours
|
||||
- [x] Paramètre `retention_days` dans config (`config/routes/prokov.yaml`)
|
||||
- [x] Intégration avec sogoway et sogoms-db
|
||||
|
||||
## Phase 8 : Système de Queries YAML
|
||||
|
||||
- [x] Structure `config/queries/{app}/*.yaml`
|
||||
- [x] Requêtes SQL externalisées (pas de recompilation)
|
||||
- [x] `internal/config/config.go` : QueryConfig, GetQuery(), Build()
|
||||
- [x] Placeholders `:user_id`, `:id`, etc.
|
||||
- [x] Filtres par rôle (default, admin)
|
||||
- [x] Login enrichi : charge projects, tasks, tags, statuses
|
||||
|
||||
## Phase 9 : CRUD Générique
|
||||
|
||||
- [x] Routing `/api/{resource}` dans sogoway
|
||||
- [x] GET list/show avec filtres YAML
|
||||
- [x] POST create avec fields YAML
|
||||
- [x] PUT update avec fields + filtres YAML
|
||||
- [x] DELETE avec filtres YAML
|
||||
- [x] Config YAML pour projects, tasks, tags, statuses
|
||||
- [x] Sécurité : filtre user_id automatique
|
||||
|
||||
## Phase 10 : Améliorations Deploy
|
||||
|
||||
- [x] `deploy.sh` : build sogoms-logs
|
||||
- [x] `deploy.sh` : backup archives dans `/home/pierre/samba/back/sogoms/`
|
||||
- [x] `deploy.sh` : redémarrage auto sogoctl
|
||||
- [x] `deploy.sh` : kill propre des processus zombies
|
||||
- [x] Documentation `DOCTECH.md`
|
||||
- [x] Version 1.0.1
|
||||
|
||||
## Phase 11 : Microservice Crypt
|
||||
|
||||
- [ ] `cmd/sogoms/crypt/main.go` : point d'entrée
|
||||
- [ ] Écoute sur Unix socket `/run/sogoms-crypt.1.sock`
|
||||
- [ ] Action `encrypt` : chiffre une donnée (AES-256-GCM)
|
||||
- [ ] Action `decrypt` : déchiffre une donnée
|
||||
- [ ] Action `hash` : hash irréversible (SHA-256)
|
||||
- [ ] Clé de chiffrement par application (`/secrets/{app}_crypt_key`)
|
||||
- [ ] Intégration avec sogoway pour champs sensibles
|
||||
- [ ] Config YAML : liste des champs à chiffrer par table
|
||||
- [ ] Application Prokov : chiffrement `users.email`
|
||||
|
||||
## Phase 12 : Microservices Email
|
||||
|
||||
### 12a. sogoms-smtp (Envoi)
|
||||
|
||||
- [x] `cmd/sogoms/smtp/main.go` : point d'entrée
|
||||
- [x] Écoute sur Unix socket `/run/sogoms-smtp.1.sock`
|
||||
- [x] Action `send` : envoi email simple (to, subject, body, html)
|
||||
- [x] Action `send_template` : envoi avec template YAML
|
||||
- [x] Action `send_bulk` : envoi en masse (liste de destinataires)
|
||||
- [x] Config SMTP par application (`config/routes/{app}.yaml`)
|
||||
- [x] Support TLS/STARTTLS
|
||||
- [x] Templates YAML (`config/emails/{app}/*.yaml`)
|
||||
- [ ] Queue d'envoi avec retry en cas d'échec
|
||||
|
||||
### 12b. sogoms-imap (Lecture)
|
||||
|
||||
- [ ] `cmd/sogoms/imap/main.go` : point d'entrée
|
||||
- [ ] Écoute sur Unix socket `/run/sogoms-imap.1.sock`
|
||||
- [ ] Action `list` : liste les emails (folder, limit, offset)
|
||||
- [ ] Action `fetch` : récupère un email complet (uid)
|
||||
- [ ] Action `delete` : supprime un email
|
||||
- [ ] Action `mark_read` : marque comme lu
|
||||
- [ ] Action `move` : déplace vers un autre dossier
|
||||
- [ ] Config IMAP par application (`config/routes/{app}.yaml`)
|
||||
- [ ] Support IMAP IDLE pour notifications temps réel
|
||||
|
||||
### 12c. sogoms-mailproc (Traitement)
|
||||
|
||||
- [ ] `cmd/sogoms/mailproc/main.go` : point d'entrée
|
||||
- [ ] Écoute sur Unix socket `/run/sogoms-mailproc.1.sock`
|
||||
- [ ] Action `parse` : parse un email (headers, body, attachments)
|
||||
- [ ] Action `apply_rules` : applique des règles configurées
|
||||
- [ ] Config YAML : règles par application (`config/mailrules/{app}.yaml`)
|
||||
- [ ] Webhooks : notification vers URL externe
|
||||
- [ ] Intégration Prokov : email entrant → création de tâche
|
||||
|
||||
## Phase 13 : Microservice Cron
|
||||
|
||||
- [ ] `cmd/sogoms/cron/main.go` : point d'entrée
|
||||
- [ ] Écoute sur Unix socket `/run/sogoms-cron.1.sock`
|
||||
- [ ] Config YAML par application (`config/cron/{app}.yaml`)
|
||||
- [ ] Parser cron schedule (format standard `* * * * *`)
|
||||
- [ ] Action `list` : liste les jobs configurés
|
||||
- [ ] Action `trigger` : déclenche un job manuellement
|
||||
- [ ] Action `status` : statut des dernières exécutions
|
||||
- [ ] Type `service` : appel service interne (sogoms-smtp, sogoms-db, etc.)
|
||||
- [ ] Type `http` : appel HTTP (GET/POST) vers endpoint interne ou externe
|
||||
- [ ] Type `query_email` : requête DB + envoi email avec résultat
|
||||
- [ ] Logging des exécutions dans sogoms-logs
|
||||
- [ ] Application Prokov : email quotidien `tasks_today`
|
||||
|
||||
## Phase 14 : Push Temps Réel (MQTT)
|
||||
|
||||
### 14a. Infrastructure Mosquitto
|
||||
|
||||
- [ ] Installation Mosquitto sur gw3 (Alpine: `apk add mosquitto`)
|
||||
- [ ] Config `/etc/mosquitto/mosquitto.conf`
|
||||
- [ ] Auth par user/password ou plugin JWT
|
||||
- [ ] Port 1883 (MQTT) + 9001 (WebSocket)
|
||||
- [ ] TLS optionnel pour production
|
||||
|
||||
### 14b. sogoms-push
|
||||
|
||||
- [ ] `cmd/sogoms/push/main.go` : point d'entrée
|
||||
- [ ] Écoute sur Unix socket `/run/sogoms-push.1.sock`
|
||||
- [ ] Connexion au broker MQTT
|
||||
- [ ] Config YAML par application (`config/push/{app}.yaml`)
|
||||
- [ ] Action `publish` : publie un message sur un topic
|
||||
- [ ] Action `notify_user` : publie vers `{app}/user/{user_id}/{channel}`
|
||||
- [ ] Action `broadcast` : publie vers tous les users d'une app
|
||||
- [ ] Topics : notifications, tasks, projects, comments
|
||||
- [ ] Intégration sogoway : publish auto sur événements CRUD
|
||||
|
||||
### 14c. Intégration Flutter
|
||||
|
||||
- [ ] Package `mqtt_client` dans Prokov Flutter
|
||||
- [ ] Service MqttService : connexion, reconnexion auto
|
||||
- [ ] Subscription aux topics user
|
||||
- [ ] Mise à jour state en temps réel
|
||||
- [ ] Notifications in-app
|
||||
|
||||
## Phase 15 : Schema-Driven API (Socle SOGOMS)
|
||||
|
||||
Cette phase transforme SOGOMS en générateur d'API automatique.
|
||||
|
||||
### 15a. Définition du Schema
|
||||
|
||||
- [ ] Format `config/schema/{app}.yaml` : tables, fields, relations
|
||||
- [ ] Types supportés : int, string, text, bool, date, datetime, json
|
||||
- [ ] Contraintes : primary, auto, unique, required, default
|
||||
- [ ] Relations : foreign key avec `foreign: table.field`
|
||||
- [ ] Sécurité : `filter: owner` pour filtrage auto par user_id
|
||||
- [ ] Auth : `auth: login`, `auth: password` pour détection auto
|
||||
- [ ] CRUD : liste des opérations autorisées par table
|
||||
- [ ] Filtres custom : définition de filtres nommés
|
||||
|
||||
### 15b. sogoms-schema (Générateur)
|
||||
|
||||
- [ ] `cmd/sogoms/schema/main.go` : outil CLI
|
||||
- [ ] Commande `generate {app}` : génère queries YAML depuis schema
|
||||
- [ ] Commande `validate {app}` : valide le schema
|
||||
- [ ] Commande `diff {app}` : compare schema vs DB réelle
|
||||
- [ ] Commande `migrate {app}` : génère SQL de migration
|
||||
- [ ] Commande `init {app}` : crée schema depuis DB existante (reverse)
|
||||
|
||||
### 15c. Runtime Dynamique (sogoway)
|
||||
|
||||
- [ ] Chargement schema au démarrage
|
||||
- [ ] Routes CRUD auto-générées depuis schema
|
||||
- [ ] Validation des inputs selon types/contraintes
|
||||
- [ ] Filtrage user_id automatique (filter: owner)
|
||||
- [ ] Gestion relations (include, nested)
|
||||
- [ ] Pas de fichiers queries YAML requis (optionnels pour override)
|
||||
|
||||
### 15d. Dictionnaire de Données
|
||||
|
||||
- [ ] Endpoint `/api/_schema` : expose le schema (pour admin/debug)
|
||||
- [ ] Endpoint `/api/_schema/{table}` : détail d'une table
|
||||
- [ ] Documentation auto-générée
|
||||
- [ ] Utilisable par Flutter pour génération de formulaires
|
||||
|
||||
## Hors scope V1
|
||||
|
||||
- sogorch (orchestrateur scénarios)
|
||||
- sogoms-pdf, sogoms-email, sogoms-storage
|
||||
- Multi-tenant
|
||||
- sogoms-pdf, sogoms-storage
|
||||
- Multi-tenant avancé (workspaces, partage)
|
||||
- Rate limiting
|
||||
- Exécution dynamique des scénarios YAML
|
||||
- Rôles utilisateurs (admin, manager, user)
|
||||
|
||||
Reference in New Issue
Block a user