退店処理とメディア管理
概要
キャストを「退店」にしたときのデータの扱いと、メディアの非公開化・物理削除の違いです。
プライバシー上、退店時の自動非公開化はデフォルト挙動です。
退店(retired)時に起こること
- データベース — レコードは論理削除(物理削除しません)。出勤履歴等は保持されます。
- 公開サイト — キャストは一覧・詳細から即座に非表示になります。
- メディアアクセス制限 — Feature Toggle によって挙動が異なります(下記参照)。
メディアアクセス制限の挙動(Toggle 別)
| Toggle | 退店時の制限 | 直接 URL へのアクセス |
|---|---|---|
ENABLE_CLOUDFLARE_IMAGES=true |
CF Images API が requireSignedURLs=true を設定 |
403 を返す(署名なし URL が無効化される) |
ENABLE_CLOUDFLARE_IMAGES=false(R2 / デフォルト) |
自動制限なし(R2 にはオブジェクト ACL がない) | Workers プロキシ(/api/public/media/*)経由は 403。ただし R2 バケット公開 URL(R2_PUBLIC_DOMAIN)へは引き続きアクセス可能 |
なぜデータを残すのか
- 出戻り(再入店)時の復元が容易
- 将来的な売上分析などへの拡張
- 誤操作時の復旧
物理削除(任意)
ストレージ容量を解放する場合、退店キャストの詳細画面から「画像・動画を完全に削除」できます。
| 操作 | API |
|---|---|
| メディア物理削除 | DELETE /api/cmm/casts/:id/media |
物理削除後は 復元できません。実行前に必ず確認してください。
退店の取り消し
ステータスを active に戻すことで再公開できる設計です。
| Toggle | 再入店後の画像表示 |
|---|---|
| CF Images ON | requireSignedURLs=true を解除する処理は自動実行されません。画像を再アップロードしてください。 |
| R2 モード | 物理削除していなければ元の URL のまま表示されます。削除済みの場合は再アップロードが必要です。 |
注意事項
- 退店 ≠ メディアの物理削除です。容量削減が必要な場合のみ物理削除を実行してください。
- コンプライアンスのため、年齢確認のバイパスやメディア制限の無効化は行わないでください。
退店操作の手順
- キャスト編集画面(
/cmm/casts/:id)を開く - 「ステータス」セレクトを
退店に変更して「保存」する - API がメディアアクセスを制限する(CF Images/Stream ON 時のみ
requireSignedURLs = trueを設定。R2 モードでは Workers プロキシ経由のみ制限される — 上記「メディアアクセス制限の挙動」参照) - フロントに当該キャストは表示されなくなる(
status != 'retired'条件で除外)
メディア物理削除
退店後、ストレージから完全に削除したい場合は「危険ゾーン → メディアを完全削除」ボタンを使用します。
- 削除後は復元できません
- 退店済みキャストのみボタンが表示されます
再入店時の手順
- キャスト編集画面でステータスを
在籍中に戻す - 画像・動画を再アップロードする(退店時に URL が無効化されているため、再アップロードが必要です)