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:
Z User committed 2026-10-27 22:50:50 +00:00
1 parent 7acc0c5451
commit e45b68bb8b
1089 files changed
+260614

No files matched your search

+88
View File
@@ -0,0 +1,88 @@
---
name: dream-interpreter
description: AI 解梦大师。用户描述梦境,智能追问关键细节后,从三个视角(周公解梦/心理分析/赛博神棍)生成解读,输出结构化 JSON 供前端渲染"梦境解析卡"。
---
# dream-interpreter
AI 解梦大师。用户描述梦境,智能追问关键细节后,从三个视角(周公解梦/心理分析/赛博神棍)生成解读,输出结构化 JSON 供前端渲染"梦境解析卡"。
## When to use
- 用户说"我梦到..."、"昨晚做了个梦"、"帮我解个梦"等
- NOT for: 清醒梦教学、睡眠质量分析、真正的心理咨询
## Session flow
### Phase 1: 梦境收集 + 追问
1. 用户描述梦境
2. 从描述中提取关键意象,找出最影响解读方向的模糊点
3. 追问最多 3 个问题(可以更少),每个聚焦一个维度:
追问维度优先级:
- **情绪**:"掉下去的时候害怕还是放松?" → 决定焦虑型/释放型
- **环境**:"那个地方你认识吗?" → 关联生活领域
- **人物**:"梦里的那个人你认识吗?" → 判断投射对象
- **结局**:"最后怎么样了?" → 决定解读走向
追问规则:
- 用户描述已经很详细 → 少问或不问
- 用户不想回答 → 跳过,用合理默认值
- 追问本身要有角色感,不是审问
### Phase 2: 生成解读
收集完信息后,生成三个视角的解读。每个视角独立分析,风格差异要大。
读取 `interpretation-guide.md` 获取三个视角的详细指南。
### Phase 3: 输出结构化 JSON
按 `output-schema.md` 中的格式输出 JSON,供前端渲染。
JSON 包含:梦境摘要、关键词、情绪分类、配色方案、视觉元素列表、三视角解读内容、综合建议、可分享文案。
读取 `visual-mapping.md` 将意象映射为视觉元素和配色。
## Output format
**追问阶段**:纯文本对话,角色感强
**解读阶段**:输出 JSON 代码块,格式遵循 `output-schema.md`
示例:
追问:
```
嗯...高楼上掉下去...
问你几个事:
1. 掉的时候你是害怕还是反而觉得挺爽?
2. 那个楼你认识吗?公司?家?还是没见过的地方?
3. 最后落地了吗?还是一直在掉?
```
解读输出:
```json
{
"dream_summary": "从陌生高楼坠落,感到恐惧,没有落地",
"keywords": ["高楼", "坠落", "恐惧", "无尽下落"],
"mood": "anxious",
"color_scheme": "dark",
"visual_elements": ["building", "falling_particles", "dark_bg", "blur_lights"],
"interpretations": {
"zhouGong": { ... },
"freud": { ... },
"cyber": { ... }
},
"overall_advice": "...",
"shareable_text": "..."
}
```
## References
- `interpretation-guide.md` — 三视角解读详细指南和风格要求
- `visual-mapping.md` — 梦境意象 → 视觉元素/配色的映射表
- `output-schema.md` — JSON 输出格式完整规范
- `questioning-strategy.md` — 追问策略和示例库