Add multi-platform publishing workflow

This commit is contained in:
王鹏
2026-09-14 17:40:52 +08:00
parent a466caa793
commit 0e24c9e235
41 changed files with 4980 additions and 58 deletions

View File

@@ -6,6 +6,7 @@ CREATE TABLE tt_copy_template (
template_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '模板ID',
template_name VARCHAR(100) NOT NULL COMMENT '按钮显示名称',
template_group VARCHAR(100) NOT NULL DEFAULT '默认分组' COMMENT '模板分组',
template_scene VARCHAR(20) NOT NULL DEFAULT 'CODE' COMMENT '模板场景(CODE源码文案 DELIVERY发货文案)',
template_body LONGTEXT NOT NULL COMMENT '文案模板内容,支持 {变量} 占位符',
sort_num INT DEFAULT 0 COMMENT '排序号',
status CHAR(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
@@ -257,3 +258,12 @@ INSERT INTO tt_copy_template (template_name, template_body, sort_num, status, cr
<br>
<span>长按小程序码,打开小程序搜索 "<Strong style="color:var(--md-primary-color);">{projectCode}</Strong>" 即可获取资源</span>
</center>', 6, '0', NOW(), 'admin');
-- 项目清单“复制发货链接”使用的默认模板
INSERT INTO tt_copy_template
(template_name, template_group, template_scene, template_body, sort_num, status, create_time, create_by)
VALUES
('复制发货链接', '发货文案', 'DELIVERY', '{deliveryLinks}
项目部署文档
https://www.yuque.com/feastcoding/cg5w9h/rbvp8w80h8tultgy 密码:el4q', 1, '0', NOW(), 'admin');

View File

@@ -0,0 +1,31 @@
-- 文案模板增加使用场景,并初始化“复制发货链接”模板(已有数据库升级脚本)
ALTER TABLE `tt_copy_template`
ADD COLUMN `template_scene` VARCHAR(20) NOT NULL DEFAULT 'CODE'
COMMENT '模板场景(CODE源码文案 DELIVERY发货文案)' AFTER `template_group`;
-- 历史模板均为源码文案
UPDATE `tt_copy_template`
SET `template_scene` = 'CODE'
WHERE `template_scene` IS NULL OR TRIM(`template_scene`) = '';
-- 将原先写死在项目清单前端的发货文案迁入模板表
INSERT INTO `tt_copy_template`
(`template_name`, `template_group`, `template_scene`, `template_body`, `sort_num`, `status`, `create_time`, `create_by`)
SELECT
'复制发货链接',
'发货文案',
'DELIVERY',
'{deliveryLinks}
项目部署文档
https://www.yuque.com/feastcoding/cg5w9h/rbvp8w80h8tultgy 密码:el4q',
1,
'0',
NOW(),
'admin'
WHERE NOT EXISTS (
SELECT 1
FROM `tt_copy_template`
WHERE `template_scene` = 'DELIVERY'
AND `template_name` = '复制发货链接'
);

80
sql/platform_publish.sql Normal file
View File

@@ -0,0 +1,80 @@
-- 发布管理与浏览器扩展任务表,可重复执行。
CREATE TABLE IF NOT EXISTS `tt_publish_task` (
`publish_id` bigint NOT NULL AUTO_INCREMENT COMMENT '发布记录ID',
`task_id` varchar(64) NOT NULL COMMENT '公开任务编号',
`code_id` bigint NOT NULL COMMENT '源码项目ID',
`platform` varchar(32) NOT NULL COMMENT 'xiaohongshu/douyin/wechat_channels/bilibili/xianyu',
`title` varchar(100) NOT NULL COMMENT '发布标题',
`content` text COMMENT '发布文案',
`tags` varchar(500) DEFAULT NULL COMMENT '标签,逗号分隔',
`video_url` varchar(1000) DEFAULT NULL COMMENT '视频地址',
`image_urls` text COMMENT '图片地址JSON数组',
`cover_url` varchar(1000) DEFAULT NULL COMMENT '封面地址',
`status` varchar(32) NOT NULL DEFAULT 'PENDING' COMMENT '发布状态',
`status_message` varchar(255) DEFAULT NULL COMMENT '状态说明',
`last_error` varchar(1000) DEFAULT NULL COMMENT '最近错误',
`bridge_token` varchar(64) NOT NULL COMMENT '扩展短期访问凭证',
`bridge_expires_at` datetime NOT NULL COMMENT '扩展凭证失效时间',
`started_at` datetime DEFAULT NULL COMMENT '扩展开始执行时间',
`ready_at` datetime DEFAULT NULL COMMENT '等待人工发布时间',
`finished_at` datetime DEFAULT NULL COMMENT '任务结束时间',
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`publish_id`),
UNIQUE KEY `uk_publish_task_id` (`task_id`),
KEY `idx_publish_code_platform` (`code_id`, `platform`, `publish_id`),
KEY `idx_publish_status` (`status`),
KEY `idx_publish_update_time` (`update_time`),
KEY `idx_publish_bridge` (`task_id`, `bridge_token`, `bridge_expires_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='多平台发布任务';
-- 兼容已有的小红书、抖音、视频号通用模板,使首次部署即可自动生成发布文案。
-- 闲鱼使用“闲鱼”分组中的启用模板;一个模板时直接使用,多个模板时随机选择。
-- B站使用“B站”分组中的启用模板;用户可在文案模板管理中单独创建。
-- 用户后续可在文案模板管理中分别创建“小红书”“抖音”“视频号”“B站”分组;
-- 平台专用分组存在时,会优先于这个共享分组。
UPDATE `tt_copy_template`
SET `template_group` = '抖音、视频号、小红书'
WHERE `template_name` = '复制抖音、视频号、小红书文案'
AND (`template_group` IS NULL OR TRIM(`template_group`) = '' OR `template_group` = '默认分组');
-- 将发布管理放到源码管理所在目录。
SET @publish_parent_id := COALESCE(
(SELECT parent_id FROM sys_menu WHERE perms = 'office:code:list' LIMIT 1),
0
);
SET @publish_order_num := COALESCE(
(SELECT MAX(order_num) + 1 FROM sys_menu WHERE parent_id = @publish_parent_id),
1
);
INSERT INTO sys_menu
(menu_name, parent_id, order_num, path, component, query, is_frame, is_cache,
menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '发布管理', @publish_parent_id, @publish_order_num,
'publish', 'office/publish/index', '', 1, 0,
'C', '0', '0', 'office:publish:list', 'documentation', 'admin', NOW(), '', NULL,
'浏览器扩展辅助发布管理'
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'office:publish:list');
SET @publish_menu_id := (
SELECT menu_id FROM sys_menu WHERE perms = 'office:publish:list' LIMIT 1
);
INSERT INTO sys_menu
(menu_name, parent_id, order_num, path, component, query, is_frame, is_cache,
menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '发布资料查询', @publish_menu_id, 1, '', '', '', 1, 0,
'F', '0', '0', 'office:publish:query', '#', 'admin', NOW(), '', NULL, ''
WHERE @publish_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'office:publish:query');
INSERT INTO sys_menu
(menu_name, parent_id, order_num, path, component, query, is_frame, is_cache,
menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '创建发布任务', @publish_menu_id, 2, '', '', '', 1, 0,
'F', '0', '0', 'office:publish:add', '#', 'admin', NOW(), '', NULL, ''
WHERE @publish_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'office:publish:add');