From ca13a9199f8e87841d665362ec0667283601b194 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=87=AF?= Date: Thu, 21 May 2026 16:39:48 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend-web/src/components/page-sidebar.tsx | 106 +----------------- .../components/ai-writing/AIWritingPanel.tsx | 37 ++---- 2 files changed, 12 insertions(+), 131 deletions(-) diff --git a/frontend-web/src/components/page-sidebar.tsx b/frontend-web/src/components/page-sidebar.tsx index a00206e9..306dc883 100644 --- a/frontend-web/src/components/page-sidebar.tsx +++ b/frontend-web/src/components/page-sidebar.tsx @@ -2,7 +2,6 @@ import { useEffect, useState } from "react"; import type { ElementType } from "react"; import { useNavigate, useLocation } from "react-router-dom"; import { - BarChart3, Bell, Bot, Brain, @@ -11,7 +10,6 @@ import { ChevronRight, ChevronsUpDown, CircleHelp, - Compass, Database, FileBox, FileText, @@ -27,15 +25,11 @@ import { ListTodo, MessageSquareCode, MessageSquarePlus, - MoreHorizontal, Network, Plus, - Scale, Settings, Sparkles, - Tags, Target, - TrendingUp, User, Users, Wrench, @@ -200,97 +194,14 @@ const menuItems: MenuItem[] = [ }, ], }, - { - id: "result-management", - label: "结果管理", - icon: BarChart3, - children: [ - { - id: "result-planning", - label: "规划结果", - icon: Target, - children: [ - { id: "result-planning-all", label: "全部", icon: BarChart3 }, - { id: "result-planning-goal", label: "目标分析", icon: Target }, - { id: "result-planning-brand", label: "品牌策略", icon: Target }, - { id: "result-planning-content", label: "内容规划", icon: Target }, - { id: "result-planning-channel", label: "渠道规划", icon: Target }, - { id: "result-planning-narrative", label: "叙事策略", icon: Target }, - ], - }, - { - id: "result-mnty", - label: "MNTY结果", - icon: Brain, - children: [ - { id: "result-mnty-all", label: "全部", icon: BarChart3 }, - { id: "result-mnty-mechanism", label: "机制研究", icon: Brain }, - { id: "result-mnty-plan", label: "规划设计", icon: Brain }, - { id: "result-mnty-zsty", label: "ZSTY分析", icon: Brain }, - ], - }, - { - id: "result-effect-pg", - label: "效果PG结果", - icon: TrendingUp, - children: [ - { id: "result-effect-pg-all", label: "全部", icon: BarChart3 }, - { id: "result-effect-pg-behavior", label: "行为PG", icon: TrendingUp }, - { id: "result-effect-pg-evaluation", label: "效果复盘", icon: TrendingUp }, - { id: "result-effect-pg-info", label: "信息PG", icon: TrendingUp }, - { id: "result-effect-pg-account", label: "账号PG", icon: TrendingUp }, - ], - }, - { - id: "result-xk", - label: "XK结果", - icon: Compass, - children: [ - { id: "result-xk-all", label: "全部", icon: BarChart3 }, - { id: "result-xk-jc", label: "任务JC", icon: Compass }, - { id: "result-xk-dispatch", label: "任务调度", icon: Compass }, - ], - }, - { - id: "result-dq", - label: "DQ结果", - icon: Database, - children: [ - { id: "result-dq-all", label: "全部", icon: BarChart3 }, - { id: "result-dq-audience", label: "受众分析", icon: Database }, - { id: "result-dq-kb", label: "知识研究", icon: Database }, - { id: "result-dq-trend", label: "趋势研究", icon: Database }, - ], - }, - { - id: "result-other", - label: "其他结果", - icon: MoreHorizontal, - children: [ - { id: "result-other-all", label: "全部", icon: BarChart3 }, - { id: "result-other-general", label: "通用分析", icon: MoreHorizontal }, - { id: "result-other-temp", label: "临时任务", icon: MoreHorizontal }, - { id: "result-other-other", label: "其他", icon: MoreHorizontal }, - ], - }, - ], - }, { id: "resource-management", label: "资源管理", icon: Database, children: [ - { - id: "resource-tags", - label: "标签管理", - icon: Tags, - path: "/page/strategy/admin/tags", - adminOnly: true, - }, - { id: "resource-zz", label: "ZZ资源", icon: FileBox }, - { id: "resource-network-actor", label: "网络达人", icon: Network }, - { id: "resource-knowledge-base", label: "知识库", icon: Library }, - { id: "resource-evaluation-index", label: "评估指标", icon: Scale }, + { id: "resource-network-xwt", label: "网络xwt资源管理", icon: Network }, + { id: "resource-knowledge-base", label: "知识库资源管理", icon: Library }, + { id: "resource-zz", label: "ZZ资源管理", icon: FileBox }, ], }, ]; @@ -299,8 +210,6 @@ const defaultExpandedIds = new Set([ "qa-center", "task-management", "xk-center-task", - "result-management", - "result-planning", ]); function filterMenuItemsByRole(items: MenuItem[], isAdmin: boolean): MenuItem[] { @@ -490,15 +399,8 @@ export function PageSidebar({ isDark ? "text-white" : "text-gray-900" }`} > - DeerFlow + CM助手 -

- Page Navigation -

)} diff --git a/frontend-web/src/open-canvas/components/ai-writing/AIWritingPanel.tsx b/frontend-web/src/open-canvas/components/ai-writing/AIWritingPanel.tsx index b5cdfaf1..8313c76f 100644 --- a/frontend-web/src/open-canvas/components/ai-writing/AIWritingPanel.tsx +++ b/frontend-web/src/open-canvas/components/ai-writing/AIWritingPanel.tsx @@ -48,7 +48,8 @@ const STATUS_LABEL: Record = { export function AIWritingPanel() { const navigate = useNavigate(); const { setArtifact } = useCanvasGraphContext(); - const { state, startWriting, submitIntervention, pauseWriting, resumeWriting, reset } = useAIWriting(); + // pauseWriting / resumeWriting 当前 UI 不暴露(见 header 注释),从解构里省略避免 unused 警告 + const { state, startWriting, submitIntervention, reset } = useAIWriting(); const { sessions, loading: sessionsLoading, refresh, rename, remove } = useAIWritingSessions(); const { articleTypes, refresh: refreshArticleTypes } = useArticleTypes(); @@ -269,34 +270,12 @@ export function AIWritingPanel() { 新建 )} - {isRunning && !state.isPaused && ( - - )} - {state.isPaused && ( - <> - - - - )} + {/* ⏸️/▶️ "停止 / 继续" 按钮暂时隐藏 —— + 当前实现是 stream.stop() 断 SSE 订阅而非真正取消后端 run, + 点了停止后端继续烧 token,点继续 useStream 也不会自动重连, + 用户体验是半残废的。等后期想清楚怎么"真·暂停"(cancel run + + 保留 checkpoint)+ "真·继续"(重新订阅同一 run)再加回来。 + hook 里的 pauseWriting / resumeWriting 代码保留以便后期复用。 */} {(isDone || isError) && ( )} - {/* ⏸️/▶️ "停止 / 继续" 按钮暂时隐藏 —— - 当前实现是 stream.stop() 断 SSE 订阅而非真正取消后端 run, - 点了停止后端继续烧 token,点继续 useStream 也不会自动重连, - 用户体验是半残废的。等后期想清楚怎么"真·暂停"(cancel run + - 保留 checkpoint)+ "真·继续"(重新订阅同一 run)再加回来。 - hook 里的 pauseWriting / resumeWriting 代码保留以便后期复用。 */} + {/* ⏸️/▶️ "停止 / 继续" 由 ENABLE_PAUSE_RESUME_UI 控制(默认 false 隐藏)。 + 后期把 flag 翻成 true 即可恢复,UI / hook 全套代码都已就位。 */} + {ENABLE_PAUSE_RESUME_UI && isRunning && !state.isPaused && ( + + )} + {ENABLE_PAUSE_RESUME_UI && state.isPaused && ( + <> + + + + )} {(isDone || isError) && (