From f32de510fec99c92352692d8913636b2126072f4 Mon Sep 17 00:00:00 2001 From: fengxiangdebaozi <10845145+fengxiangdebaozi@user.noreply.gitee.com> Date: Thu, 23 Jul 2026 16:27:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=B3=B0=E5=9B=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/PositionBuiltinAgentChat.tsx | 14 ++-- .../components/PositionIntentInput.tsx | 18 ++--- .../components/PositionNodeChat.tsx | 14 ++-- .../pages/PositionRoundtablePage.tsx | 5 +- .../styles/agent-analysis.css | 76 +++++++++++++++++++ .../styles/intent-understanding.css | 72 ++++++++++++++++++ .../components/Step1Panel.tsx | 4 +- 7 files changed, 178 insertions(+), 25 deletions(-) create mode 100644 frontend-web/src/position-roundtable/styles/agent-analysis.css create mode 100644 frontend-web/src/position-roundtable/styles/intent-understanding.css diff --git a/frontend-web/src/position-roundtable/components/PositionBuiltinAgentChat.tsx b/frontend-web/src/position-roundtable/components/PositionBuiltinAgentChat.tsx index e62c5efa..a202b185 100644 --- a/frontend-web/src/position-roundtable/components/PositionBuiltinAgentChat.tsx +++ b/frontend-web/src/position-roundtable/components/PositionBuiltinAgentChat.tsx @@ -500,12 +500,12 @@ export function PositionBuiltinAgentChat({ return ( -
-
- +
+
+ {canWrite ? : } -
+

{agentDisplayName}

@@ -536,7 +536,7 @@ export function PositionBuiltinAgentChat({
{persistedArtifacts.length > 0 && ( -
+
阶段产物 @@ -572,7 +572,7 @@ export function PositionBuiltinAgentChat({ {boundThreadId ? ( )} -
+
(null); return ( -
-
+
+
{attachedFiles.length > 0 && ( -
+
{attachedFiles.map((file, index) => ( @@ -154,7 +154,7 @@ export function PositionIntentInput({ Parent pages can still hide optional actions by their stable ids without changing this component's layout or global input styles. */} -
+
fileInputRef.current?.click()} title="上传参考文件" aria-label="上传参考文件" - className="flex size-10 items-center justify-center rounded-[4px] border border-slate-200 bg-white text-slate-500 transition hover:border-primary/45 hover:text-primary dark:border-[#2b8ffe]/35 dark:bg-[#102f63] dark:text-[#b9d3f7] dark:hover:bg-[#1a417b] dark:hover:text-[#73c8ff]" + className="position-roundtable-intent-upload-btn flex size-10 items-center justify-center rounded-[4px] border border-slate-200 bg-white text-slate-500 transition hover:border-primary/45 hover:text-primary dark:border-[#2b8ffe]/35 dark:bg-[#102f63] dark:text-[#b9d3f7] dark:hover:bg-[#1a417b] dark:hover:text-[#73c8ff]" >
-
+
{modelOptions.length > 0 && (
@@ -200,7 +200,7 @@ export function PositionIntentInput({ type="button" onClick={onSend} disabled={!canSend} - className="flex h-10 shrink-0 items-center gap-1.5 rounded-[4px] bg-primary px-3 text-xs font-bold text-white shadow-[0_2px_8px_rgba(245,34,45,0.15)] transition-all active:scale-[0.98] hover:bg-[var(--brand-900)] disabled:cursor-not-allowed disabled:bg-slate-300 dark:bg-[#1478e8] dark:hover:bg-[#2995ff] dark:disabled:bg-[#28476f]" + className="position-roundtable-intent-send-btn flex h-10 shrink-0 items-center gap-1.5 rounded-[4px] bg-primary px-3 text-xs font-bold text-white shadow-[0_2px_8px_rgba(245,34,45,0.15)] transition-all active:scale-[0.98] hover:bg-[var(--brand-900)] disabled:cursor-not-allowed disabled:bg-slate-300 dark:bg-[#1478e8] dark:hover:bg-[#2995ff] dark:disabled:bg-[#28476f]" > {isSending ? : } {isSending ? "发送中" : "发送"} diff --git a/frontend-web/src/position-roundtable/components/PositionNodeChat.tsx b/frontend-web/src/position-roundtable/components/PositionNodeChat.tsx index 7b50184e..eb04b1db 100644 --- a/frontend-web/src/position-roundtable/components/PositionNodeChat.tsx +++ b/frontend-web/src/position-roundtable/components/PositionNodeChat.tsx @@ -570,12 +570,12 @@ export function PositionNodeChat({ return ( -
-
- +
+
+ {node.status === "locked" ? : } -
+

{agentDisplayName}

@@ -644,7 +644,7 @@ export function PositionNodeChat({
{nodeArtifacts.length > 0 && ( -
+
节点产物 @@ -680,7 +680,7 @@ export function PositionNodeChat({ {boundThreadId ? ( )} -
+
( -
+
{intent.intentInitError && (
对话初始化失败:{intent.intentInitError} @@ -1532,6 +1534,7 @@ export default function PositionRoundtablePage({ {/* Step1Panel retains intent state; only the composer is replaced so this workspace can evolve its visual language without changing other Step 1 pages. */} diff --git a/frontend-web/src/position-roundtable/styles/agent-analysis.css b/frontend-web/src/position-roundtable/styles/agent-analysis.css new file mode 100644 index 00000000..743d6b9d --- /dev/null +++ b/frontend-web/src/position-roundtable/styles/agent-analysis.css @@ -0,0 +1,76 @@ +/* + * 岗位会商 - 其他岗位智能体分析页面专属样式 + * + * 覆盖范围: + * - 普通业务链节点:PositionNodeChat + * - 内置收口节点:PositionBuiltinAgentChat(方案总结 / 行动规划) + * + * 后续如果要调岗位智能体聊天页、产物条、输入区,优先改这个文件。 + */ + +.position-roundtable-agent-analysis-page { + --prt-agent-panel-bg: #ffffff; + --prt-agent-header-bg: #ffffff; + --prt-agent-header-border: rgb(241 245 249); + --prt-agent-artifact-bg: rgba(248, 250, 252, 0.72); + --prt-agent-composer-bg: #ffffff; + --prt-agent-border: rgb(241 245 249); + --prt-agent-title-color: rgb(15 23 42); + --prt-agent-muted-color: rgb(100 116 139); + --prt-agent-avatar-bg: rgba(245, 34, 45, 0.1); + --prt-agent-avatar-color: var(--primary); +} + +.dark .position-roundtable-agent-analysis-page { + --prt-agent-panel-bg: rgba(3, 38, 80, 0.62); + --prt-agent-header-bg: rgba(3, 38, 80, 0.74); + --prt-agent-header-border: rgba(43, 143, 254, 0.2); + --prt-agent-artifact-bg: rgba(3, 38, 80, 0.5); + --prt-agent-composer-bg: rgba(3, 38, 80, 0.64); + --prt-agent-border: rgba(43, 143, 254, 0.2); + --prt-agent-title-color: #e8edf5; + --prt-agent-muted-color: #8aa0c4; + --prt-agent-avatar-bg: rgba(43, 143, 254, 0.16); + --prt-agent-avatar-color: #73c8ff; +} + +.position-roundtable-agent-analysis-page { + background: var(--prt-agent-panel-bg); +} + +.position-roundtable-agent-header { + border-color: var(--prt-agent-header-border); + background: var(--prt-agent-header-bg); +} + +.position-roundtable-agent-avatar { + background: var(--prt-agent-avatar-bg); + color: var(--prt-agent-avatar-color); +} + +.position-roundtable-agent-title h2 { + color: var(--prt-agent-title-color); +} + +.position-roundtable-agent-title p { + color: var(--prt-agent-muted-color); +} + +.position-roundtable-agent-artifacts { + border-color: var(--prt-agent-border); + background: var(--prt-agent-artifact-bg); +} + +.position-roundtable-agent-message-list { + background: var(--prt-agent-panel-bg); +} + +.position-roundtable-agent-composer-bar { + border-color: var(--prt-agent-border); + background: var(--prt-agent-composer-bg); +} + +.position-roundtable-agent-input { + --prt-agent-input-radius: 14px; +} + diff --git a/frontend-web/src/position-roundtable/styles/intent-understanding.css b/frontend-web/src/position-roundtable/styles/intent-understanding.css new file mode 100644 index 00000000..7cdd385a --- /dev/null +++ b/frontend-web/src/position-roundtable/styles/intent-understanding.css @@ -0,0 +1,72 @@ +/* + * 岗位会商 - 意图理解页面专属样式 + * + * 这个文件只服务 `PositionRoundtablePage` 里的意图理解区域。 + * 后续手写样式优先改这里,尽量不要再往 globals.css 或组件 className 里堆。 + */ + +.position-roundtable-intent-page { + --prt-intent-panel-bg: #ffffff; + --prt-intent-panel-border: rgb(226 232 240); + --prt-intent-composer-bg: #f7faff; + --prt-intent-composer-frame-bg: #ffffff; + --prt-intent-composer-border: rgb(203 213 225); + --prt-intent-toolbar-bg: #ffffff; + --prt-intent-text-color: rgb(51 65 85); + --prt-intent-muted-color: rgb(100 116 139); + --prt-intent-radius: 4px; +} + +.dark .position-roundtable-intent-page { + --prt-intent-panel-bg: rgba(3, 38, 80, 0.72); + --prt-intent-panel-border: rgba(43, 143, 254, 0.28); + --prt-intent-composer-bg: #071a38; + --prt-intent-composer-frame-bg: #0d2855; + --prt-intent-composer-border: rgba(43, 143, 254, 0.55); + --prt-intent-toolbar-bg: #0b234c; + --prt-intent-text-color: #e7f0ff; + --prt-intent-muted-color: #8aa0c4; +} + +.position-roundtable-intent-panel { + background: var(--prt-intent-panel-bg); +} + +.position-roundtable-intent-panel > div:first-child { + border-color: var(--prt-intent-panel-border); +} + +.position-roundtable-intent-panel > div:nth-child(2) > div:first-child { + background: var(--prt-intent-panel-bg); +} + +.position-roundtable-intent-composer { + background: var(--prt-intent-composer-bg); +} + +.position-roundtable-intent-composer-frame { + border-color: var(--prt-intent-composer-border); + border-radius: var(--prt-intent-radius); + background: var(--prt-intent-composer-frame-bg); +} + +.position-roundtable-intent-textarea { + color: var(--prt-intent-text-color); +} + +.position-roundtable-intent-toolbar { + background: var(--prt-intent-toolbar-bg); +} + +.position-roundtable-intent-attachments { + color: var(--prt-intent-muted-color); +} + +.position-roundtable-intent-actions { + row-gap: 6px; +} + +.position-roundtable-intent-model-switch { + border-radius: var(--prt-intent-radius); +} + diff --git a/frontend-web/src/roundtable-planning/components/Step1Panel.tsx b/frontend-web/src/roundtable-planning/components/Step1Panel.tsx index c0da7f87..f5022ed5 100644 --- a/frontend-web/src/roundtable-planning/components/Step1Panel.tsx +++ b/frontend-web/src/roundtable-planning/components/Step1Panel.tsx @@ -95,6 +95,7 @@ export interface Step1InputAreaProps { } export interface Step1PanelProps { + rootClassName?: string; // ─── State ──────────────────────────────────────────────────── /** * 头部左侧自定义内容(深链 taskId 模式:用「策划流程」小图取代默认标题)。 @@ -141,6 +142,7 @@ export function Step1Panel(props: Step1PanelProps) { const { headerLeftSlot, headerRightSlot, + rootClassName, interactiveMessages, intentThreadId, intentReady, @@ -210,7 +212,7 @@ export function Step1Panel(props: Step1PanelProps) { const headerDzRef = useDesensitizeSubtree(); return ( -
+
{/* Dialogue Header */}
{headerLeftSlot ?? (