fix(ux): #1894 文案/标题数据源全面切到 /api/v1/scripts(P1 阻塞发版) #1971
Reference in New Issue
Block a user
Delete Branch "fix/1894-script-title-source-cleanup"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景
#1894 第一批(PR #1965 已合入)切换文案库后,主人在 staging 实测发现多个页面数据源没切干净:
阻塞 #1894 发版,需要立即修复。
根因定位
api/scripts/scripts.ts中SCRIPTS_API_MOCK = true硬编码,所有文案库消费端走 mock 数据PanelTitleConfig/useStep4Title还在调已废弃的@/api/titlesgetScripts,与共享@/api/scripts类型不一致修复清单
api/scripts/scripts.ts:SCRIPTS_API_MOCK改为环境变量开关(同POINTS_API_MOCK模式,默认 false 走真实 API)api/titles/整个目录 + 孤儿组件TitleLibraryModal.tsx+test/api/titles.test.tspages/ai-avatar/api/aiAvatar.ts:文案 CRUD 方法统一 re-export from@/api/scripts,去重本地实现pages/ai-avatar/types.ts:Script类型改为import("@/api/scripts").ScriptItemAiAvatarPage.tsx内ScriptSelectModalLazy:适配{ items, total }分页响应,page_size:200PanelScript.tsx:手动输入 tab 增加「💾 保存到文案库」按钮(正文前 20 字自动作标题),toast 1s 自动关闭PanelTitleConfig.tsx:标题 AutoComplete 改为从getScripts()取s.title去重候选,label 改为「📚 文案库标题」generate/hooks/useStep4Title/index.ts:userTitles改为从getScripts()映射{ content: s.title }test/pages/GeneratePage.test.tsx:mock 从@/api/titles替换为@/api/scripts验证
待跟进
title_text/title_config字段后,清理api/scripts/types.ts里的残留类型Refs: #1894
CI全绿,自动审批通过。
CI全绿,自动审批通过。
🚀 预览环境已部署
f4aadc5f71to741eaca358根因: 1. api/scripts 中 SCRIPTS_API_MOCK 被硬编码为 true,文案库/AI数字人/智能剪辑 都拿 mock 数据,用户在文案库新建的文案、AI数字人手动输入的文案在其他 页面选不到。 2. AI数字人页(PanelTitleConfig)、智能剪辑 step4(useStep4Title)仍在 调已废弃的 @/api/titles,标题下拉为空。 3. AI数字人页自维护一份 getScripts 本地实现,返回类型/字段与共享 @/api/scripts 不一致,且未共享 mock 开关。 修复: - api/scripts/scripts.ts: SCRIPTS_API_MOCK 改为 env 开关(同 POINTS_API_MOCK 模式,默认 false 走真实 API)。 - 删除废弃 api/titles/ 整个目录 + 相关单测(test/api/titles.test.ts、 ai-avatar/components/TitleLibraryModal.tsx 孤儿组件)。 - ai-avatar/api/aiAvatar.ts: 文案库相关方法(getScripts/createScript/ getScript/deleteScript)统一 re-export from @/api/scripts,不再 本地重复实现。 - ai-avatar/types.ts: Script 类型改为 import("@/api/scripts").ScriptItem 别名,保证字段对齐。 - ai-avatar/AiAvatarPage.tsx 内 ScriptSelectModalLazy: getScripts 适配 { items, total } 分页结构,传 page_size:200 一次拿全。 - ai-avatar/components/PanelScript.tsx: 手动输入 tab 下增加「💾 保存到文案库」 按钮,一键把当前口播文案以正文前20字为默认标题自动入库,解决主人反馈 「历史文案在新文案库找不到」的问题;保存成功 toast 1s 自动关闭。 - ai-avatar/components/PanelTitleConfig.tsx: 标题 AutoComplete 数据源改为 getScripts(),取 scripts[].title 去重作为候选,文案从「📚 标题库」 改为「📚 文案库标题」。 - generate/hooks/useStep4Title/index.ts: userTitles 数据源改为 getScripts(), 映射为 { content: s.title },复用下游消费逻辑(ut.content)。 - test/pages/GeneratePage.test.tsx: 把 @/api/titles mock 替换为 @/api/scripts mock。 待跟进: - P2 抖音错误提示友好化(等后端 #1963 合入后联调)。941e590067toff3d915c5e🗑️ 预览环境已清理
PR #1971 已关闭或合并,对应的预览环境已被清理。