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:
2025-12-16 14:58:46 +01:00
parent 7e27f87d6f
commit a4694a10d1
36 changed files with 2786 additions and 2387 deletions

117
README.md
View File

@@ -2,19 +2,49 @@
**Service Oriented GO MicroServices** - Plateforme SaaS modulaire multi-tenant.
## Architecture
## Vision
SOGOMS est un framework backend léger en Go qui transforme un simple fichier de schéma YAML en API REST complète. Conçu pour héberger plusieurs applications SaaS sur une même infrastructure avec isolation totale des données.
```
Client → Nginx(:443) → Sogoway(:8080) → Sogoms-db → MariaDB
Unix Socket
schema.yaml → SOGOMS → API REST + Auth + CRUD + Push
```
| Binaire | Rôle | Port/Socket |
|---------|------|-------------|
| `sogoctl` | Superviseur PID 1, health checks, restart auto | - |
| `sogoway` | Gateway HTTP, auth JWT, routing par hostname | TCP :8080 |
| `sogoms-db` | Accès MariaDB, pool par application | Unix socket |
## Caractéristiques
- **Léger** : binaires Go compilés (~10MB), pas de dépendances runtime
- **Modulaire** : 1 fonctionnalité = 1 microservice
- **Configurable** : SQL et routing en YAML, sans recompilation
- **Sécurisé** : JWT, isolation par user_id, bcrypt
- **Auto-supervisé** : health checks, restart automatique
- **Temps réel** : push MQTT vers les applications (roadmap)
- **Schema-driven** : génération d'API depuis la structure DB (roadmap)
## Services actuels
| Service | Rôle | Statut |
|---------|------|--------|
| `sogoctl` | Superviseur, health checks | Stable |
| `sogoway` | Gateway HTTP, auth JWT, CRUD | Stable |
| `sogoms-db` | Accès MariaDB | Stable |
| `sogoms-logs` | Logging centralisé | Stable |
| `sogoms-smtp` | Envoi emails, templates | Stable |
## Roadmap
| Phase | Service | Description |
|-------|---------|-------------|
| 11 | sogoms-crypt | Chiffrement données sensibles |
| 12 | sogoms-imap/mailproc | Lecture et traitement emails |
| 13 | sogoms-cron | Tâches planifiées |
| 14 | sogoms-push | Push temps réel (MQTT) |
| 15 | sogoms-schema | API auto-générée depuis schema |
## Applications
| Application | Description | URL |
|-------------|-------------|-----|
| **Prokov** | Gestion de projets et tâches | prokov.unikoffice.com |
## Déploiement
@@ -22,76 +52,17 @@ Client → Nginx(:443) → Sogoway(:8080) → Sogoms-db → MariaDB
./deploy.sh
```
Déploie sur le container `gw3` (Alpine) via IN3.
## Documentation
## Lancement
Sur gw3 :
```bash
/opt/sogoms/bin/sogoctl
```
## Configuration
Chaque application cliente a son fichier dans `config/routes/` :
```yaml
# config/routes/prokov.yaml
app: prokov
hosts:
- prokov.unikoffice.com
database:
host: 13.23.33.4
user: prokov_user
password_file: /secrets/prokov_db_pass
name: prokov
auth:
jwt_secret_file: /secrets/prokov_jwt_secret
jwt_expiry: 24h
```
## Structure
```
cmd/
sogoctl/main.go # Superviseur
sogoway/main.go # Gateway HTTP
sogoms/db/main.go # Microservice DB
internal/
protocol/ # IPC Unix socket (JSON length-prefixed)
config/ # Chargement YAML, registry par host
auth/ # JWT (HS256), bcrypt passwords
config/
sogoctl.yaml # Services à superviser
routes/*.yaml # Config par application
scenarios/ # Scénarios YAML (V2)
```
## API Endpoints
```bash
# Health check
curl http://localhost:8080/health
# Login
curl -X POST http://localhost:8080/api/auth/login \
-H "Host: prokov.unikoffice.com" \
-H "Content-Type: application/json" \
-d '{"email":"user@example.com","password":"secret"}'
# User info (avec token)
curl http://localhost:8080/api/auth/me \
-H "Host: prokov.unikoffice.com" \
-H "Authorization: Bearer <token>"
```
- [Documentation technique](DOCTECH.md) - Architecture, API, configuration
- [Roadmap](TODO.md) - Suivi des tâches et évolutions
## Prérequis
- Go 1.22+
- MariaDB/MySQL
- Container Alpine (gw3)
- Container Linux (Alpine recommandé)
## Licence
Propriétaire
Propriétaire - Tous droits réservés