feat(enterprise-site): add WordPress support and scheduled auto-publish to sites
Add WordPress as an enterprise-site CMS type alongside pbootcms, and let schedule tasks auto-publish generated articles to enterprise sites. - WordPress connection/publisher service and tests; register wordpress media platform and relax cms_type CHECK constraint - New publish_enterprise_site_targets JSONB column on schedule_tasks with array type constraint; thread targets through scheduler dispatch, prompt/KOL generation, and worker - Admin UI: enterprise-site targets in generate/schedule/publish flows, KOL package form, MediaView, and i18n strings Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1624,13 +1624,33 @@ const enUS = {
|
||||
'No platform data is available yet. Please verify the Media Management setup first.',
|
||||
publishSection: 'Publish Settings',
|
||||
autoPublish: 'Auto publish',
|
||||
autoPublishHint: 'When enabled, scheduled articles enter the publish queue after generation.',
|
||||
autoPublishHint:
|
||||
'When enabled, scheduled articles publish to selected media accounts or enterprise sites.',
|
||||
publishTargets: 'Publish targets',
|
||||
publishTargetsHint:
|
||||
'Choose desktop media accounts or enterprise sites. At least one target is required.',
|
||||
publishTargetMediaAccounts: 'Media accounts',
|
||||
publishTargetEnterpriseSites: 'Enterprise sites',
|
||||
publishAccounts: 'Media accounts',
|
||||
publishAccountsHint:
|
||||
'Choose specific accounts. Offline clients queue first and continue after reconnecting.',
|
||||
publishAccountEmptyTitle: 'No media accounts',
|
||||
publishAccountEmptyHint:
|
||||
'Bind media accounts in the desktop client before configuring auto publish.',
|
||||
enterprisePublishType: 'Publish type',
|
||||
enterprisePublishNow: 'Publish now',
|
||||
enterprisePublishDraft: 'Save draft',
|
||||
enterpriseCategoryPlaceholder: 'Choose category',
|
||||
enterpriseSyncCategories: 'Sync categories',
|
||||
enterpriseSiteEmptyTitle: 'No enterprise sites',
|
||||
enterpriseSiteEmptyHint:
|
||||
'Add a site connection in Media Management and sync categories first.',
|
||||
enterpriseSiteConnected: 'Connected',
|
||||
enterpriseSiteError: 'Connection error',
|
||||
enterpriseSiteDisabled: 'Disabled',
|
||||
enterpriseSiteDraft: 'Pending check',
|
||||
enterpriseSiteDisabledHint: 'This enterprise site is disabled.',
|
||||
enterpriseSiteErrorHint: 'This enterprise site has a connection error. Test it first.',
|
||||
cover: 'Cover image',
|
||||
coverHint: 'Keep the cover clear, complete, and visually polished.',
|
||||
scheduleCoverHint:
|
||||
@@ -1683,7 +1703,8 @@ const enUS = {
|
||||
'New tasks default to a random time between 01:00 and 05:00 to smooth overnight load. You can edit it before saving.',
|
||||
executionTimeDefault: 'Default staggered time',
|
||||
to: 'to',
|
||||
autoPublishPlatforms: 'Auto publish platforms',
|
||||
autoPublishPlatforms: 'Auto publish targets',
|
||||
enterpriseSiteTargetCount: '{count} enterprise sites',
|
||||
autoPublish: 'Auto publish',
|
||||
manualPublish: 'Manual publish',
|
||||
nextRun: 'Next run',
|
||||
@@ -1775,6 +1796,9 @@ const enUS = {
|
||||
invalidRandomWindow: 'The schedule time configuration is invalid.',
|
||||
missingScheduleDays: 'Select at least one run day.',
|
||||
missingPublishAccounts: 'Choose at least one media account when auto publish is enabled.',
|
||||
missingPublishTargets: 'Choose at least one publish target when auto publish is enabled.',
|
||||
missingEnterpriseSiteCategory: 'Choose an enterprise site category.',
|
||||
enterpriseCategoriesSynced: 'Enterprise site categories synced.',
|
||||
missingScheduleCover: 'A selected media account platform requires a cover image.',
|
||||
missingPromptName: 'Enter a prompt name first.',
|
||||
missingPromptContent: 'Enter prompt content first.',
|
||||
|
||||
@@ -1550,11 +1550,28 @@ const zhCN = {
|
||||
platformEmptyHint: '当前还没有可用的平台数据,请先检查媒体管理配置。',
|
||||
publishSection: '发布设置',
|
||||
autoPublish: '是否自动发布',
|
||||
autoPublishHint: '开启后,定时生成完成的文章会使用指定媒体账号自动进入发布队列。',
|
||||
autoPublishHint: '开启后,定时生成完成的文章会自动发布到选中的媒体账号或企业自建站点。',
|
||||
publishTargets: '发布目标',
|
||||
publishTargetsHint: '可选择桌面媒体账号,也可选择企业自建站点;至少选择一个目标。',
|
||||
publishTargetMediaAccounts: '媒体账号',
|
||||
publishTargetEnterpriseSites: '企业自建站点',
|
||||
publishAccounts: '媒体账号',
|
||||
publishAccountsHint: '请选择具体账号。客户端离线时会先排队,上线后继续发布。',
|
||||
publishAccountEmptyTitle: '暂无可选媒体账号',
|
||||
publishAccountEmptyHint: '请先在桌面端绑定媒体账号,再回到这里配置自动发布。',
|
||||
enterprisePublishType: '发布方式',
|
||||
enterprisePublishNow: '直接发布',
|
||||
enterprisePublishDraft: '保存草稿',
|
||||
enterpriseCategoryPlaceholder: '选择栏目',
|
||||
enterpriseSyncCategories: '同步栏目',
|
||||
enterpriseSiteEmptyTitle: '暂无企业自建站点',
|
||||
enterpriseSiteEmptyHint: '请先到媒体管理添加站点连接,并同步栏目。',
|
||||
enterpriseSiteConnected: '已连通',
|
||||
enterpriseSiteError: '连接异常',
|
||||
enterpriseSiteDisabled: '已禁用',
|
||||
enterpriseSiteDraft: '待校验',
|
||||
enterpriseSiteDisabledHint: '该企业站点已禁用。',
|
||||
enterpriseSiteErrorHint: '该企业站点连接异常,请先测试连通性。',
|
||||
cover: '封面图',
|
||||
coverHint: '请保证封面清晰、美观和完整',
|
||||
scheduleCoverHint: '默认不设置封面。需要时可单独指定,生成完成后会写入文章并用于发布。',
|
||||
@@ -1604,7 +1621,8 @@ const zhCN = {
|
||||
'新建任务会默认随机落在 01:00-05:00,避免凌晨任务集中;你也可以手动修改为固定执行时间。',
|
||||
executionTimeDefault: '默认错峰生成',
|
||||
to: '至',
|
||||
autoPublishPlatforms: '自动发布平台',
|
||||
autoPublishPlatforms: '自动发布目标',
|
||||
enterpriseSiteTargetCount: '企业自建站点 {count} 个',
|
||||
autoPublish: '自动发布',
|
||||
manualPublish: '手动发布',
|
||||
nextRun: '下次执行',
|
||||
@@ -1695,6 +1713,9 @@ const zhCN = {
|
||||
invalidRandomWindow: '执行时间配置不正确',
|
||||
missingScheduleDays: '请至少选择一个执行日',
|
||||
missingPublishAccounts: '开启自动发布后,请至少选择一个媒体账号',
|
||||
missingPublishTargets: '开启自动发布后,请至少选择一个发布目标',
|
||||
missingEnterpriseSiteCategory: '请选择企业自建站点栏目',
|
||||
enterpriseCategoriesSynced: '企业站点栏目已同步',
|
||||
missingScheduleCover: '已选媒体账号的平台要求封面图,请先设置封面',
|
||||
missingPromptName: '请先填写 Prompt 名称',
|
||||
missingPromptContent: '请先填写 Prompt 内容',
|
||||
|
||||
Reference in New Issue
Block a user