feat: add email ingestion processing service and repository (refs #156)
- EmailIngestionRepository: queue CRUD (insert, update status, get, find by email ID), pending vehicle association management, mapRow pattern for snake_case -> camelCase conversion - EmailIngestionService: full processing pipeline with sender validation, attachment filtering (PDF/PNG/JPG/JPEG/HEIC, <10MB), dual OCR classification (fuel vs maintenance), vehicle association logic (single-vehicle auto-associate, multi-vehicle pending), retry handling (max 3 attempts), and templated email replies (confirmation, failure, pending vehicle) - Updated controller to delegate async processing to service - Added receipt_processed/receipt_failed/receipt_pending_vehicle to TemplateKey union type Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,14 +1,19 @@
|
||||
/**
|
||||
* @ai-summary Email ingestion feature barrel export
|
||||
* @ai-context Exports webhook routes for Resend inbound email processing
|
||||
* @ai-context Exports webhook routes, services, and types for Resend inbound email processing
|
||||
*/
|
||||
|
||||
export { emailIngestionWebhookRoutes } from './api/email-ingestion.routes';
|
||||
export { EmailIngestionService } from './domain/email-ingestion.service';
|
||||
export { EmailIngestionRepository } from './data/email-ingestion.repository';
|
||||
export { ResendInboundClient } from './external/resend-inbound.client';
|
||||
export type { ParsedEmailResult, ParsedEmailAttachment } from './external/resend-inbound.client';
|
||||
export type {
|
||||
EmailIngestionQueueRecord,
|
||||
EmailIngestionStatus,
|
||||
EmailProcessingResult,
|
||||
ExtractedReceiptData,
|
||||
PendingVehicleAssociation,
|
||||
ResendWebhookEvent,
|
||||
ResendWebhookEventData,
|
||||
} from './domain/email-ingestion.types';
|
||||
|
||||
Reference in New Issue
Block a user