diff --git a/apps/web/src/api/scripts/types.ts b/apps/web/src/api/scripts/types.ts index 8fa0f30e4..58741dc36 100644 --- a/apps/web/src/api/scripts/types.ts +++ b/apps/web/src/api/scripts/types.ts @@ -1,24 +1,97 @@ /** - * 文案库 API — 类型定义 - * 对接后端 /api/v1/scripts + * 文案库 API — 类型定义(#1811 v2 完整字段版) + * 字段对齐后端契约:title / content / segments / tags / title_text / title_category / title_config + * 同时保留 char_count / use_count / timestamps 等展示字段 */ + +/** 标题配置(字体、颜色、位置、字号) */ +export interface ScriptTitleConfig { + /** 字体预设 key,如 "default" / "bold" / "handwritten" */ + font?: string + /** 文字颜色(CSS color) */ + color?: string + /** 描边色 */ + stroke?: string + /** 位置:top / center / bottom */ + position?: "top" | "center" | "bottom" + /** 字号(px) */ + size?: number + /** 是否加粗 */ + bold?: boolean + /** 是否斜体 */ + italic?: boolean +} + +/** 文案分类(可枚举,也支持自定义) */ +export type ScriptCategory = + | "promo" // 营销推广 + | "vlog" // Vlog/日常 + | "knowledge" // 知识科普 + | "story" // 故事剧情 + | "emotion" // 情感语录 + | "other" // 其他 + +export const SCRIPT_CATEGORY_LABEL: Record = { + promo: "营销推广", + vlog: "Vlog 日常", + knowledge: "知识科普", + story: "故事剧情", + emotion: "情感语录", + other: "其他", +} + +/** 文案条目 */ export interface ScriptItem { id: string + /** 名称(标题) */ title: string + /** 正文 */ content: string - char_count: number + /** 分段(按段落切分,供后端/生成步骤逐段使用) */ + segments?: string[] + /** 标签(逗号分隔或数组,列表展示用 Tag) */ + tags?: string[] + /** 配套标题文本(选填,"使用"跳创作页时会预填到标题) */ + title_text?: string + /** 分类 */ + title_category?: ScriptCategory + /** 标题样式配置(字体/颜色/位置/字号) */ + title_config?: ScriptTitleConfig + /** 正文字符数(后端返回,前端用于展示) */ + char_count?: number + /** 使用次数(后端返回) */ + use_count?: number created_at: string updated_at?: string } +/** 列表查询参数(支持搜索/分类/分页) */ +export interface ScriptListParams { + page?: number + page_size?: number + /** 标题/正文模糊搜索 */ + keyword?: string + /** 分类筛选 */ + category?: ScriptCategory | "all" + /** 标签筛选 */ + tag?: string +} + +/** 列表响应 */ export interface ScriptListResponse { items: ScriptItem[] total: number + page: number + page_size: number } -export interface CreateScriptRequest { +/** 创建/编辑请求 */ +export interface ScriptUpsertRequest { title: string content: string + segments?: string[] + tags?: string[] + title_text?: string + title_category?: ScriptCategory + title_config?: ScriptTitleConfig } - -export type UpdateScriptRequest = Partial