ultisuite-backend/project-plan/contacts.md

3.5 KiB

Contacts

Équivalent : Google Contacts Statut : Partiel (API proxy CardDAV)


Résumé

Carnet d'adresses unifié partagé entre tous les services Ulti Suite. Gère les contacts personnels, professionnels, groupes, et synchronisation avec sources externes (CardDAV, Google, etc.).

État d'implémentation réel (mai 2026)

Déjà implémenté

  • API backend montée sous /api/v1/contacts (si Nextcloud activé).
  • Endpoints list carnets, list contacts, create contact, delete contact, search.
  • Client CardDAV Nextcloud intégré côté serveur.

Partiel / incomplet

  • Pas d'update contact avec ETag.
  • Pas de sync incrémentale via sync-token.
  • Recherche globale suite ne s'appuie pas encore pleinement sur CardDAV.

Non commencé

  • Import/export vCard et CSV côté API produit final.
  • Fusion de doublons côté backend.
  • Enrichissement interactions (mails/réunions/fichiers) en API contact.

Points de différenciation vs Google Contacts

  • Carnet unifié cross-services natif (mail, agenda, meet, drive)
  • Import/export CardDAV bidirectionnel
  • Champs personnalisés illimités et typés
  • Fusion intelligente de doublons (IA-assistée)
  • Tags et groupes dynamiques (filtres auto-mis à jour)

Fonctionnalités

Core

  • CRUD contacts (nom, emails, téléphones, adresses, organisations)
  • Groupes / étiquettes
  • Photo de profil
  • Champs personnalisés
  • Historique d'interactions (derniers mails, réunions, fichiers partagés)

Sync & import

  • Import/export vCard, CSV
  • Sync CardDAV bidirectionnelle
  • Import depuis Google Contacts
  • Détection et fusion de doublons
  • Auto-complétion depuis l'historique mail

Intégration suite

  • Suggestions dans Ultimail (compose, destinataires)
  • Disponibilité agenda dans la fiche contact
  • Fichiers partagés (Ultidrive) dans la fiche
  • Lien direct vers Ultimeet

Intégration Nextcloud — étude technique

APIs CardDAV disponibles (confirmé)

Même instance Nextcloud qu'Ultidrive et Agenda. Endpoints :

Opération Méthode Endpoint
Lister carnets PROPFIND /remote.php/dav/addressbooks/users/{user}/
Lister contacts REPORT (addressbook-query) .../addressbooks/users/{user}/{book}/
Créer contact PUT .../addressbooks/users/{user}/{book}/{uid}.vcf
Modifier contact PUT Même (avec If-Match etag)
Supprimer contact DELETE Même
Sync incrémentale REPORT (sync-collection) Via sync-token
Recherche REPORT (addressbook-query) Filtres sur FN, EMAIL, TEL, ORG, etc.

Champs indexés (recherche rapide)

BDAY, UID, N, FN, TITLE, ROLE, NOTE, NICKNAME, ORG, CATEGORIES, EMAIL, TEL, IMPP, ADR, URL, GEO, CLOUD, X-SOCIALPROFILE

Avantages

  • Carnet d'adresses système auto-populé avec tous les utilisateurs NC
  • Partage de carnets entre utilisateurs
  • Interopérable avec clients CardDAV (Apple Contacts, DAVx5, Thunderbird)
  • Même backend que fichiers et calendrier → une seule instance à maintenir

Briques technologiques envisagées

Besoin Option retenue Alternatives
Backend CardDAV Nextcloud sabre/dav (même instance) Radicale, Baikal
Client CardDAV (JS) tsdav (TypeScript) fetch + XML custom
Parsing vCard vcard4 ou ical.js
Recherche avancée Meilisearch (indexation custom) NC search intégré
Auth Partagée via Ulti Suite (OIDC → NC)