コンテンツにスキップ

通知基盤(Resend)

最終更新: 2026-08-23

Greco のトランザクション通知は Resend を送信境界にし、送信可否と送信結果をアプリ側で管理します。メール本文は保存しませんが、notification_logs には宛先と件名を平文で残します。

mig227 の契約

  • 通知要求は notification_logs に記録し、テナント・種別・to_emailsubject・状態・プロバイダーのメッセージ ID・エラー・作成日時・作成者を保存します。宛先ハッシュ列と再試行回数列はありません。
  • Resend の API キーが無い、送信元が設定されていない、または対象の通知種別が許可されていない場合は fail-closed で送信しません。
  • 合成ドメインや開発用ドメインは本番送信をブロックします。members.waste-link.local などのログイン用合成アドレスを外部へ送らないでください。
  • 外部 API の失敗は通知済みへ倒さず、status=failederrornotification_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) / 公開オンボーディング