2025-12-03 19:29:37 +00:00
|
|
|
package workers
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
|
|
|
|
"fmt"
|
|
|
|
|
"time"
|
|
|
|
|
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
"veza-backend-api/internal/email"
|
2025-12-03 19:29:37 +00:00
|
|
|
"veza-backend-api/internal/services"
|
|
|
|
|
|
|
|
|
|
"github.com/google/uuid"
|
|
|
|
|
"go.uber.org/zap"
|
|
|
|
|
"gorm.io/gorm"
|
2025-12-06 12:32:32 +00:00
|
|
|
"gorm.io/gorm/clause"
|
2025-12-03 19:29:37 +00:00
|
|
|
)
|
|
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
// JobWorker gère les tâches en arrière-plan via une queue persistée en DB
|
2025-12-03 19:29:37 +00:00
|
|
|
type JobWorker struct {
|
|
|
|
|
db *gorm.DB
|
|
|
|
|
jobService *services.JobService
|
|
|
|
|
logger *zap.Logger
|
|
|
|
|
maxRetries int
|
|
|
|
|
processingWorkers int
|
2025-12-06 12:32:32 +00:00
|
|
|
emailSender email.EmailSender
|
|
|
|
|
pollingInterval time.Duration
|
2025-12-03 19:29:37 +00:00
|
|
|
}
|
|
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
// Job représente une tâche persistée en base de données
|
2025-12-03 19:29:37 +00:00
|
|
|
type Job struct {
|
2025-12-06 12:32:32 +00:00
|
|
|
ID uuid.UUID `gorm:"type:uuid;primary_key"`
|
|
|
|
|
Type string `gorm:"not null"`
|
|
|
|
|
Payload map[string]interface{} `gorm:"serializer:json;not null"`
|
|
|
|
|
Status string `gorm:"not null;default:'pending'"` // pending, processing, completed, failed
|
|
|
|
|
Priority int `gorm:"not null;default:2"` // 1=high, 2=medium, 3=low
|
|
|
|
|
RunAt time.Time `gorm:"not null;index"`
|
|
|
|
|
CreatedAt time.Time `gorm:"not null"`
|
|
|
|
|
UpdatedAt time.Time `gorm:"not null"`
|
|
|
|
|
StartedAt *time.Time
|
|
|
|
|
CompletedAt *time.Time
|
|
|
|
|
FailedAt *time.Time
|
|
|
|
|
Retries int `gorm:"not null;default:0"`
|
|
|
|
|
MaxRetries int `gorm:"not null;default:3"`
|
|
|
|
|
LastError string `gorm:"type:text"`
|
2025-12-03 19:29:37 +00:00
|
|
|
}
|
|
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
// NewJobWorker crée un nouveau worker de jobs persisté
|
2025-12-03 19:29:37 +00:00
|
|
|
func NewJobWorker(
|
|
|
|
|
db *gorm.DB,
|
|
|
|
|
jobService *services.JobService,
|
|
|
|
|
logger *zap.Logger,
|
2025-12-06 12:32:32 +00:00
|
|
|
_ int, // queueSize ignoré car persisté
|
2025-12-03 19:29:37 +00:00
|
|
|
workers int,
|
|
|
|
|
maxRetries int,
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
emailSender email.EmailSender,
|
2025-12-03 19:29:37 +00:00
|
|
|
) *JobWorker {
|
2025-12-06 12:32:32 +00:00
|
|
|
// AutoMigrate la table Job si nécessaire (optionnel si géré par migrations SQL)
|
|
|
|
|
// db.AutoMigrate(&Job{})
|
|
|
|
|
|
2025-12-03 19:29:37 +00:00
|
|
|
return &JobWorker{
|
|
|
|
|
db: db,
|
|
|
|
|
jobService: jobService,
|
|
|
|
|
logger: logger,
|
|
|
|
|
maxRetries: maxRetries,
|
|
|
|
|
processingWorkers: workers,
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
emailSender: emailSender,
|
2025-12-06 12:32:32 +00:00
|
|
|
pollingInterval: 1 * time.Second, // Polling agressif pour réactivité
|
2025-12-03 19:29:37 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
// Enqueue ajoute un job dans la table jobs
|
2025-12-03 19:29:37 +00:00
|
|
|
func (w *JobWorker) Enqueue(job Job) {
|
|
|
|
|
if job.ID == uuid.Nil {
|
|
|
|
|
job.ID = uuid.New()
|
|
|
|
|
}
|
2025-12-06 12:32:32 +00:00
|
|
|
// Initialisation des champs par défaut
|
|
|
|
|
if job.Status == "" {
|
|
|
|
|
job.Status = "pending"
|
|
|
|
|
}
|
|
|
|
|
if job.RunAt.IsZero() {
|
|
|
|
|
job.RunAt = time.Now()
|
|
|
|
|
}
|
|
|
|
|
if job.MaxRetries == 0 {
|
|
|
|
|
job.MaxRetries = w.maxRetries
|
|
|
|
|
}
|
|
|
|
|
// Le mapping GORM gère CreatedAt/UpdatedAt
|
2025-12-03 19:29:37 +00:00
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
if err := w.db.Create(&job).Error; err != nil {
|
|
|
|
|
w.logger.Error("Failed to enqueue job",
|
|
|
|
|
zap.String("type", job.Type),
|
|
|
|
|
zap.Error(err))
|
|
|
|
|
return
|
2025-12-03 19:29:37 +00:00
|
|
|
}
|
2025-12-06 12:32:32 +00:00
|
|
|
|
|
|
|
|
w.logger.Debug("Job enqueued (persisted)",
|
|
|
|
|
zap.String("job_id", job.ID.String()),
|
|
|
|
|
zap.String("type", job.Type))
|
2025-12-03 19:29:37 +00:00
|
|
|
}
|
|
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
// Start démarre les workers de polling
|
2025-12-03 19:29:37 +00:00
|
|
|
func (w *JobWorker) Start(ctx context.Context) {
|
2025-12-06 12:32:32 +00:00
|
|
|
w.logger.Info("Starting persisted job worker",
|
2025-12-03 19:29:37 +00:00
|
|
|
zap.Int("workers", w.processingWorkers))
|
|
|
|
|
|
2025-12-06 16:21:59 +00:00
|
|
|
// Start zombie job rescuer (background loop)
|
|
|
|
|
go w.rescueZombieJobsLoop(ctx)
|
|
|
|
|
|
2025-12-03 19:29:37 +00:00
|
|
|
for i := 0; i < w.processingWorkers; i++ {
|
|
|
|
|
go w.processWorker(ctx, i)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-06 16:21:59 +00:00
|
|
|
// rescueZombieJobsLoop runs periodically to reset jobs stuck in processing state
|
|
|
|
|
func (w *JobWorker) rescueZombieJobsLoop(ctx context.Context) {
|
|
|
|
|
ticker := time.NewTicker(5 * time.Minute)
|
|
|
|
|
defer ticker.Stop()
|
|
|
|
|
|
|
|
|
|
// Run once immediately on startup
|
|
|
|
|
if err := w.rescueZombieJobs(); err != nil {
|
|
|
|
|
w.logger.Error("Failed to rescue zombie jobs on startup", zap.Error(err))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for {
|
|
|
|
|
select {
|
|
|
|
|
case <-ctx.Done():
|
|
|
|
|
return
|
|
|
|
|
case <-ticker.C:
|
|
|
|
|
if err := w.rescueZombieJobs(); err != nil {
|
|
|
|
|
w.logger.Error("Failed to rescue zombie jobs", zap.Error(err))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// rescueZombieJobs atomically resets stuck jobs
|
|
|
|
|
func (w *JobWorker) rescueZombieJobs() error {
|
|
|
|
|
// Threshold: 15 minutes. If a job is "processing" for > 15m, it is likely the worker crashed.
|
|
|
|
|
threshold := time.Now().Add(-15 * time.Minute)
|
|
|
|
|
|
|
|
|
|
result := w.db.Model(&Job{}).
|
|
|
|
|
Where("status = ? AND started_at < ?", "processing", threshold).
|
|
|
|
|
Updates(map[string]interface{}{
|
|
|
|
|
"status": "pending",
|
|
|
|
|
"started_at": nil,
|
|
|
|
|
// We increment retries to prevent infinite loops if the job itself causes the crash
|
|
|
|
|
"retries": gorm.Expr("retries + 1"),
|
|
|
|
|
"last_error": "Zombie job rescue: Worker probably crashed",
|
|
|
|
|
"run_at": time.Now(), // Retry immediately
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
if result.Error != nil {
|
|
|
|
|
return result.Error
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if result.RowsAffected > 0 {
|
|
|
|
|
w.logger.Warn("Rescued zombie jobs", zap.Int64("count", result.RowsAffected))
|
|
|
|
|
}
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
// processWorker boucle de polling et traitement
|
2025-12-03 19:29:37 +00:00
|
|
|
func (w *JobWorker) processWorker(ctx context.Context, workerID int) {
|
2025-12-06 12:32:32 +00:00
|
|
|
ticker := time.NewTicker(w.pollingInterval)
|
|
|
|
|
defer ticker.Stop()
|
|
|
|
|
|
|
|
|
|
w.logger.Info("Worker started", zap.Int("worker_id", workerID))
|
2025-12-03 19:29:37 +00:00
|
|
|
|
|
|
|
|
for {
|
|
|
|
|
select {
|
|
|
|
|
case <-ctx.Done():
|
2025-12-06 12:32:32 +00:00
|
|
|
w.logger.Info("Worker stopping", zap.Int("worker_id", workerID))
|
2025-12-03 19:29:37 +00:00
|
|
|
return
|
2025-12-06 12:32:32 +00:00
|
|
|
case <-ticker.C:
|
|
|
|
|
w.fetchAndProcessJob(ctx, workerID)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// fetchAndProcessJob récupère UN job en attente (atomiquement) et le traite
|
|
|
|
|
func (w *JobWorker) fetchAndProcessJob(ctx context.Context, workerID int) {
|
|
|
|
|
var job Job
|
2025-12-06 16:21:59 +00:00
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
// Transaction pour verrouiller le job (SELECT ... FOR UPDATE SKIP LOCKED)
|
|
|
|
|
// Compatible Postgres (et MySQL 8+). Pour SQLite, le locking est différent mais Gorm gère le basic.
|
|
|
|
|
err := w.db.Transaction(func(tx *gorm.DB) error {
|
|
|
|
|
// Trouver un job 'pending' ou 'failed' (si retry auto géré ici, mais on préfère 'pending' avec RunAt <= Now)
|
|
|
|
|
// On cherche status='pending' AND run_at <= NOW()
|
|
|
|
|
// Order by Priority ASC (1 first), then CreatedAt
|
|
|
|
|
if err := tx.Clauses(clause.Locking{Strength: "UPDATE", Options: "SKIP LOCKED"}).
|
|
|
|
|
Where("status = ? AND run_at <= ?", "pending", time.Now()).
|
|
|
|
|
Order("priority ASC, created_at ASC").
|
|
|
|
|
First(&job).Error; err != nil {
|
|
|
|
|
return err // RecordNotFound est typique ici
|
|
|
|
|
}
|
2025-12-03 19:29:37 +00:00
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
// Update status to 'processing'
|
|
|
|
|
now := time.Now()
|
|
|
|
|
job.Status = "processing"
|
|
|
|
|
job.StartedAt = &now
|
|
|
|
|
if err := tx.Save(&job).Error; err != nil {
|
|
|
|
|
return err
|
2025-12-03 19:29:37 +00:00
|
|
|
}
|
2025-12-06 12:32:32 +00:00
|
|
|
return nil
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
if err != gorm.ErrRecordNotFound {
|
|
|
|
|
w.logger.Error("Failed to fetch job", zap.Error(err))
|
|
|
|
|
}
|
|
|
|
|
// Pas de job à traiter, on attend le prochain tick
|
|
|
|
|
return
|
2025-12-03 19:29:37 +00:00
|
|
|
}
|
2025-12-06 12:32:32 +00:00
|
|
|
|
|
|
|
|
// Job récupéré, on traite
|
|
|
|
|
w.processJob(ctx, job, workerID)
|
2025-12-03 19:29:37 +00:00
|
|
|
}
|
|
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
// processJob exécute la logique métier et met à jour le statut final
|
2025-12-03 19:29:37 +00:00
|
|
|
func (w *JobWorker) processJob(ctx context.Context, job Job, workerID int) {
|
2025-12-06 16:21:59 +00:00
|
|
|
// Si le payload est une map vide, tenter de le decoder s'il vient de GORM (jsonb)
|
|
|
|
|
// Gorm avec `serializer:json` devrait le faire auto, mais verifions.
|
|
|
|
|
|
2025-12-03 19:29:37 +00:00
|
|
|
logger := w.logger.With(
|
|
|
|
|
zap.String("job_id", job.ID.String()),
|
2025-12-06 12:32:32 +00:00
|
|
|
zap.String("type", job.Type),
|
|
|
|
|
zap.Int("worker_id", workerID),
|
|
|
|
|
zap.Int("retry", job.Retries))
|
2025-12-03 19:29:37 +00:00
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
logger.Info("Processing job")
|
2025-12-03 19:29:37 +00:00
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
// Timeout per job execution
|
2025-12-03 19:29:37 +00:00
|
|
|
jobCtx, cancel := context.WithTimeout(ctx, 5*time.Minute)
|
|
|
|
|
defer cancel()
|
|
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
// Exécution
|
|
|
|
|
execErr := w.executeJob(jobCtx, job)
|
|
|
|
|
|
|
|
|
|
// Update status final
|
|
|
|
|
now := time.Now()
|
|
|
|
|
if execErr != nil {
|
|
|
|
|
logger.Error("Job execution failed", zap.Error(execErr))
|
2025-12-06 16:21:59 +00:00
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
// Calcul du prochain retry
|
|
|
|
|
job.Retries++
|
|
|
|
|
job.LastError = execErr.Error()
|
2025-12-06 16:21:59 +00:00
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
if job.Retries >= job.MaxRetries {
|
|
|
|
|
job.Status = "failed"
|
|
|
|
|
job.FailedAt = &now
|
|
|
|
|
logger.Error("Job reached max retries, marked as failed")
|
2025-12-03 19:29:37 +00:00
|
|
|
} else {
|
2025-12-06 12:32:32 +00:00
|
|
|
// Backoff exponentiel : 5s, 10s, 20s... (lineaire * coefficient) ou 5 * retry
|
|
|
|
|
backoff := time.Duration(job.Retries) * 10 * time.Second
|
|
|
|
|
job.Status = "pending" // Retour en queue
|
|
|
|
|
job.RunAt = time.Now().Add(backoff)
|
|
|
|
|
logger.Info("Job scheduled for retry", zap.Duration("backoff", backoff))
|
2025-12-03 19:29:37 +00:00
|
|
|
}
|
|
|
|
|
} else {
|
2025-12-06 12:32:32 +00:00
|
|
|
job.Status = "completed"
|
|
|
|
|
job.CompletedAt = &now
|
|
|
|
|
logger.Info("Job completed successfully")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Sauvegarde finale
|
|
|
|
|
// On le fait hors transaction "fetch", car le traitement peut être long
|
|
|
|
|
if err := w.db.Save(&job).Error; err != nil {
|
|
|
|
|
logger.Error("Failed to update job status after execution", zap.Error(err))
|
2025-12-03 19:29:37 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
// executeJob exécute la logique selon le type (inchangé)
|
2025-12-03 19:29:37 +00:00
|
|
|
func (w *JobWorker) executeJob(ctx context.Context, job Job) error {
|
|
|
|
|
switch job.Type {
|
|
|
|
|
case "email":
|
|
|
|
|
return w.processEmailJob(ctx, job)
|
|
|
|
|
case "thumbnail":
|
2025-12-06 12:32:32 +00:00
|
|
|
// Mapping manuel pour compatibilité avec l'ancien code si nécessaire
|
2025-12-03 19:29:37 +00:00
|
|
|
return w.processThumbnailJob(ctx, job)
|
|
|
|
|
case "analytics":
|
|
|
|
|
return w.processAnalyticsJob(ctx, job)
|
|
|
|
|
default:
|
|
|
|
|
return fmt.Errorf("unknown job type: %s", job.Type)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
// processEmailJob (inchangé structurellement, mais adapte le payload use)
|
2025-12-03 19:29:37 +00:00
|
|
|
func (w *JobWorker) processEmailJob(ctx context.Context, job Job) error {
|
2025-12-06 12:32:32 +00:00
|
|
|
// Re-conversion du payload map si nécessaire
|
|
|
|
|
p := job.Payload
|
2025-12-06 16:21:59 +00:00
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
to, _ := p["to"].(string)
|
|
|
|
|
if to == "" {
|
2025-12-03 19:29:37 +00:00
|
|
|
return fmt.Errorf("missing 'to' in payload")
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
subject, _ := p["subject"].(string)
|
|
|
|
|
body, _ := p["body"].(string)
|
|
|
|
|
templateName, _ := p["template"].(string)
|
2025-12-06 16:21:59 +00:00
|
|
|
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
var templateData map[string]interface{}
|
2025-12-06 12:32:32 +00:00
|
|
|
// Gorm serialization handle maps directly
|
|
|
|
|
if data, ok := p["template_data"].(map[string]interface{}); ok {
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
templateData = data
|
|
|
|
|
} else {
|
2025-12-06 12:32:32 +00:00
|
|
|
// Try generic map
|
|
|
|
|
if data, ok := p["template_data"].(map[string]any); ok {
|
|
|
|
|
templateData = data
|
|
|
|
|
} else {
|
|
|
|
|
templateData = make(map[string]interface{})
|
|
|
|
|
}
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
}
|
2025-12-03 19:29:37 +00:00
|
|
|
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
var emailJob *EmailJob
|
|
|
|
|
if templateName != "" {
|
|
|
|
|
emailJob = NewEmailJobWithTemplate(to, subject, templateName, templateData)
|
|
|
|
|
} else {
|
|
|
|
|
emailJob = NewEmailJob(to, subject, body)
|
|
|
|
|
}
|
2025-12-03 19:29:37 +00:00
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
return emailJob.Execute(ctx, w.emailSender, w.logger)
|
2025-12-03 19:29:37 +00:00
|
|
|
}
|
|
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
// Helper methods pour enqueuing (inchangés, mais adaptent l'objet Job)
|
|
|
|
|
|
|
|
|
|
// EnqueueEmailJob helper
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
func (w *JobWorker) EnqueueEmailJob(to, subject, body string) {
|
|
|
|
|
job := Job{
|
|
|
|
|
Type: "email",
|
2025-12-06 12:32:32 +00:00
|
|
|
Priority: 2,
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
Payload: map[string]interface{}{
|
|
|
|
|
"to": to,
|
|
|
|
|
"subject": subject,
|
|
|
|
|
"body": body,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
w.Enqueue(job)
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
// EnqueueEmailJobWithTemplate helper
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
func (w *JobWorker) EnqueueEmailJobWithTemplate(to, subject, templateName string, templateData map[string]interface{}) {
|
|
|
|
|
job := Job{
|
|
|
|
|
Type: "email",
|
2025-12-06 12:32:32 +00:00
|
|
|
Priority: 2,
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
Payload: map[string]interface{}{
|
2025-12-06 12:32:32 +00:00
|
|
|
"to": to,
|
|
|
|
|
"subject": subject,
|
|
|
|
|
"template": templateName,
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
"template_data": templateData,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
w.Enqueue(job)
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
// EnqueueThumbnailJob helper
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
func (w *JobWorker) EnqueueThumbnailJob(inputPath, outputPath string, width, height int) {
|
|
|
|
|
job := Job{
|
|
|
|
|
Type: "thumbnail",
|
2025-12-06 12:32:32 +00:00
|
|
|
Priority: 2,
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
Payload: map[string]interface{}{
|
|
|
|
|
"input_path": inputPath,
|
|
|
|
|
"output_path": outputPath,
|
2025-12-06 12:32:32 +00:00
|
|
|
"width": width,
|
|
|
|
|
"height": height,
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
w.Enqueue(job)
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
// EnqueueAnalyticsJob helper
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
func (w *JobWorker) EnqueueAnalyticsJob(eventName string, userID *uuid.UUID, payload map[string]interface{}) {
|
|
|
|
|
jobPayload := map[string]interface{}{
|
|
|
|
|
"event_name": eventName,
|
2025-12-06 12:32:32 +00:00
|
|
|
"payload": payload,
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
}
|
|
|
|
|
if userID != nil {
|
|
|
|
|
jobPayload["user_id"] = userID.String()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
job := Job{
|
|
|
|
|
Type: "analytics",
|
2025-12-06 12:32:32 +00:00
|
|
|
Priority: 3,
|
|
|
|
|
Payload: jobPayload,
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
}
|
|
|
|
|
w.Enqueue(job)
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
// processThumbnailJob wrapper
|
2025-12-03 19:29:37 +00:00
|
|
|
func (w *JobWorker) processThumbnailJob(ctx context.Context, job Job) error {
|
2025-12-06 12:32:32 +00:00
|
|
|
p := job.Payload
|
|
|
|
|
inputPath, _ := p["input_path"].(string)
|
|
|
|
|
outputPath, _ := p["output_path"].(string)
|
2025-12-06 16:21:59 +00:00
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
if inputPath == "" || outputPath == "" {
|
|
|
|
|
return fmt.Errorf("missing paths in payload")
|
2025-12-03 19:29:37 +00:00
|
|
|
}
|
|
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
// JSON unmarshal numbers as float64
|
|
|
|
|
width := 300
|
|
|
|
|
if wVal, ok := p["width"].(float64); ok {
|
|
|
|
|
width = int(wVal)
|
|
|
|
|
} else if wInt, ok := p["width"].(int); ok { // just in case
|
|
|
|
|
width = wInt
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
}
|
2025-12-03 19:29:37 +00:00
|
|
|
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
height := 300
|
2025-12-06 12:32:32 +00:00
|
|
|
if hVal, ok := p["height"].(float64); ok {
|
|
|
|
|
height = int(hVal)
|
|
|
|
|
} else if hInt, ok := p["height"].(int); ok {
|
|
|
|
|
height = hInt
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
}
|
2025-12-03 19:29:37 +00:00
|
|
|
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
thumbnailJob := NewThumbnailJob(inputPath, outputPath, width, height)
|
2025-12-06 12:32:32 +00:00
|
|
|
return thumbnailJob.Execute(ctx, w.logger)
|
2025-12-03 19:29:37 +00:00
|
|
|
}
|
|
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
// processAnalyticsJob wrapper
|
2025-12-03 19:29:37 +00:00
|
|
|
func (w *JobWorker) processAnalyticsJob(ctx context.Context, job Job) error {
|
2025-12-06 12:32:32 +00:00
|
|
|
p := job.Payload
|
|
|
|
|
eventName, _ := p["event_name"].(string)
|
|
|
|
|
if eventName == "" {
|
|
|
|
|
return fmt.Errorf("missing event_name")
|
2025-12-03 19:29:37 +00:00
|
|
|
}
|
|
|
|
|
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
var userID *uuid.UUID
|
2025-12-06 12:32:32 +00:00
|
|
|
if uidStr, ok := p["user_id"].(string); ok && uidStr != "" {
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
uid, err := uuid.Parse(uidStr)
|
|
|
|
|
if err != nil {
|
2025-12-06 12:32:32 +00:00
|
|
|
return fmt.Errorf("invalid user_id: %w", err)
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
}
|
|
|
|
|
userID = &uid
|
|
|
|
|
}
|
2025-12-03 19:29:37 +00:00
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
var extraPayload map[string]interface{}
|
|
|
|
|
// Handle nested map from JSON
|
|
|
|
|
if nested, ok := p["payload"].(map[string]interface{}); ok {
|
|
|
|
|
extraPayload = nested
|
|
|
|
|
} else if nested, ok := p["payload"].(map[string]any); ok {
|
|
|
|
|
extraPayload = nested
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
} else {
|
2025-12-06 16:21:59 +00:00
|
|
|
// If payload is a string (escaped json), try unmarshal?
|
2025-12-06 12:32:32 +00:00
|
|
|
// For now assume standard structure
|
|
|
|
|
extraPayload = make(map[string]interface{})
|
P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.
Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.
Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).
Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.
Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 10:14:38 +00:00
|
|
|
}
|
|
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
analyticsJob := NewAnalyticsEventJob(eventName, userID, extraPayload)
|
|
|
|
|
return analyticsJob.Execute(ctx, w.db, w.logger)
|
2025-12-03 19:29:37 +00:00
|
|
|
}
|
|
|
|
|
|
2025-12-06 12:32:32 +00:00
|
|
|
// GetStats retourne les stats DB si possible
|
2025-12-03 19:29:37 +00:00
|
|
|
func (w *JobWorker) GetStats() map[string]interface{} {
|
2025-12-06 12:32:32 +00:00
|
|
|
var pending, processing, failed int64
|
|
|
|
|
w.db.Model(&Job{}).Where("status = ?", "pending").Count(&pending)
|
|
|
|
|
w.db.Model(&Job{}).Where("status = ?", "processing").Count(&processing)
|
|
|
|
|
w.db.Model(&Job{}).Where("status = ?", "failed").Count(&failed)
|
2025-12-06 16:21:59 +00:00
|
|
|
|
2025-12-03 19:29:37 +00:00
|
|
|
return map[string]interface{}{
|
2025-12-06 16:21:59 +00:00
|
|
|
"queue_pending": pending,
|
2025-12-06 12:32:32 +00:00
|
|
|
"queue_processing": processing,
|
2025-12-06 16:21:59 +00:00
|
|
|
"queue_failed": failed,
|
|
|
|
|
"workers": w.processingWorkers,
|
2025-12-03 19:29:37 +00:00
|
|
|
}
|
|
|
|
|
}
|