feat: Email ingestion processing service (#149) #156
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Relates to #149
Scope
Create the core processing service that orchestrates the email-to-record pipeline.
EmailIngestionService
Main orchestration service in
domain/email-ingestion.service.ts:UserProfileRepository.getByEmail()(case-insensitive). Reject unregistered senders.email_ingestion_queuestatus through lifecycle (pending -> processing -> completed/failed).EmailIngestionRepository
Database access layer in
data/email-ingestion.repository.ts:insertQueueEntry(),updateQueueStatus(),getQueueEntry()insertPendingAssociation(),getPendingAssociations(),resolvePendingAssociation()findByEmailId()for deduplicationmapRow()pattern for snake_case -> camelCaseFiles
backend/src/features/email-ingestion/domain/email-ingestion.service.tsbackend/src/features/email-ingestion/data/email-ingestion.repository.tsAcceptance Criteria
Milestone: Email Ingestion Processing Service
Phase: Execution | Agent: Feature Agent | Status: PASS
Completed
data/email-ingestion.repository.ts): Queue CRUD operations (insertQueueEntry, updateQueueStatus, getQueueEntry, findByEmailId, getRetryableEntries), pending vehicle association management (insert, get, resolve), standard mapRow() patterndomain/email-ingestion.service.ts): Full processing pipeline:Quality
e7f3728(refs #156)Verdict: PASS | Next: Quality review