veza/chat_exports/veza_ag_chat_2.md

443 lines
No EOL
15 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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*