Skip to content

[#2191] Phase 2 — Prototype store unifié Postgres + Qdrant (schéma + writer + recherche 2-temps) #2426

@myia-ai-01

Description

@myia-ai-01

Parent : #2191ADR : #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

  • Schéma + migration Postgres (Docker ai-01)
  • Exposition via sous-domaine dédié (DNS + SSL natif) validée depuis une 2e machine
  • Prototype fonctionnel (latence < 500ms lecture, < 2s écriture)
  • Recherche 2-temps validée vs skeleton-cache actuel (parité résultats)
  • Backward compat skeleton-cache local

Owner suggéré : po-2025 ou po-2026 (expertise MCP). Model : sonnet/opus. Statut : DÉBLOQUÉ, prêt à dispatcher.

Metadata

Metadata

Assignees

Labels

claude-onlyTasks reserved for Claude Code agents (opus/sonnet) - NOT for Roo schedulersenhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions