- Ya
- 5 Agosti 2026, 18:02 UTC
- Mwandishi
- Kamo
- Ahadi ya
- d95ea47
Adds the spine the lead Communications tab reads from. LEAD_CONTACT_POINTS records every phone number and e-mail a lead has ever had, as a window with activeFrom/activeTo. LEAD_COMMUNICATIONS records the durable link between a lead and one call, voicemail, text or e-mail, written at the moment it happens against the contact points live at that moment — so changing a lead's number binds future traffic only and leaves history exactly as it was. PHONE_CALL_LOG is the call record the platform never had: RECORDINGS only has a row when audio was captured, so missed and un-recorded calls left no trace. ContactCanon is the single definition of "the same number" for the whole platform; LeadController.canonicalPhone now delegates to it so reverse lookup and communication matching cannot disagree. LeadContactPointService and LeadCommunicationLinker are deliberately NOT stereotypes — a shared-lib @Service needing a repository fails context startup in every service that has not added the package, which has taken production down three times. The owning services declare the beans; LeadService takes them @Autowired(required=false) so it still wires everywhere else.