From 1ffead7ee2d9e26ae2d82a417b13eca9be2d55b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=87=AF?= Date: Sun, 2 Aug 2026 15:33:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B2=97=E4=BD=8D=E4=BC=9A=E5=95=86=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../assets/position-roundtable/edit-task.svg | 1 + .../demo/position-roundtable-demo.ts | 1 + .../lib/mock-task-source.ts | 2 + .../pages/PositionRoundtablePage.tsx | 184 +++++++++++++++--- .../styles/intent-understanding.css | 117 +++++++++++ 5 files changed, 275 insertions(+), 30 deletions(-) create mode 100644 frontend-web/src/assets/position-roundtable/edit-task.svg diff --git a/frontend-web/src/assets/position-roundtable/edit-task.svg b/frontend-web/src/assets/position-roundtable/edit-task.svg new file mode 100644 index 00000000..ab6762a2 --- /dev/null +++ b/frontend-web/src/assets/position-roundtable/edit-task.svg @@ -0,0 +1 @@ + diff --git a/frontend-web/src/position-roundtable/demo/position-roundtable-demo.ts b/frontend-web/src/position-roundtable/demo/position-roundtable-demo.ts index f4bd57b4..ebd81e9f 100644 --- a/frontend-web/src/position-roundtable/demo/position-roundtable-demo.ts +++ b/frontend-web/src/position-roundtable/demo/position-roundtable-demo.ts @@ -97,6 +97,7 @@ export function getPositionDemoTask(): PositionTask { direction: String(task.direction ?? ""), source: String(task.source ?? "演示数据"), issuedAt: String(task.issuedAt ?? ""), + priority: String(task.priority ?? "紧急"), }; } diff --git a/frontend-web/src/position-roundtable/lib/mock-task-source.ts b/frontend-web/src/position-roundtable/lib/mock-task-source.ts index 206084a5..cc7f0d7c 100644 --- a/frontend-web/src/position-roundtable/lib/mock-task-source.ts +++ b/frontend-web/src/position-roundtable/lib/mock-task-source.ts @@ -13,6 +13,7 @@ export interface PositionTask { direction: string; source: string; issuedAt: string; + priority?: string; } export const MOCK_POSITION_TASKS: readonly PositionTask[] = [ @@ -53,6 +54,7 @@ export function taskFromPositionSnapshot( title: value(["title", "taskName", "name"], fallback.title), description: value(["description", "taskContent", "overview", "content"], fallback.description), direction: value(["direction", "taskDirection", "category"], fallback.direction), + priority: value(["priority", "level", "urgency"], fallback.priority ?? "紧急"), source: (() => { const source = value(["source", "taskSource", "sourceName"], fallback.source); return source === "mock" ? "本系统创建" : source; diff --git a/frontend-web/src/position-roundtable/pages/PositionRoundtablePage.tsx b/frontend-web/src/position-roundtable/pages/PositionRoundtablePage.tsx index df40752e..41d491c1 100644 --- a/frontend-web/src/position-roundtable/pages/PositionRoundtablePage.tsx +++ b/frontend-web/src/position-roundtable/pages/PositionRoundtablePage.tsx @@ -74,6 +74,7 @@ import { textOfMessage } from "@/core/threads/utils"; import { desensitize } from "@/lib/desensitize"; import { cn } from "@/lib/utils"; import expandLogo from "@/assets/position-roundtable/expand-logo.svg"; +import editTaskIcon from "@/assets/position-roundtable/edit-task.svg"; import { listChains } from "@/roundtable-planning/api/chains"; import { Step1Panel } from "@/roundtable-planning/components/Step1Panel"; import { PositionIntentInput } from "@/position-roundtable/components/PositionIntentInput"; @@ -1071,6 +1072,7 @@ export default function PositionRoundtablePage({ const nextTask: PositionTask = { ...task, title, + priority: taskDraft.priority?.trim() || task.priority || "紧急", description: taskDraft.description.trim(), direction: taskDraft.direction.trim() || task.direction, source: taskDraft.source.trim() || task.source, @@ -2594,34 +2596,33 @@ export default function PositionRoundtablePage({ {leftSidebarHidden && ( @@ -3878,6 +3879,82 @@ function TaskAnalysisPanel({ ); } +function PositionRoundtableEntrySidebar({ + task, + editable, + onEditTask, + chains, + loading, + value, + onChange, + onConfigure, +}: { + task: PositionTask; + editable: boolean; + onEditTask: () => void; + chains: BusinessChain[]; + loading: boolean; + value: string; + onChange: (value: string) => void; + onConfigure: (chainId: string) => void; +}) { + const displayDescription = + task.id === DEFAULT_MOCK_POSITION_TASK_ID + ? "围绕暑期活动的游泳夏令营开展宣传,结合线上线下渠道吸引目标人群参与,持续提升活动影响力。" + : desensitize(task.description); + + return ( +
+
+ {editable && ( + + )} +

{desensitize(task.title)}

+
+ {desensitize(task.priority || "紧急")} + {desensitize(task.source)} + {desensitize(task.direction)} +
+

{desensitize(task.description)}

+
+ +
+
+
+
+ {loading ? ( +
正在加载作业链条…
+ ) : chains.length === 0 ? ( +
暂无可用作业链条
+ ) : ( + chains.map((chain) => { + const selected = chain.id === value; + return ( +
+