样式修改

This commit is contained in:
董宏凯 committed 2026-05-21 16:39:48 +08:00
1 parent c69486556a
commit ca13a9199f
2 files changed
+12 -131

No files matched your search

+4 -102
View File
@@ -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助手
</h1>
<p
className={`text-xs theme-transition ${
isDark ? "text-blue-400/60" : "text-red-400/80"
}`}
>
Page Navigation
</p>
</div>
)}
</div>
@@ -48,7 +48,8 @@ const STATUS_LABEL: Record<string, string> = {
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() {
新建
</Button>
)}
{isRunning && !state.isPaused && (
<Button
variant="ghost"
size="sm"
className="h-7 px-2 text-xs gap-1 animate-breathe-stop text-red-400 hover:text-red-500 hover:bg-red-50 dark:hover:bg-red-950/30"
onClick={pauseWriting}
>
<Square className="size-3 fill-current" />
停止
</Button>
)}
{state.isPaused && (
<>
<Button
variant="ghost"
size="sm"
className="h-7 px-2 text-xs gap-1 text-primary hover:text-primary hover:bg-primary/8"
onClick={resumeWriting}
>
<Play className="size-3 fill-current" />
继续
</Button>
<Button variant="ghost" size="sm" className="h-7 px-2 text-xs gap-1" onClick={reset}>
<RotateCcw className="size-3" />
重置
</Button>
</>
)}
{/* ⏸️/▶️ "停止 / 继续" 按钮暂时隐藏 ——
当前实现是 stream.stop() 断 SSE 订阅而非真正取消后端 run,
点了停止后端继续烧 token,点继续 useStream 也不会自动重连,
用户体验是半残废的。等后期想清楚怎么"真·暂停"(cancel run +
保留 checkpoint)+ "真·继续"(重新订阅同一 run)再加回来。
hook 里的 pauseWriting / resumeWriting 代码保留以便后期复用。 */}
{(isDone || isError) && (
<Button variant="ghost" size="sm" className="h-7 px-2 text-xs gap-1" onClick={reset}>
<RotateCcw className="size-3" />