- sogoctl: supervisor avec health checks et restart auto - sogoway: gateway HTTP, auth JWT, routing par hostname - sogoms-db: microservice MariaDB avec pool par application - Protocol IPC Unix socket JSON length-prefixed - Config YAML multi-application (prokov) - Deploy script pour container Alpine gw3 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
3.1 KiB
Executable File
3.1 KiB
Executable File
TODO - SOGOMS V1 Minimale
Objectif : valider l'architecture avec 2-3 microservices basiques.
Phase 0 : Infrastructure
- Container gw3 : Alpine sur IN3 (13.23.33.5)
- Config Prokov : routes + scénarios YAML (auth, projects, tasks, tags, statuses)
- Nginx host IN3 : routing /api/ → gw3:8080, / → dva-front
Phase 1 : Protocole IPC
internal/protocol/message.go: structs Request/Response JSONinternal/protocol/server.go: listener Unix socketinternal/protocol/client.go: client pour appeler les services
Phase 2 : Microservice DB
cmd/sogoms/db/main.go: point d'entrée- Connexion MariaDB (pool par application)
- Action
query: SELECT multi-résultats - Action
query_one: SELECT un résultat - Action
insert: INSERT retourne insert_id - Action
update: UPDATE retourne affected_rows - Action
delete: DELETE retourne affected_rows - Écoute sur
/run/sogoms-db.1.sock - Test standalone sogoms-db
Phase 3 : Config
internal/config/config.go: lecture YAML + registry par hostinternal/config/routes.go: parser routes (intégré dans config.go)
Phase 4 : Gateway HTTP
cmd/sogoway/main.go: serveur HTTP :8080- Routing par host → charge le bon fichier routes (prokov.yaml)
internal/auth/jwt.go: génération + validation JWT (HS256)internal/auth/password.go: hash + verify password (bcrypt)- Endpoint
POST /api/auth/login: vérifie credentials, retourne JWT - Endpoint
GET /api/auth/me: valide JWT, retourne user - Endpoint
POST /api/auth/register: crée user, retourne JWT - Communication avec sogoms-db via Unix socket
- Test standalone sogoway
Phase 5 : Superviseur
cmd/sogoctl/main.go: point d'entrée- Config
config/sogoctl.yaml: services à lancer - Lancement sogoms-db + sogoway (avec dépendances)
- Health check (socket + HTTP)
- Redémarrage automatique si crash
Phase 6 : Test de validation
# 1. Lancer sogoctl (démarre les services)
./sogoctl
# 2. Login
curl -X POST https://prokov.unikoffice.com/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"test@example.com","password":"secret"}'
# → {"success":true,"data":{"token":"eyJ...","user":{...}}}
# 3. Vérifier le token
curl https://prokov.unikoffice.com/api/auth/me \
-H "Authorization: Bearer eyJ..."
# → {"success":true,"data":{"user":{...}}}
- Test login OK
- Test /me avec token valide OK
- Test /me sans token → 401
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_daysdans config - Intégration avec sogoway et sogoms-db
Hors scope V1
- sogorch (orchestrateur scénarios)
- sogoms-pdf, sogoms-email, sogoms-storage
- Multi-tenant
- Rate limiting
- Exécution dynamique des scénarios YAML