refactor(ai): 用知识库 V2 替换旧版 — 删除旧页面/API,菜单路径不变

- 删除旧版 AiKnowledgePage.tsx 和 api/ai/knowledge.ts
- V2 页面接管 /health/ai-knowledge 路由(不再用 -v2 后缀)
- 迁移 168 改为 UPDATE 旧菜单名称+component(而非新增菜单)
- routeConfig 和 App.tsx 路由声明同步更新
This commit is contained in:
iven
2026-05-27 11:15:17 +08:00
parent 803a27fb84
commit 23cd0b14a7
5 changed files with 15 additions and 658 deletions

View File

@@ -6,41 +6,17 @@ pub struct Migration;
#[async_trait::async_trait]
impl MigrationTrait for Migration {
async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {
// 安全插入:仅在 sys_menu 表存在且有 ai-knowledge 菜单时添加 V2 菜单
// 将旧版 AI 知识库菜单更新为 V2 版本
let sql = r#"
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'public' AND table_name = 'sys_menu') THEN
INSERT INTO sys_menu (id, parent_id, name, path, icon, sort, permission, component, is_external, is_cached, status, visible, created_at, updated_at, deleted_at)
SELECT
gen_random_uuid(),
parent_id,
'知识库 V2',
'/health/ai-knowledge-v2',
'DatabaseOutlined',
54,
'ai.knowledge.list',
'ai/KnowledgeV2Page',
false,
false,
'active',
true,
now(),
now(),
NULL
FROM sys_menu
WHERE path = '/health/ai-knowledge' AND deleted_at IS NULL
LIMIT 1
ON CONFLICT DO NOTHING;
IF FOUND THEN
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT r.id, m.id
FROM sys_role r, sys_menu m
WHERE r.code = 'admin' AND r.deleted_at IS NULL
AND m.path = '/health/ai-knowledge-v2' AND m.deleted_at IS NULL
ON CONFLICT DO NOTHING;
END IF;
UPDATE sys_menu
SET name = '知识库管理',
icon = 'DatabaseOutlined',
component = 'ai/KnowledgeV2Page',
updated_at = now()
WHERE path = '/health/ai-knowledge' AND deleted_at IS NULL;
END IF;
END;
$$ LANGUAGE plpgsql
@@ -59,7 +35,12 @@ impl MigrationTrait for Migration {
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'public' AND table_name = 'sys_menu') THEN
DELETE FROM sys_menu WHERE path = '/health/ai-knowledge-v2';
UPDATE sys_menu
SET name = 'AI 知识库',
icon = 'BookOutlined',
component = 'health/AiKnowledgePage',
updated_at = now()
WHERE path = '/health/ai-knowledge' AND deleted_at IS NULL;
END IF;
END;
$$ LANGUAGE plpgsql