admin/sql/20260804_kb_knowledge.sql

145 lines
8.3 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 物流业务知识库 M1:分类 + 文章
-- 执行库:OMS 业务库
CREATE TABLE IF NOT EXISTS `t_kb_category` (
`Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键',
`Code` VARCHAR(64) NOT NULL COMMENT '稳定键,如 pricing',
`Name` VARCHAR(128) NOT NULL COMMENT '展示名(中文)',
`SortOrder` INT NOT NULL DEFAULT 0 COMMENT '排序,越小越前',
`Enabled` TINYINT NOT NULL DEFAULT 1 COMMENT '是否启用:0-否,1-是',
`IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是',
`ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳',
`CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人',
`CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`UpdateUserId` INT NULL COMMENT '更新人',
`UpdateTime` DATETIME NULL COMMENT '更新时间',
PRIMARY KEY (`Id`),
UNIQUE KEY `uk_kb_category_code` (`Code`),
KEY `idx_kb_category_enabled_sort` (`Enabled`, `SortOrder`)
) COMMENT='知识库分类';
CREATE TABLE IF NOT EXISTS `t_kb_article` (
`Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键',
`CategoryId` INT NOT NULL COMMENT '分类 Id',
`Title` VARCHAR(200) NOT NULL COMMENT '标题(中文)',
`Summary` VARCHAR(500) NULL COMMENT '列表摘要',
`Content` LONGTEXT NOT NULL COMMENT 'Markdown 正文(中文)',
`Audience` VARCHAR(16) NOT NULL DEFAULT 'customer' COMMENT '受众 customer/internal',
`Status` VARCHAR(16) NOT NULL DEFAULT 'draft' COMMENT 'draft/published/offline',
`Tags` VARCHAR(256) NULL COMMENT '逗号分隔标签',
`RelatedPath` VARCHAR(256) NULL COMMENT '站内关联 path',
`RelatedLabel` VARCHAR(64) NULL COMMENT '关联按钮文案',
`IsPinned` TINYINT NOT NULL DEFAULT 0 COMMENT '置顶:0-否,1-是',
`SortOrder` INT NOT NULL DEFAULT 0 COMMENT '同类排序',
`PublishTime` DATETIME NULL COMMENT '发布时间',
`ExpireTime` DATETIME NULL COMMENT '过期时间',
`ViewCount` INT NOT NULL DEFAULT 0 COMMENT '浏览次数',
`IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是',
`ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳',
`CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人',
`CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`UpdateUserId` INT NULL COMMENT '更新人',
`UpdateTime` DATETIME NULL COMMENT '更新时间',
PRIMARY KEY (`Id`),
KEY `idx_kb_article_list` (`Status`, `Audience`, `CategoryId`, `IsPinned`, `SortOrder`),
KEY `idx_kb_article_publish` (`Status`, `Audience`, `PublishTime`),
KEY `idx_kb_article_hot` (`Status`, `Audience`, `IsPinned`, `ViewCount`)
) COMMENT='知识库文章';
-- 种子分类(幂等:Code 唯一)
INSERT INTO `t_kb_category` (`Code`, `Name`, `SortOrder`, `Enabled`)
SELECT 'pricing', '查价与计费', 10, 1 FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM `t_kb_category` WHERE `Code` = 'pricing' AND `IsDeleted` = 0);
INSERT INTO `t_kb_category` (`Code`, `Name`, `SortOrder`, `Enabled`)
SELECT 'order', '下单与轨迹', 20, 1 FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM `t_kb_category` WHERE `Code` = 'order' AND `IsDeleted` = 0);
INSERT INTO `t_kb_category` (`Code`, `Name`, `SortOrder`, `Enabled`)
SELECT 'exception', '问题件与售后', 30, 1 FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM `t_kb_category` WHERE `Code` = 'exception' AND `IsDeleted` = 0);
INSERT INTO `t_kb_category` (`Code`, `Name`, `SortOrder`, `Enabled`)
SELECT 'customs', '禁限运与清关', 40, 1 FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM `t_kb_category` WHERE `Code` = 'customs' AND `IsDeleted` = 0);
INSERT INTO `t_kb_category` (`Code`, `Name`, `SortOrder`, `Enabled`)
SELECT 'account', '账户与充值', 50, 1 FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM `t_kb_category` WHERE `Code` = 'account' AND `IsDeleted` = 0);
INSERT INTO `t_kb_category` (`Code`, `Name`, `SortOrder`, `Enabled`)
SELECT 'dropship', '代发与店铺', 60, 1 FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM `t_kb_category` WHERE `Code` = 'dropship' AND `IsDeleted` = 0);
-- 种子 FAQ(幂等:按 Title + Category Code)
INSERT INTO `t_kb_article`
(`CategoryId`, `Title`, `Summary`, `Content`, `Audience`, `Status`, `Tags`, `RelatedPath`, `RelatedLabel`, `IsPinned`, `SortOrder`, `PublishTime`, `ViewCount`)
SELECT c.`Id`,
'如何查价?计费重量怎么算?',
'说明计费重、体积重与卖价取整规则。',
'## 查价入口\n\n工作台或菜单进入「查价」,填写目的国、重量与尺寸即可预估运费。\n\n## 计费重量\n\n系统按 **实重** 与 **体积重** 取较大者作为计费重。体积重公式以销售产品配置为准。\n\n## 提示\n\n查价结果为预估,实际以出库计费为准。',
'customer', 'published', '查价,计费', '/order/priceCheck', '去查价', 1, 10, NOW(), 0
FROM `t_kb_category` c
WHERE c.`Code` = 'pricing' AND c.`IsDeleted` = 0
AND NOT EXISTS (
SELECT 1 FROM `t_kb_article` a
WHERE a.`Title` = '如何查价?计费重量怎么算?' AND a.`CategoryId` = c.`Id` AND a.`IsDeleted` = 0
);
INSERT INTO `t_kb_article`
(`CategoryId`, `Title`, `Summary`, `Content`, `Audience`, `Status`, `Tags`, `RelatedPath`, `RelatedLabel`, `IsPinned`, `SortOrder`, `PublishTime`, `ViewCount`)
SELECT c.`Id`,
'下单后如何查看轨迹?',
'订单列表与轨迹查询入口说明。',
'## 查看轨迹\n\n1. 进入「我的订单」,找到目标运单。\n2. 点击轨迹图标或进入详情查看最新节点。\n\n上网后才会出现承运商轨迹;未上网前可能仅有内部操作节点。',
'customer', 'published', '轨迹,订单', NULL, NULL, 1, 10, NOW(), 0
FROM `t_kb_category` c
WHERE c.`Code` = 'order' AND c.`IsDeleted` = 0
AND NOT EXISTS (
SELECT 1 FROM `t_kb_article` a
WHERE a.`Title` = '下单后如何查看轨迹?' AND a.`CategoryId` = c.`Id` AND a.`IsDeleted` = 0
);
INSERT INTO `t_kb_article`
(`CategoryId`, `Title`, `Summary`, `Content`, `Audience`, `Status`, `Tags`, `RelatedPath`, `RelatedLabel`, `IsPinned`, `SortOrder`, `PublishTime`, `ViewCount`)
SELECT c.`Id`,
'什么是问题件?如何处理?',
'问题件常见原因与处理路径。',
'## 什么是问题件\n\n因地址不全、禁限运、欠费、清关资料缺失等原因,包裹无法继续流转时会标记为问题件。\n\n## 怎么处理\n\n在订单列表筛选「问题件」,按提示补全资料或联系客服。处理完成后会重新放行。',
'customer', 'published', '问题件,售后', NULL, NULL, 0, 20, NOW(), 0
FROM `t_kb_category` c
WHERE c.`Code` = 'exception' AND c.`IsDeleted` = 0
AND NOT EXISTS (
SELECT 1 FROM `t_kb_article` a
WHERE a.`Title` = '什么是问题件?如何处理?' AND a.`CategoryId` = c.`Id` AND a.`IsDeleted` = 0
);
INSERT INTO `t_kb_article`
(`CategoryId`, `Title`, `Summary`, `Content`, `Audience`, `Status`, `Tags`, `RelatedPath`, `RelatedLabel`, `IsPinned`, `SortOrder`, `PublishTime`, `ViewCount`)
SELECT c.`Id`,
'账户余额不足怎么办?',
'充值入口与余额扣费说明。',
'## 充值\n\n工作台余额卡片或财务菜单可发起充值。到账后余额可用于下单扣费。\n\n## 注意\n\n子账号余额归属主客户;扣费失败时订单可能无法提交或出库。',
'customer', 'published', '充值,余额', NULL, NULL, 0, 10, NOW(), 0
FROM `t_kb_category` c
WHERE c.`Code` = 'account' AND c.`IsDeleted` = 0
AND NOT EXISTS (
SELECT 1 FROM `t_kb_article` a
WHERE a.`Title` = '账户余额不足怎么办?' AND a.`CategoryId` = c.`Id` AND a.`IsDeleted` = 0
);
INSERT INTO `t_kb_article`
(`CategoryId`, `Title`, `Summary`, `Content`, `Audience`, `Status`, `Tags`, `RelatedPath`, `RelatedLabel`, `IsPinned`, `SortOrder`, `PublishTime`, `ViewCount`)
SELECT c.`Id`,
'禁限运物品有哪些?',
'常见禁限运与申报注意点。',
'## 常见禁限运\n\n电池、液体、粉末、管制刀具、仿牌等通常受限或禁运,以承运商与目的国法规为准。\n\n## 申报建议\n\n如实填写品名与货值,避免笼统描述(如 gifts)。不确定时可先咨询客服。',
'customer', 'published', '禁运,清关', NULL, NULL, 0, 10, NOW(), 0
FROM `t_kb_category` c
WHERE c.`Code` = 'customs' AND c.`IsDeleted` = 0
AND NOT EXISTS (
SELECT 1 FROM `t_kb_article` a
WHERE a.`Title` = '禁限运物品有哪些?' AND a.`CategoryId` = c.`Id` AND a.`IsDeleted` = 0
);