通知基盤(Resend)¶
最終更新: 2026-08-23
Greco のトランザクション通知は Resend を送信境界にし、送信可否と送信結果をアプリ側で管理します。メール本文は保存しませんが、notification_logs には宛先と件名を平文で残します。
mig227 の契約¶
- 通知要求は
notification_logsに記録し、テナント・種別・to_email・subject・状態・プロバイダーのメッセージ ID・エラー・作成日時・作成者を保存します。宛先ハッシュ列と再試行回数列はありません。 - Resend の API キーが無い、送信元が設定されていない、または対象の通知種別が許可されていない場合は fail-closed で送信しません。
- 合成ドメインや開発用ドメインは本番送信をブロックします。members.waste-link.local などのログイン用合成アドレスを外部へ送らないでください。
- 外部 API の失敗は通知済みへ倒さず、
status=failedとerrorをnotification_logsに残します。再試行回数をこの表で追跡する実装はありません。 notification_logsの SELECT は自テナントの admin のみに許可され、通知要求の INSERT は admin / normal の自テナント操作に限られます。
秘密と環境¶
RESEND_API_KEY は Wrangler secret または通知スクリプトの実行環境へ置き、リポジトリ、平文 vars、会話ログへ書きません。送信元、環境名、許可リストは環境ごとに分離します。dev のシード用 login_id は通知先として利用しません。
現在の用途と未実装範囲¶
招待・運用通知の共通基盤と監査ログは実装済みです。月次請求書のメール送付は未実装で、請求の確定は排出事業者ポータルへ即時公開する契約です。送信済みと表示する UI はありません。
障害時は notification_logs の status / error を確認し、送信先・送信元・secret・合成ドメインブロックを切り分けます。再送の回数や履歴はこの表からは確認できません。
関連: secrets と鍵の一覧 / 月次請求(AR) / 公開オンボーディング