mirror of
https://dev.azure.com/globalhealthx/EMR/_git/helix-engage-server
synced 2026-04-11 18:08:16 +00:00
Adds a new sidecar endpoint that forces regeneration of a lead's
aiSummary + aiSuggestedAction. Triggered by the call-desk Appointment
and Enquiry forms when an agent explicitly edits the caller's name —
the previous summary was built against stale identity and needs to be
refreshed from the corrected record.
Scope:
- src/call-events/lead-enrich.controller.ts (new): POST
/api/lead/:id/enrich. Fetches the lead fresh via
findLeadByIdWithToken, runs AiEnrichmentService.enrichLead() with
recent activities for context, persists the new summary via
updateLeadWithToken, and optionally invalidates the Redis
caller-resolution cache for the phone (if provided in the request
body) so the next incoming call does a fresh platform lookup.
- src/platform/platform-graphql.service.ts:
- Added findLeadByIdWithToken. Selects staging-aligned field names
(status/source/lastContacted) rather than the older
leadStatus/leadSource/lastContactedAt names — otherwise the query
is rejected by the deployed schema. Includes a fallback query
shape in case a future platform version exposes `lead(id)`
directly instead of `leads(filter: ...)`.
- Fixed updateLeadWithToken response fragment to drop the broken
`leadStatus` field selection. Every call to this method was
failing against staging because the fragment asked for a field
the schema no longer has.
- src/call-events/call-events.module.ts: registered
LeadEnrichController and imported CallerResolutionModule so the
new controller can inject CallerResolutionService for Redis cache
invalidation.
The other field-rename issues in platform-graphql.service.ts
(findLeadByPhone/findLeadByPhoneWithToken/updateLead still select
leadStatus+leadSource and will keep failing against staging) are
deliberately untouched here — separate follow-up hotfix to keep this
commit focused on the enrich flow.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
20 lines
937 B
TypeScript
20 lines
937 B
TypeScript
import { Module } from '@nestjs/common';
|
|
import { PlatformModule } from '../platform/platform.module';
|
|
import { AiModule } from '../ai/ai.module';
|
|
import { CallerResolutionModule } from '../caller/caller-resolution.module';
|
|
import { CallEventsService } from './call-events.service';
|
|
import { CallEventsGateway } from './call-events.gateway';
|
|
import { CallLookupController } from './call-lookup.controller';
|
|
import { LeadEnrichController } from './lead-enrich.controller';
|
|
|
|
@Module({
|
|
// CallerResolutionModule is imported so LeadEnrichController can
|
|
// inject CallerResolutionService to invalidate the Redis caller
|
|
// cache after a forced re-enrichment.
|
|
imports: [PlatformModule, AiModule, CallerResolutionModule],
|
|
controllers: [CallLookupController, LeadEnrichController],
|
|
providers: [CallEventsService, CallEventsGateway],
|
|
exports: [CallEventsService, CallEventsGateway],
|
|
})
|
|
export class CallEventsModule {}
|