feat(embed-slots): soft-delete slots — admin entry, ov shutdown via enabled=false snapshot

- 契约 deleteEmbedSlot(DELETE /admin/embed-slots/{id} → 204 幂等;admin 专属)
- cn schema:embed_slots.deletedAt(迁移 20260923120000,本地已应用)
- softDelete:乐观锁 claim + outbox slot.updated(payload enabled 强制 false
  ——ov 副本无墓碑,enabled=false 快照即公开端 404 下线;priority=high)+ audit
- 列表/加载/更新过滤 deletedAt → 同码 404
- Admin 列表操作「删除」(确认:已接入网站将停止展示、不可恢复)
- API 56/56、admin 87/87 + build 全绿

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-09-23 13:37:39 +08:00
parent aa366c4268
commit 903962a46b
12 changed files with 205 additions and 142 deletions
+5
View File
@@ -23,3 +23,8 @@ export function fetchCreateEmbedSlot(data: Api.EmbedSlot.CreatePayload) {
export function fetchUpdateEmbedSlot(id: string, data: Api.EmbedSlot.UpdatePayload) {
return request.patch<Api.EmbedSlot.Item>({ url: `/v1/admin/embed-slots/${id}`, data })
}
/** 软删除展示位(deletedAt 标记:列表隐藏、ov 快照下线;幂等 204) */
export function fetchDeleteEmbedSlot(id: string) {
return request.del<void>({ url: `/v1/admin/embed-slots/${id}` })
}