feat: 封面模板对接后端 CRUD API,移除 mock 数据
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 45s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 50s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 52s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m9s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m34s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 51s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 19s
AI Code Review / AI Code Review (pull_request) Failing after 1m54s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m52s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m23s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 3m45s
CI/CD Pipeline / CI Gate (pull_request) Successful in 6s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 44s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 1m15s
CI/CD Pipeline / Canary Release to Production (pull_request) Failing after 910h16m14s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 910h17m29s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 910h16m14s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 910h17m30s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 910h16m14s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 910h16m15s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 910h16m15s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 910h16m15s
CI/CD Pipeline / Integration Tests (pull_request) Failing after 910h16m15s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 910h17m35s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 910h19m11s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 910h17m31s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 910h19m13s
CI/CD Pipeline / PR Build Worker Image (pull_request) Failing after 910h17m36s
CI/CD Pipeline / PR Build API Image (pull_request) Failing after 910h17m42s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 910h19m15s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 910h51m46s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 45s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 50s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 52s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m9s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m34s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 51s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 19s
AI Code Review / AI Code Review (pull_request) Failing after 1m54s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m52s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m23s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 3m45s
CI/CD Pipeline / CI Gate (pull_request) Successful in 6s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 44s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 1m15s
CI/CD Pipeline / Canary Release to Production (pull_request) Failing after 910h16m14s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 910h17m29s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 910h16m14s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 910h17m30s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 910h16m14s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 910h16m15s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 910h16m15s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 910h16m15s
CI/CD Pipeline / Integration Tests (pull_request) Failing after 910h16m15s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 910h17m35s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 910h19m11s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 910h17m31s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 910h19m13s
CI/CD Pipeline / PR Build Worker Image (pull_request) Failing after 910h17m36s
CI/CD Pipeline / PR Build API Image (pull_request) Failing after 910h17m42s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 910h19m15s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 910h51m46s
- 新增 api/cover-templates.ts:封装 GET/POST/PUT/DELETE /cover-templates - useStep6Cover.ts:弹窗打开时 fetch 模板列表,CRUD 操作走 API - CoverSettingsModal.tsx:增加 loading/error 状态展示 + 删除按钮(非系统模板) - Step6CoverSettings.tsx:透传 loading/error/delete 属性 - constants.ts:删除 MOCK_COVER_TEMPLATES 硬编码数据
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
/**
|
||||
* 封面模板 CRUD API
|
||||
* 后端路由: /api/v1/cover-templates
|
||||
*/
|
||||
import apiClient from "./client"
|
||||
import type { CoverTemplate } from "@/pages/editing-planner/types"
|
||||
|
||||
export interface CoverTemplateListResponse {
|
||||
items: CoverTemplate[]
|
||||
total: number
|
||||
}
|
||||
|
||||
export interface CoverTemplateCreateRequest {
|
||||
name: string
|
||||
config?: {
|
||||
background_enabled?: boolean
|
||||
background_color?: string
|
||||
portrait_enabled?: boolean
|
||||
title_text?: string
|
||||
subtitle_text?: string
|
||||
mask_enabled?: boolean
|
||||
}
|
||||
}
|
||||
|
||||
export type CoverTemplateUpdateRequest = Partial<CoverTemplateCreateRequest>
|
||||
|
||||
/** 获取封面模板列表 */
|
||||
export async function fetchCoverTemplates(): Promise<CoverTemplateListResponse> {
|
||||
const response = await apiClient.get<CoverTemplateListResponse>("/cover-templates")
|
||||
return response.data
|
||||
}
|
||||
|
||||
/** 创建封面模板 */
|
||||
export async function createCoverTemplate(
|
||||
data: CoverTemplateCreateRequest,
|
||||
): Promise<CoverTemplate> {
|
||||
const response = await apiClient.post<CoverTemplate>("/cover-templates", data)
|
||||
return response.data
|
||||
}
|
||||
|
||||
/** 更新封面模板 */
|
||||
export async function updateCoverTemplate(
|
||||
id: string,
|
||||
data: CoverTemplateUpdateRequest,
|
||||
): Promise<CoverTemplate> {
|
||||
const response = await apiClient.put<CoverTemplate>(`/cover-templates/${id}`, data)
|
||||
return response.data
|
||||
}
|
||||
|
||||
/** 删除封面模板(系统模板不可删) */
|
||||
export async function deleteCoverTemplate(id: string): Promise<void> {
|
||||
await apiClient.delete(`/cover-templates/${id}`)
|
||||
}
|
||||
Reference in New Issue
Block a user