refactor(品牌工具页): 历史轮询抽为 useHistoryPolling
QueryAsin / Withdraw / PatrolDelete 三页逐字相同的 startHistoryPolling / stopHistoryPolling 收敛为 shared/composables/useHistoryPolling:定时器走各页 categorized-timers(category 固定 history-poll),间隔默认主轮询的 2 倍。 categorized-timers 补 CategorizedTimers 类型导出;补注入式假定时器单测 5 例。 净减约 40 行;vue-tsc 构建与 695 个前端单测通过。
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
-- V119: 教程客户端安装包管理(后台「教程管理」上传;工具台首页「立即下载教程」按最新上传下载)
|
||||
-- 包体存公开 client 桶 tutorial/ 前缀(oss.aishufu.top 直链);本表只存对象 key 与元信息,
|
||||
-- 下载 URL 由服务端按当前公开端点实时拼装(避免历史 URL 与端点配置漂移)。
|
||||
-- 每次上传生成带时间戳的新对象 key,规避下载域缓存按 URL 命中旧包,保证"以最新上传为主"。
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `biz_tutorial_package` (
|
||||
`id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||
`file_name` VARCHAR(255) NOT NULL COMMENT '原始文件名(展示用)',
|
||||
`object_key` VARCHAR(512) NOT NULL COMMENT 'MinIO 对象 key(client 桶,tutorial/ 前缀)',
|
||||
`file_size` BIGINT NOT NULL DEFAULT 0 COMMENT '文件字节数(0=未知,历史种子行)',
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '上传时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_tutorial_created_at` (`created_at`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='教程客户端安装包(工具台下载入口)';
|
||||
|
||||
-- 种子行:指向 scripts/upload_tutorial_zip.py 历史上传的固定对象,保证上线后「最新」仍指向当前可用包
|
||||
INSERT INTO `biz_tutorial_package` (`file_name`, `object_key`, `file_size`)
|
||||
SELECT '数富AI-教学客户端.zip', 'tutorial/数富AI-教学客户端.zip', 0
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `biz_tutorial_package`);
|
||||
|
||||
-- 后台菜单:教程管理(挂在「记录与版本」分组下;幂等,仅当 column_key 不存在时插入)
|
||||
INSERT INTO columns (name, column_key, menu_type, route_path, sort_order, parent_id)
|
||||
SELECT '教程管理', 'admin_tutorial', 'admin', 'records/tutorial', 82, parent.id
|
||||
FROM columns parent
|
||||
WHERE parent.column_key = 'admin_group_record'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM columns WHERE column_key = 'admin_tutorial'
|
||||
);
|
||||
Reference in New Issue
Block a user