Channel adapters: SDD
Không có interface kênh, không có hàm notify(). Domain gọi thẳng sendEmail()/fireEmail() ở api.conan.school/src/shared/email/send.ts, và trong đó là lời gọi duy nhất tới nhà cung cấp: env.EMAIL.send(...) (binding [[send_email]] name = "EMAIL" trong api.conan.school/wrangler.toml). Thiếu binding thì sendEmail ghi lượt gửi hỏng chứ không ném lỗi.
Phần đã đúng sẵn và nên giữ khi tách tầng:
- NOTIF-CH-02: chỉ một nhà cung cấp; gói
resendđã gỡ khỏipackage.jsoncủa api (04.09.2026). - NOTIF-CH-03 cho riêng email:
sendEmailkhông ném lỗi, trả kết quả cócode, và ghi sổ cả lượt hỏng.
Khi xây
Tầng kênh nên nằm cạnh send.ts và nhận EmailKind (hoặc một kiểu danh mục rộng hơn) làm khoá, để catalog vẫn là nguồn sự thật duy nhất về "có những loại tin nào".