[M4] SQLite contacts unifiés : schéma + CRUD UnifiedContact / BridgedIdentity (ST-M4-02) #51

Closed
opened 2026-04-06 01:36:53 +00:00 by charles · 0 comments
Owner

Contexte

Persistance locale des contacts unifiés et identités bridgées dans SQLite (~/.local/share/fractal-plus/contacts.db), avec scoring de similarité pour les suggestions automatiques (ST-M4-02, ST-M4-04, SF-M4-06).

Critères d'acceptation

  • Base SQLite créée à ~/.local/share/fractal-plus/contacts.db
  • Tables : unified_contacts, bridged_identities, identity_rooms
  • CRUD complet : créer, lire, mettre à jour, supprimer un contact unifié
  • Lier/délier des BridgedIdentity à un UnifiedContact
  • similarity_score(a, b) : score entre deux BridgedIdentity de bridges différents
    • Similarité de nom (Levenshtein normalisé) × 0.4
    • Numéro de téléphone commun × 0.5
    • Même serveur de bridge × 0.1
  • Suggestions automatiques : paires de score > 0.6 proposées à l'utilisateur

Notes techniques

CREATE TABLE unified_contacts (id TEXT PRIMARY KEY, display_name TEXT NOT NULL, ...);
CREATE TABLE bridged_identities (user_id TEXT PRIMARY KEY, contact_id TEXT REFERENCES unified_contacts(id), ...);
CREATE TABLE identity_rooms (user_id TEXT, room_id TEXT, PRIMARY KEY (user_id, room_id));
  • Dépendances : rusqlite ou sqlx
  • Dépend de #48 (BridgeType + modèle)
## Contexte Persistance locale des contacts unifiés et identités bridgées dans SQLite (`~/.local/share/fractal-plus/contacts.db`), avec scoring de similarité pour les suggestions automatiques (ST-M4-02, ST-M4-04, SF-M4-06). ## Critères d'acceptation - [ ] Base SQLite créée à `~/.local/share/fractal-plus/contacts.db` - [ ] Tables : `unified_contacts`, `bridged_identities`, `identity_rooms` - [ ] CRUD complet : créer, lire, mettre à jour, supprimer un contact unifié - [ ] Lier/délier des `BridgedIdentity` à un `UnifiedContact` - [ ] `similarity_score(a, b)` : score entre deux `BridgedIdentity` de bridges différents - Similarité de nom (Levenshtein normalisé) × 0.4 - Numéro de téléphone commun × 0.5 - Même serveur de bridge × 0.1 - [ ] Suggestions automatiques : paires de score > 0.6 proposées à l'utilisateur ## Notes techniques ```sql CREATE TABLE unified_contacts (id TEXT PRIMARY KEY, display_name TEXT NOT NULL, ...); CREATE TABLE bridged_identities (user_id TEXT PRIMARY KEY, contact_id TEXT REFERENCES unified_contacts(id), ...); CREATE TABLE identity_rooms (user_id TEXT, room_id TEXT, PRIMARY KEY (user_id, room_id)); ``` - Dépendances : `rusqlite` ou `sqlx` - Dépend de #48 (BridgeType + modèle)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
charles/my-fractal#51
No description provided.