# Send Engine(發送引擎) 此專案為獨立的發送引擎,負責寄送、節流、退信處理與追蹤。文件統一放在 `docs/`。 ## 目標(MVP) - 接收 Member Center 的訂閱事件(activated / unsubscribed / preferences.updated) - 多租戶名單快照(依 tenant/list)且僅增量更新 - 管理 Campaign / Send Job 與排程 - 對接 ESP(SES / SendGrid / Mailgun) - 記錄投遞結果與退信(必要時回寫 Member Center) ## 既定條件 - 與 Member Center 相同框架(C# .NET Core) - Send engine 不提供跨租戶名單查詢 - 事件同步採 event/queue 或 webhook(二擇一即可) - DB:PostgreSQL ## 範圍(第一階段) - 事件 ingest 與名單增量同步 - Campaign / Send Job 基本流程 - Sender Adapter(至少一種 ESP) - 投遞與退信記錄 ## 非目標(暫不處理) - 自建 SMTP server - 跨租戶名單查詢 - 行銷自動化或行為追蹤 ## 文件 - `docs/DESIGN.md`:系統設計總覽、核心模組與資料流 - `docs/FLOWS.md`:主要業務流程(同步、寄送、退信) - `docs/OPENAPI.md`:API 規格說明與補充規則 - `docs/SCHEMA.sql`:資料庫 schema(PostgreSQL) - `docs/TECH_STACK.md`:技術棧與選型 - `docs/INSTALL.md`:安裝、初始化與維運指令 - `docs/USE_CASES.md`:需求用例(角色、情境、驗收) ## 專案結構 ```text mass_mail_engine/ ├── src/ │ ├── SendEngine.Api/ # REST API(事件 ingest、送信、管理 API) │ ├── SendEngine.Installer/ # 安裝與初始化 CLI(migrate/init/admin) │ ├── SendEngine.Application/ # 應用層介面與 DTO │ ├── SendEngine.Infrastructure/# EF Core、ESP Adapter、服務實作 │ └── SendEngine.Domain/ # 領域實體與常數 ├── docs/ # 專案文件 ├── .vscode/ # 本機開發啟動與工作設定 ├── SendEngine.sln # Solution └── README.md ``` ## Build 使用 VS Code `Run Build Task`(預設執行 `dotnet build SendEngine.sln`)。 ## 待確認事項 - 事件系統選擇(Kafka/RabbitMQ/SNS+SQS / Webhook) - ESP 優先順序(SES / SendGrid / Mailgun) - 退信回寫的規則(hard bounce / soft bounce) - 追蹤事件範圍(open / click / unsubscribe)