903962a46b
- 契约 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>
31 lines
1.4 KiB
TypeScript
31 lines
1.4 KiB
TypeScript
/**
|
||
* 展示位管理接口(对齐 @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}` })
|
||
}
|