Parent : #2191 — ADR : #2197 (ADR 010 v2.0, Option E / Scénario B) — GO user 2026-05-29 (avec override Q1)
Scope (Phase 2 du RESPEC #2191)
Prototype greenfield du store unifié. Aucun code Postgres actuellement (pg absent du codebase — vérifié par review po-2025).
- DB unique : un seul Postgres sur ai-01, exposé via sous-domaine myia.io dédié (
pg.myia.io / db.myia.io). PAS de réplication (override user Q1 — voir Décision ci-dessous).
- Exposition : DNS → ai-01 + SSL/TLS natif Postgres (option
pgbouncer pour pooling). ⚠️ Postgres = protocole TCP natif, pas le reverse proxy HTTP IIS qui fronte embeddings/qdrant/mcp-tools — exposition à câbler spécifiquement.
- Schéma Postgres :
conversations (PK task_id), messages (PK id, tool_calls JSONB). Pas de pgvector.
- Writer path : étendre
SkeletonCacheService.addOrUpdate() (skeleton-cache.service.ts:112) → upsert Postgres + payload message_id côté Qdrant. Throttle ~30s (Q7).
- Reader path : recherche 2-temps Qdrant ANN → JOIN Postgres dans
conversation_browser.
- Backward compat : skeleton-cache local reste fonctionnel pendant la transition (30j).
Décision user 2026-05-29 (débloque la Phase 2)
| Q |
Sujet |
Décision |
| Q1 |
Réplication |
OVERRIDE → DB unique exposée via sous-domaine myia.io, AUCUNE réplication. Résilience = GDrive + backup 30j + ré-ingestion depuis sources (#2428). |
| Q2 |
Hosting |
Docker sur ai-01 ✅ |
| Q3 |
Rétention backup |
30 jours ✅ |
| Q4 |
Failover |
Simplifié — plus de promotion replica ; restore backup + ré-ingestion ✅ |
| Q5 |
Backfill message_id |
Nullable + progressif ✅ |
| Q6 |
Texte messages |
Dupliquer dans Postgres ✅ |
| Q7 |
Throttle GDrive 30s |
Suffisant ✅ |
Estimation (review po-2025, Sprint #9)
~700-900 LOC + ~200 LOC tests, ~3-4 sessions. (Légèrement réduit : pas de setup réplication/failover.)
Critères d'acceptation
Owner suggéré : po-2025 ou po-2026 (expertise MCP). Model : sonnet/opus. Statut : DÉBLOQUÉ, prêt à dispatcher.
Parent : #2191 — ADR : #2197 (ADR 010 v2.0, Option E / Scénario B) — GO user 2026-05-29 (avec override Q1)
Scope (Phase 2 du RESPEC #2191)
Prototype greenfield du store unifié. Aucun code Postgres actuellement (
pgabsent du codebase — vérifié par review po-2025).pg.myia.io/db.myia.io). PAS de réplication (override user Q1 — voir Décision ci-dessous).pgbouncerpour pooling).conversations(PKtask_id),messages(PKid,tool_callsJSONB). Pas de pgvector.SkeletonCacheService.addOrUpdate()(skeleton-cache.service.ts:112) → upsert Postgres + payloadmessage_idcôté Qdrant. Throttle ~30s (Q7).conversation_browser.Décision user 2026-05-29 (débloque la Phase 2)
message_idEstimation (review po-2025, Sprint #9)
~700-900 LOC + ~200 LOC tests, ~3-4 sessions. (Légèrement réduit : pas de setup réplication/failover.)
Critères d'acceptation
Owner suggéré : po-2025 ou po-2026 (expertise MCP). Model : sonnet/opus. Statut : DÉBLOQUÉ, prêt à dispatcher.