Files
photo-live/apps/admin/src/api/embedSlots.ts
T
浅念 903962a46b 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>
2026-09-23 13:37:39 +08:00

31 lines
1.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 展示位管理接口(对齐 @photo/contracts tags [embed-slots]:listEmbedSlots /
* createEmbedSlot / updateEmbedSlot,P4b Task 5;仅公司 admin 可用)
*
* - 列表为 createdAt+ID 稳定倒序键集游标
* - PATCH 为部分更新:name/enabled/settings/albumId 任一变更均递增
* configVersion 并触发 slot-state 同步(嵌入端配置版本变化即整体重置)
* - settings 整体替换(提供时字段齐全);albumId null=解绑(公开端 404)
*/
import request from '@/utils/http'
/** 展示位列表(游标分页) */
export function fetchEmbedSlots(params: { cursor?: string; limit?: number }) {
return request.get<Api.EmbedSlot.ListResponse>({ url: '/v1/admin/embed-slots', params })
}
/** 创建展示位(publicToken 服务端生成;初始未绑定、configVersion=1) */
export function fetchCreateEmbedSlot(data: Api.EmbedSlot.CreatePayload) {
return request.post<Api.EmbedSlot.Item>({ url: '/v1/admin/embed-slots', data })
}
/** 更新展示位(部分更新;任一管理面变更递增 configVersion) */
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}` })
}