feat(admin): photo upload in album photos tab (same staging pipeline as app)

- 照片页签工具栏加「上传照片」(多选 jpeg/png/heic)→ /v1/uploads
  init → PUT staging → complete(clientTaskId 幂等;categoryId 随当前分类筛选)
- 逐张结果:部分成功语义(成功 N 张 toast + 失败明细前 3 条);完成后 reload
- 类型 UploadInitPayload/UploadSession/UploadCompleteResponse + api/uploads.ts
- 问题1 修复说明:详情页 404 系并行部署把 2618ad3 server 覆盖回 8e674a9,
  已重滚双栈至 ui06-2618ad3(assets 端点恢复 200,详情页零失败请求)

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-09-23 11:54:26 +08:00
parent 7adc1b0858
commit c1869d7314
5 changed files with 132 additions and 2 deletions
+18
View File
@@ -0,0 +1,18 @@
/**
* 照片直传域(对齐 @photo/contracts tags [uploads]):
* init(预签名)→ PUT staging → complete(受理;处理异步)。
* 管理端「上传照片」与 App 同链路(clientTaskId 幂等)。
*/
import request from '@/utils/http'
/** 初始化照片直传(返回 staging 直传凭证) */
export function fetchInitUpload(data: Api.Album.UploadInitPayload) {
return request.post<Api.Album.UploadSession>({ url: '/v1/uploads', data })
}
/** 完成直传(服务端核验后受理照片处理;返回 photoId) */
export function fetchCompleteUpload(uploadId: string) {
return request.post<Api.Album.UploadCompleteResponse>({
url: `/v1/uploads/${uploadId}/complete`
})
}