スターターアプリ

組織 credit ledger

組織共有 credit、append-only 会計、期限、冪等な消費、refund を理解します。

スターターのコミット 7d452a6 と同期済みです。

credit は組織に属し、member は一つの残高を共有します。ledger は append-only です。行を更新・削除せず、直接 SQL で src/services/credit.ts を迂回しません。

grant は一意な transaction number と任意の期限を持つ正数行です。spend は組織 advisory lock 内で全 ledger を再生し、期限が近い grant から使い、利用可能残高が十分な場合だけ負数行を追加します。一度の spend が :part:n 行に分かれても API は一つの論理 transaction にまとめます。refund は元 spend に紐づく補償行です。

balance_after は挿入時の会計総額で、期限切れを除いた現在の spendable 値とは限りません。組織 summary から available、granted、consumed、expired を取得してください。

金銭・credit の変更には安定した business idempotency key が必須で、同じ call 2 回でも ledger effect は一度です。subscription 更新と Stripe fulfillment も決定的番号を使い、admin grant は上限と監査があります。

有料機能追加時は config で cost を計算し、entitlement を確認し、credit service で消費、domain 行に root transaction を保存し、後続失敗なら refund を追加します。

組織 credit ledger · Sushi SaaS