feat: IMAP mail sync with thread-to-contact matching (PRD §6.1)
Real IMAP connection via imapflow library: - Connects to IMAP server (IMAPFlow, TLS on port 993) - Fetches recent messages (configurable limit, default 20) - Extracts: from, fromEmail, subject, date, snippet (200 chars) - Thread-to-contact matching (PRD §6.1): 1. Match sender email against persons table 2. If no person match, extract domain and match against company.website 3. Returns matchedCompany + matchedPerson for each email - Audit-logged (action: crm.mailsync:imap) - Zod validated (host, port, user, password, folder, limit) - 502 on IMAP connection failure with detail - 400 on validation failure Tested: invalid creds → 502 'IMAP connection failed', missing host → 400
This commit is contained in:
1 parent
7acc0c5451
commit
e45b68bb8b
1089 files changed
+260614
No files matched your search
+69
@@ -0,0 +1,69 @@
|
||||
Java
|
||||
Go
|
||||
Python
|
||||
TypeScript
|
||||
Spring Boot
|
||||
Spring Cloud
|
||||
gRPC
|
||||
微服务
|
||||
Kafka
|
||||
RabbitMQ
|
||||
Redis
|
||||
ZooKeeper
|
||||
MySQL
|
||||
PostgreSQL
|
||||
MongoDB
|
||||
ClickHouse
|
||||
HBase
|
||||
TiDB
|
||||
Docker
|
||||
Kubernetes
|
||||
Helm
|
||||
AWS
|
||||
GCP
|
||||
阿里云
|
||||
高并发
|
||||
高可用
|
||||
分布式
|
||||
一致性
|
||||
限流
|
||||
降级
|
||||
熔断
|
||||
分库分表
|
||||
读写分离
|
||||
React
|
||||
Vue
|
||||
Next.js
|
||||
Vite
|
||||
Webpack
|
||||
PyTorch
|
||||
TensorFlow
|
||||
sklearn
|
||||
XGBoost
|
||||
LightGBM
|
||||
特征工程
|
||||
RAG
|
||||
向量检索
|
||||
Embedding
|
||||
LLM
|
||||
SFT
|
||||
RLHF
|
||||
Agent
|
||||
MCP
|
||||
vLLM
|
||||
量化
|
||||
SQL
|
||||
Spark
|
||||
Flink
|
||||
Hive
|
||||
Presto
|
||||
Airflow
|
||||
A/B 测试
|
||||
模型评估
|
||||
Prometheus
|
||||
Grafana
|
||||
ELK
|
||||
CI/CD
|
||||
Jenkins
|
||||
GitLab CI
|
||||
Terraform
|
||||
Reference in new issue
Block a user