feat(imitation): add article imitation create flow
Introduce 仿写创作: new list and create views, backend imitation service and prompt templates, worker task routing for imitation jobs, and one-click rewrite triggers from question citation sources. Surface source article URL/title on article list/detail, and restrict failed articles to delete-only. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -71,6 +71,7 @@ const enUS = {
|
||||
templates: "Templates",
|
||||
custom: "Custom Generation",
|
||||
freeCreate: "Free Create",
|
||||
imitation: "Imitation Create",
|
||||
media: "Media",
|
||||
brandManagement: "Brand Management",
|
||||
brands: "Brand Library",
|
||||
@@ -150,6 +151,14 @@ const enUS = {
|
||||
title: "Free Create",
|
||||
description: "Create and edit articles freely, no templates or AI generation required.",
|
||||
},
|
||||
imitation: {
|
||||
title: "Imitation Create",
|
||||
description: "Manage rewritten articles generated from citation sources or external URLs.",
|
||||
},
|
||||
imitationCreate: {
|
||||
title: "Imitation Create",
|
||||
description: "Extract an article from a URL, then generate a new article in one step.",
|
||||
},
|
||||
media: {
|
||||
title: "Media Management",
|
||||
description: "Review desktop-managed media bindings, authorization state, and sync results in one place.",
|
||||
@@ -385,6 +394,7 @@ const enUS = {
|
||||
citationAnalysisTitle: "Citation Analysis",
|
||||
contentCitations: "Content Citations",
|
||||
contentCitationsTitle: "Content Citations",
|
||||
imitationAction: "Imitation create",
|
||||
taskDebugTitle: "Async Task Debug",
|
||||
taskDebugHint: "For troubleshooting the callback -> queue -> worker flow only. The four main content sections above stay unchanged.",
|
||||
contentCitationBadge: "Content Citation",
|
||||
@@ -551,9 +561,76 @@ const enUS = {
|
||||
instant_task: "Instant task",
|
||||
schedule_task: "Scheduled task",
|
||||
free_create: "Free create",
|
||||
imitation: "Imitation create",
|
||||
kol: "Refined template generation",
|
||||
},
|
||||
},
|
||||
imitation: {
|
||||
actions: {
|
||||
create: "New Rewrite",
|
||||
submit: "Submit and generate",
|
||||
},
|
||||
filters: {
|
||||
publishStatus: "Publish status",
|
||||
generateStatus: "Generation status",
|
||||
keyword: "Search",
|
||||
createdTime: "Created time",
|
||||
createdTimeStart: "Start time",
|
||||
createdTimeEnd: "End time",
|
||||
keywordPlaceholder: "Search by article title",
|
||||
},
|
||||
list: {
|
||||
eyebrow: "Imitation Create",
|
||||
count: "{count} articles",
|
||||
sourceArticle: "Source",
|
||||
empty: "No rewritten articles yet. Start from a citation source or create one manually.",
|
||||
deleteConfirm: "Delete this rewritten article?",
|
||||
deleteSuccess: "Article deleted.",
|
||||
deleteError: "Failed to delete article.",
|
||||
},
|
||||
create: {
|
||||
title: "Create rewritten article",
|
||||
subtitle: "The backend fetches the source article first, then generates a new original article from your settings.",
|
||||
sourceSection: "Source article",
|
||||
settingsSection: "Rewrite settings",
|
||||
sourceURL: "Article URL",
|
||||
sourceTitle: "Source title",
|
||||
language: "Article language",
|
||||
industry: "Industry / scenario",
|
||||
brandName: "Brand / subject",
|
||||
region: "Region",
|
||||
targetAudience: "Target audience",
|
||||
contentGoal: "Content goal",
|
||||
tone: "Tone",
|
||||
lengthGoal: "Length",
|
||||
keywords: "Keywords",
|
||||
preservePoints: "Keep / emphasize",
|
||||
avoidPoints: "Avoid",
|
||||
extraRequirements: "Extra requirements",
|
||||
enableWebSearch: "Allow web search supplement",
|
||||
webSearchHint: "When enabled, generation can reference live web information for newer facts or industry context.",
|
||||
knowledgeBase: "Reference knowledge base",
|
||||
knowledgeBasePlaceholder: "Optional. Add facts, brand material, and industry background.",
|
||||
knowledgeBaseHint: "Selected groups are retrieved in the backend and passed to generation as reference context.",
|
||||
sourceURLPlaceholder: "https://example.com/article",
|
||||
sourceTitlePlaceholder: "Optional. Citation titles are prefilled automatically.",
|
||||
industryPlaceholder: "For example: home improvement, education, SaaS, healthcare",
|
||||
brandNamePlaceholder: "Optional. Helps the article fit a specific brand or subject.",
|
||||
regionPlaceholder: "For example: Shanghai, East China, nationwide, North America",
|
||||
targetAudiencePlaceholder: "For example: first-time buyers, channel partners, procurement leads",
|
||||
contentGoalPlaceholder: "For example: education, conversion, brand trust, selection advice",
|
||||
tonePlaceholder: "For example: professional, conversational, comparative, news analysis",
|
||||
lengthGoalPlaceholder: "For example: around 1200 words, short post, long-form guide",
|
||||
keywordsPlaceholder: "Type keywords and press Enter",
|
||||
preservePointsPlaceholder: "List facts, data, arguments, or examples that must be kept.",
|
||||
avoidPointsPlaceholder: "List claims, competitors, compliance risks, or wording to avoid.",
|
||||
extraRequirementsPlaceholder: "Add channel, structure, title style, or industry-specific instructions.",
|
||||
queued: "Rewrite task submitted and queued.",
|
||||
sourceURLRequired: "Enter the source article URL first.",
|
||||
submitError: "Failed to submit rewrite task.",
|
||||
backToList: "Back to rewrites",
|
||||
},
|
||||
},
|
||||
freeCreate: {
|
||||
actions: {
|
||||
create: "New Article",
|
||||
@@ -856,6 +933,7 @@ const enUS = {
|
||||
templateType: "Template",
|
||||
currentVersion: "Current version",
|
||||
source: "Source label",
|
||||
sourceArticle: "Source article",
|
||||
wordCount: "Word count",
|
||||
},
|
||||
versionUntitled: "Untitled version",
|
||||
|
||||
@@ -71,6 +71,7 @@ const zhCN = {
|
||||
templates: "模版创作",
|
||||
custom: "自定义生成",
|
||||
freeCreate: "自由创作",
|
||||
imitation: "仿写创作",
|
||||
media: "媒体管理",
|
||||
brandManagement: "品牌管理",
|
||||
brands: "品牌词库",
|
||||
@@ -150,6 +151,14 @@ const zhCN = {
|
||||
title: "自由创作",
|
||||
description: "自由创建并编辑文章,无需模版或AI生成。",
|
||||
},
|
||||
imitation: {
|
||||
title: "仿写创作",
|
||||
description: "管理基于引用来源或外部文章发起的仿写生成记录。",
|
||||
},
|
||||
imitationCreate: {
|
||||
title: "仿写创作",
|
||||
description: "从文章链接提取内容后,一步生成适配当前场景的新文章。",
|
||||
},
|
||||
media: {
|
||||
title: "媒体管理",
|
||||
description: "统一查看桌面端媒体账号绑定、授权状态与同步结果。",
|
||||
@@ -385,6 +394,7 @@ const zhCN = {
|
||||
citationAnalysisTitle: "引用分析",
|
||||
contentCitations: "Content Citations",
|
||||
contentCitationsTitle: "内容引用",
|
||||
imitationAction: "仿写创作",
|
||||
taskDebugTitle: "异步任务调试",
|
||||
taskDebugHint: "仅用于排查 callback -> queue -> worker 的异步流转,不影响上方四块主内容。",
|
||||
contentCitationBadge: "内容引用",
|
||||
@@ -551,9 +561,76 @@ const zhCN = {
|
||||
instant_task: "即时任务",
|
||||
schedule_task: "定时任务",
|
||||
free_create: "自由创作",
|
||||
imitation: "仿写创作",
|
||||
kol: "精调模版生成",
|
||||
},
|
||||
},
|
||||
imitation: {
|
||||
actions: {
|
||||
create: "新建仿写",
|
||||
submit: "提交并生成",
|
||||
},
|
||||
filters: {
|
||||
publishStatus: "发布状态",
|
||||
generateStatus: "生成状态",
|
||||
keyword: "搜索文章",
|
||||
createdTime: "创建时间",
|
||||
createdTimeStart: "开始时间",
|
||||
createdTimeEnd: "结束时间",
|
||||
keywordPlaceholder: "请输入标题内容搜索",
|
||||
},
|
||||
list: {
|
||||
eyebrow: "仿写创作",
|
||||
count: "共 {count} 篇文章",
|
||||
sourceArticle: "原文",
|
||||
empty: "还未创建仿写文章,可从问题详情的引用来源一键带入,也可以手动新建。",
|
||||
deleteConfirm: "确认删除这篇仿写文章吗?",
|
||||
deleteSuccess: "文章已删除",
|
||||
deleteError: "删除文章失败",
|
||||
},
|
||||
create: {
|
||||
title: "创建仿写文章",
|
||||
subtitle: "后台会先抓取源文章内容,再按下方设定生成一篇新的原创表达文章。",
|
||||
sourceSection: "来源文章",
|
||||
settingsSection: "仿写设置",
|
||||
sourceURL: "文章 URL",
|
||||
sourceTitle: "来源标题",
|
||||
language: "文章语言",
|
||||
industry: "行业/场景",
|
||||
brandName: "品牌/主体",
|
||||
region: "地域",
|
||||
targetAudience: "目标读者",
|
||||
contentGoal: "内容目标",
|
||||
tone: "语气风格",
|
||||
lengthGoal: "篇幅要求",
|
||||
keywords: "关键词",
|
||||
preservePoints: "必须保留/强调",
|
||||
avoidPoints: "需要规避",
|
||||
extraRequirements: "其他要求",
|
||||
enableWebSearch: "允许联网补充",
|
||||
webSearchHint: "开启后,生成时会让大模型参考实时网页信息,适合需要最新事实或行业动态的仿写。",
|
||||
knowledgeBase: "引用知识库",
|
||||
knowledgeBasePlaceholder: "可选,用于补充文章事实、品牌资料和行业背景",
|
||||
knowledgeBaseHint: "选择后,后台会检索相关知识片段并作为生成参考,未选择则只基于来源文章和当前设置生成。",
|
||||
sourceURLPlaceholder: "https://example.com/article",
|
||||
sourceTitlePlaceholder: "可选,引用来源标题会自动带入",
|
||||
industryPlaceholder: "例如:家居建材、教育培训、SaaS、医疗健康",
|
||||
brandNamePlaceholder: "可选,填写后文章会自然贴合该品牌或主体",
|
||||
regionPlaceholder: "例如:上海、华东、全国、北美市场",
|
||||
targetAudiencePlaceholder: "例如:首次购买用户、渠道代理、企业采购负责人",
|
||||
contentGoalPlaceholder: "例如:科普说明、转化种草、品牌信任、选型建议",
|
||||
tonePlaceholder: "例如:专业可信、轻松口语、评测对比、新闻解读",
|
||||
lengthGoalPlaceholder: "例如:1200字左右、短文、深度长文",
|
||||
keywordsPlaceholder: "输入关键词后回车,可多选",
|
||||
preservePointsPlaceholder: "列出必须保留的事实、数据、观点或案例",
|
||||
avoidPointsPlaceholder: "列出不能出现的说法、竞品、合规禁区或表达方式",
|
||||
extraRequirementsPlaceholder: "补充行业、渠道、结构、标题风格等自由要求",
|
||||
queued: "仿写任务已提交,正在排队生成",
|
||||
sourceURLRequired: "请先填写来源文章 URL",
|
||||
submitError: "仿写任务提交失败",
|
||||
backToList: "返回仿写列表",
|
||||
},
|
||||
},
|
||||
freeCreate: {
|
||||
actions: {
|
||||
create: "新建文章",
|
||||
@@ -863,6 +940,7 @@ const zhCN = {
|
||||
templateType: "模版类型",
|
||||
currentVersion: "当前版本",
|
||||
source: "生成来源",
|
||||
sourceArticle: "源文链接",
|
||||
wordCount: "文章字数",
|
||||
},
|
||||
versionUntitled: "未命名版本",
|
||||
|
||||
Reference in New Issue
Block a user