feat: index Meilisearch customer_contact + sync contacts + onglet NDD
MeilisearchService :
- Nouvel index customer_contact (searchable: firstName, lastName, fullName,
email, phone, role / filterable: customerId, isBillingEmail)
- indexContact(), removeContact(), searchContacts()
- serializeContact() avec tous les champs
SyncController :
- Route POST /admin/sync/contacts : sync tous les CustomerContact
dans Meilisearch (setupIndexes + indexContact par contact)
- totalContacts ajouté dans index() via EntityManager
Template admin/sync/index.html.twig :
- Bloc "Contacts" violet avec compteur et bouton Synchroniser
Template admin/clients/show.html.twig :
- Nouvel onglet "Noms de domaine" : table des Domain liés au client
(fqdn, registrar, Cloudflare, gestion, facturation, expiration)
- Expiration colorée : rouge si expiré, jaune si < 30j, gris sinon
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>