veza/chat_exports/veza_ag_chat_2.md

443 lines
15 KiB
Markdown
Raw Permalink Normal View History

# Chat Conversation
Note: _This is purely the output of the chat conversation and does not contain any raw data, codebase snippets, etc. used to generate the output._
### User Input
# 🛰️ MISSION ANTIGRAVITY PHASE 2 : HARDENING, P2 & NETTOYAGE FINAL
Tu reprends le travail exactement là où tu las laissé lors de la première mission
(`REPORT_STATUS_2025_12_06.md` + remédiation P0/P1 déjà effectuée).
La branche active est déjà :
remediation/full_audit_fix
Elle contient notamment les commits suivants (entre autres) :
- fix(backend-worker): replace blocking sleep with non-blocking scheduler
- chore(backend): remove legacy migrations and main file
- fix(stream-processor): replace unsafe abort with graceful join to drain events
- feat(chat-server): implement 60s inactivity heartbeat timeout
- feat(chat-server): implement graceful shutdown with OS signal handling
- fix(backend-tests): enable room_handler_test and resolve metric collisions
- security(chat-server): implement auth middleware and permission checks for HTTP API
- chore(backend-tests): remove obsolete metrics and profile/system_metrics tests
- docs(remediation): add audit report, remediation plan and changelog skeleton
Tu dois maintenant **enchaîner avec la PHASE 2**, centrée sur :
- la complétion de tous les P2 du rapport initial,
- le hardening structurel (queues persistées, monitoring réel),
- le nettoyage sérieux des TODO/FIXME/HACK,
- lalignement final de la documentation avec létat réel du code.
---
## 📚 1. CONTEXTE & LECTURES OBLIGATOIRES
Avant toute action, relis et croise systématiquement :
- `REPORT_STATUS_2025_12_06.md` (rapport initial complet)
- `REMEDIATION_PLAN.md`
- `POST_REMEDIATION_REPORT.md`
- `CHANGELOG.md`
- Le log Git de la branche `remediation/full_audit_fix`
- Les fichiers clés suivants :
### Backend Go (`veza-backend-api/`)
- `internal/workers/job_worker.go`
- `internal/workers/...` (toute la mécanique de jobs)
- `internal/metrics/`, `internal/monitoring/`, `internal/middleware/metrics.go`
- `internal/handlers/*.go` + tests associés
- `migrations/` (V1, sans `migrations_legacy`)
- Tout fichier mentionné dans le rapport initial comme contenant un TODO/FIXME/HACK
### Chat Server (`veza-chat-server/`)
- `src/main.rs`
- `src/security/*`
- `src/websocket/*`
- `src/monitoring.rs` ou équivalent
- Modules de métriques / health-check si présents
### Stream Server (`veza-stream-server/`)
- `src/core/processing/processor.rs`
- `src/core/*` (encoder, sync, tracker…)
- Tout fichier marqué comme "code mort" ou "TODO implémentation réelle"
- Modules de métriques / monitoring
---
## 🎯 2. OBJECTIFS PHASE 2
### OBJECTIF 1 Vérification & Clôture des P0/P1
1. **Vérifier que tous les P0 & P1 du rapport `REPORT_STATUS_2025_12_06.md` sont réellement corrigés.**
- Pour chaque P0/P1 :
- Confirmer dans le code que la correction est réelle et robuste.
- Lier chaque correction au commit correspondant.
- Mettre à jour `POST_REMEDIATION_REPORT.md` avec un tableau :
| ID Problème | Description | Statut | Commit(s) | Commentaire |
|-------------|-------------|--------|-----------|-------------|
- Compléter/mettre à jour `CHANGELOG.md` pour refléter ces corrections.
### OBJECTIF 2 Implémentation complète des P2
À partir de la SECTION E & F du rapport, traiter tous les P2 suivants (ou équivalents) :
1. **Backend Workers Queue persistée**
- Remplacer la queue purement in-memory par une solution persistée :
- soit **table PostgreSQL `jobs`** (id UUID, payload JSONB, status, run_at, retry_count…)
- soit **Redis** (liste + metadata), en fonction de ce qui est le plus cohérent avec larchitecture actuelle.
- Garantir que :
- aucun job nest perdu en cas de redémarrage,
- le retry est piloté par `run_at` ou équivalent,
- les workers sont idempotents autant que possible.
2. **Monitoring & métriques réelles (Chat & Stream)**
- Remplacer les métriques “dummy” / TODO par de **vraies métriques** :
- nombre de connexions WebSocket actives
- backlog dévénements
- jobs stream en cours / terminés / en échec
- erreurs FFmpeg, temps moyen par transcoding, etc.
- Ajouter des endpoints ou hooks adaptés pour Prometheus ou loutil choisi.
- Vérifier que les métriques sont **calculées dans un chemin non bloquant**.
3. **Code mort du Stream Server**
- Identifier toutes les unités de code “fantôme” (ex: anciens modules dencoder/sync non utilisés).
- Décider pour chaque cas :
- soit suppression pure,
- soit transformation en `docs/ARCHIVE_STREAM_ARCH.md` avec explication.
- Nettoyer le code de façon à ce que la base soit **strictement alignée avec le pipeline actuel**.
4. **Todo/FIXME/HACK sweep**
- Scanner lensemble du repo (en excluant `.git`, `target`, `node_modules`, `veza-docs`, `docs` archivés) pour :
- `TODO`, `FIXME`, `XXX`, `HACK`, `NOT IMPLEMENTED`, `P0`, `P1`, etc.
- Construire un tableau dans un nouveau fichier :
- `docs/TODO_TRIAGE_VEZA.md`
Format :
| Fichier | Ligne | Tag | Description courte | Priorité (P1/P2/P3) | Décision (Fix now / Later / Wontfix) |
- Pour tous les items classés **P1/P2**, soit :
- les corriger immédiatement (avec commit dédié),
- soit les documenter de façon explicite (justification + ticket futur).
5. **Nettoyage documentation obsolète**
- Identifier tous les documents en contradiction avec létat **actuel** du code :
- anciens audits,
- anciens plans de migrations,
- docs ORIGIN qui décrivent des APIs / flows supprimés ou profondément modifiés.
- Pour chaque doc obsolète :
- soit le mettre dans un dossier `docs/ARCHIVE/` avec un en-tête très clair :
> “ARCHIVÉ NE PAS UTILISER POUR LES DÉVELOPPEMENTS COURANTS”
- soit le mettre à jour pour refléter létat réel (si utile).
- Mettre à jour `REMEDIATION_PLAN.md` et `POST_REMEDIATION_REPORT.md` pour consigner ce nettoyage documentaire.
---
## 🛠️ 3. FORMAT EXIGÉ POUR CHAQUE TÂCHE P2
Pour chaque problème / fonctionnalité P2 traité, utilise ce pattern dans ton raisonnement et tes sorties :
### 🔧 Tâche P2.n — [Titre clair]
- **Domaines** : (Backend / Chat / Stream / Docs / Monitoring)
- **Localisation fichier(s)** :
- **Contexte (issu du rapport ou des TODO)** :
- **Problème exact** :
- **Design de la solution** (schéma, structures, flux) :
- **Implémentation proposée** (pseudo-code + extraits de code) :
- **Tests à exécuter** :
- commandes `go test`, `cargo test`, etc.
- éventuels tests manuels (ex: curl / ws)
- **Commandes à lancer** (build, fmt, lint) :
- **Message de commit** proposé, par ex :
- `feat(backend-worker): persist job queue in postgres`
- `feat(monitoring): expose real ws connection metrics`
- `chore(stream): remove dead encoder prototype`
- `chore(docs): archive obsolete migration drafts`
Ensuite, applique ce workflow :
1. Proposer le plan précis
2. Appliquer les modifications
3. Montrer le diff
4. Lancer les tests & build
5. Committer avec le message prévu
6. Mettre à jour la doc concernée (POST_REMEDIATION_REPORT, CHANGELOG, TODO_TRIAGE…)
---
## 🔁 4. CONTRAINTE : 1 PROBLÈME = 1 COMMIT
Tu dois respecter STRICTEMENT :
- **Un problème / feature → un commit isolé**, lisible, conventionnel.
- Pas de “commit fourre-tout” mélangeant worker, stream et docs.
- Chaque commit doit être traçable au problème initial (rapport, TODO, etc.).
---
## 📦 5. SORTIE FINALE ATTENDUE
À la fin de cette PHASE 2, je veux obtenir :
1. `POST_REMEDIATION_REPORT.md` mis à jour, avec :
- P0/P1 cochés et référencés,
- P2 structurés, avec statut précis.
2. `CHANGELOG.md` enrichi avec toutes les entrées de cette phase.
3. `docs/TODO_TRIAGE_VEZA.md` avec la cartographie complète des TODO/FIXME/HACK.
4. Une base de code :
- sans code mort majeur dans le stream server,
- avec une queue de jobs backend **persistée**,
- avec des **métriques réelles** pour chat & stream,
- avec une documentation alignée sur létat réel.
5. Une branche `remediation/full_audit_fix` prête à être merge,
**les P0/P1 sont clos** et les P2 critiques ont été traités ou explicitement documentés.
*Edited relevant file*
*User accepted the command `git log --oneline -n 20`*
*User accepted the command `ls -F docs/`*
*Read resource from /home/senke/Documents/veza/REPORT_STATUS_2025_12_06.md *
*Read resource from /home/senke/Documents/veza/POST_REMEDIATION_REPORT.md *
*Read resource from /home/senke/Documents/veza/CHANGELOG.md *
*Viewed [REPORT_STATUS_2025_12_06.md](file:///home/senke/Documents/veza/REPORT_STATUS_2025_12_06.md) *
*Viewed [POST_REMEDIATION_REPORT.md](file:///home/senke/Documents/veza/POST_REMEDIATION_REPORT.md) *
*Viewed [CHANGELOG.md](file:///home/senke/Documents/veza/CHANGELOG.md) *
*Viewed [go.mod](file:///home/senke/Documents/veza/veza-backend-api/go.mod) *
*Viewed [job_worker.go](file:///home/senke/Documents/veza/veza-backend-api/internal/workers/job_worker.go) *
*Listed directory [migrations](file:///home/senke/Documents/veza/veza-backend-api/migrations) *
*Edited relevant file*
### User Input
This is a system-generated message that is sent due to the user's review policy. Proceed with the decision that you think is the most optimal here.
*Edited relevant file*
*Edited relevant file*
*User accepted the command `go mod tidy`*
*Edited relevant file*
*User accepted the command `go test -v ./internal/workers/...`*
*Viewed [thumbnail_job_test.go](file:///home/senke/Documents/veza/veza-backend-api/internal/workers/thumbnail_job_test.go) *
*Viewed [email_job_test.go](file:///home/senke/Documents/veza/veza-backend-api/internal/workers/email_job_test.go) *
*Edited relevant file*
*Edited relevant file*
*Edited relevant file*
*User accepted the command `go test -v ./internal/workers/...`*
*Viewed [thumbnail_job_test.go](file:///home/senke/Documents/veza/veza-backend-api/internal/workers/thumbnail_job_test.go) *
*Edited relevant file*
*User accepted the command `go test -v ./internal/workers/...`*
*Edited relevant file*
*User accepted the command `go test -v ./internal/workers/...`*
*Checked command status*
*Viewed [job_worker_test.go](file:///home/senke/Documents/veza/veza-backend-api/internal/workers/job_worker_test.go) *
*Edited relevant file*
*User accepted the command `go test -v ./internal/workers/...`*
*Checked command status*
*User accepted the command `git add veza-backend-api/internal/workers/ veza-backend-api/migrations/060_job_queue.sql`*
*User accepted the command `git commit -m "feat(backend-worker): persist job queue in postgres"`*
*Edited relevant file*
*Listed directory [src](file:///home/senke/Documents/veza/veza-chat-server/src) *
*Viewed [monitoring.rs](file:///home/senke/Documents/veza/veza-chat-server/src/monitoring.rs) *
*Viewed [Cargo.toml](file:///home/senke/Documents/veza/veza-chat-server/Cargo.toml) *
*Semantic searched codebase*
*Searched filesystem*
*User accepted the command `cargo add sysinfo`*
*Viewed [mod.rs](file:///home/senke/Documents/veza/veza-chat-server/src/websocket/mod.rs) *
*Semantic searched codebase*
*Edited relevant file*
*User accepted the command `cargo check`*
*Checked command status*
*Viewed [main.rs](file:///home/senke/Documents/veza/veza-chat-server/src/main.rs) *
*Edited relevant file*
*User accepted the command `cargo check`*
*Edited relevant file*
*User accepted the command `cargo check`*
*Checked command status*
*User accepted the command `cargo check`*
*Viewed [lib.rs](file:///home/senke/Documents/veza/veza-chat-server/src/lib.rs) *
*Edited relevant file*
*User accepted the command `cargo check`*
*Checked command status*
*Viewed [monitoring.rs](file:///home/senke/Documents/veza/veza-chat-server/src/monitoring.rs) *
*User accepted the command `cargo check > check_output.txt 2>&1`*
*Viewed [check_output.txt](file:///home/senke/Documents/veza/veza-chat-server/check_output.txt) *
*Edited relevant file*
*User accepted the command `cargo check`*
*Checked command status*
*User accepted the command `cargo check > check_output_2.txt 2>&1`*
*Viewed [check_output_2.txt](file:///home/senke/Documents/veza/veza-chat-server/check_output_2.txt) *
*Edited relevant file*
*User accepted the command `cargo check`*
*Checked command status*
*Viewed [handler.rs](file:///home/senke/Documents/veza/veza-chat-server/src/websocket/handler.rs) *
*Edited relevant file*
*User accepted the command `cargo check`*
*Edited relevant file*
*User accepted the command `cargo check`*
*Checked command status*
*Edited relevant file*
*User accepted the command `cargo check`*
*Viewed [handler.rs](file:///home/senke/Documents/veza/veza-chat-server/src/websocket/handler.rs) *
*Edited relevant file*
*User accepted the command `cargo check`*
*Edited relevant file*
*User accepted the command `cargo check`*
*Semantic searched codebase*
*Viewed [main.rs](file:///home/senke/Documents/veza/veza-chat-server/src/main.rs) *
*Semantic searched codebase*
*Viewed [main.rs](file:///home/senke/Documents/veza/veza-chat-server/src/main.rs) *
*Grep searched codebase*
*Viewed [main.rs](file:///home/senke/Documents/veza/veza-chat-server/src/main.rs) *
*Edited relevant file*
*User accepted the command `cargo check`*
*Edited relevant file*
*Searched filesystem*
*Grep searched codebase*
*Viewed [mod.rs](file:///home/senke/Documents/veza/veza-stream-server/src/core/mod.rs) *
*Viewed [encoding_service.rs](file:///home/senke/Documents/veza/veza-stream-server/src/core/encoding_service.rs) *
*Viewed [encoder.rs](file:///home/senke/Documents/veza/veza-stream-server/src/core/encoder.rs) *
*Viewed [encoding_pool.rs](file:///home/senke/Documents/veza/veza-stream-server/src/core/encoding_pool.rs) *
*Viewed [job.rs](file:///home/senke/Documents/veza/veza-stream-server/src/core/job.rs) *
*Viewed [mod.rs](file:///home/senke/Documents/veza/veza-stream-server/src/transcoding/codecs/mod.rs) *
*Edited relevant file*
*Edited relevant file*
*User accepted the command `rm /home/senke/Documents/veza/veza-stream-server/src/core/encoder.rs`*
*User accepted the command `cargo check`*
*Edited relevant file*
*Checked command status*
*Listed directory [veza](file:///home/senke/Documents/veza) *
*User accepted the command `cargo check`*
*Checked command status*
*Listed directory [veza-stream-server](file:///home/senke/Documents/veza/veza-stream-server) *
*Viewed [POST_REMEDIATION_REPORT.md](file:///home/senke/Documents/veza/POST_REMEDIATION_REPORT.md) *
*Viewed [REPORT_STATUS_2025_12_06.md](file:///home/senke/Documents/veza/REPORT_STATUS_2025_12_06.md) *
*User accepted the command `mkdir -p docs`*
*Edited relevant file*
*User accepted the command `echo "Updating POST_REMEDIATION_REPORT.md"`*
*Edited relevant file*
*Viewed [POST_REMEDIATION_REPORT.md](file:///home/senke/Documents/veza/POST_REMEDIATION_REPORT.md) *
*Viewed [POST_REMEDIATION_REPORT.md](file:///home/senke/Documents/veza/POST_REMEDIATION_REPORT.md) *
*Edited relevant file*