import React, { useState } from 'react'; import { Target, Clock, User, ChevronRight, Play, RotateCcw, Download, MessageSquare, AlertTriangle, CheckCircle, Bot, FileText, Lightbulb, ArrowRight, RefreshCw, Pause, Eye, Zap, Shield, AlertCircle, UserCheck, CheckCircle2, XCircle, Send, Plus, AtSign, FileInput, } from 'lucide-react'; import { useTheme } from '@/contexts/ThemeContext'; import { PageType } from '@/components/Sidebar'; interface TaskWorkspaceProps { onNavigate: (page: PageType) => void; } const TaskWorkspace: React.FC = ({ onNavigate }) => { const { theme } = useTheme(); const isDark = theme === 'dark'; const [currentPhase, setCurrentPhase] = useState(3); const [showHumanIntervention, setShowHumanIntervention] = useState(false); const [inputType, setInputType] = useState('question'); const [sendTarget, setSendTarget] = useState('current'); const [inputMessage, setInputMessage] = useState(''); // 逻辑链一致性检查数据 const logicChainChecks = [ { id: 'goal-behavior', label: '目标-行为', status: 'passed', detail: '行为与目标高度一致' }, { id: 'behavior-driver', label: '行为-驱动', status: 'passed', detail: '驱动有效支撑行为' }, { id: 'driver-narrative', label: '驱动-叙事', status: 'passed', detail: '叙事与驱动匹配' }, { id: 'narrative-audience', label: '叙事-受众', status: 'warning', detail: '叙事需进一步收窄以匹配核心受众' }, ]; // 待确认问题列表 const pendingQuestions = [ { id: 1, type: 'field', title: '受众范围收窄', description: '是否聚焦基层青年而非全体青年?', priority: 'high' }, { id: 2, type: 'conflict', title: '叙事方向待定', description: '真实性与话题性如何平衡?', priority: 'medium' }, ]; const phases = [ { id: 1, name: '目标分析', agent: 'GoalAgent', status: 'completed' }, { id: 2, name: '受众分析', agent: 'AudienceAgent', status: 'completed' }, { id: 3, name: '行为分析', agent: 'BehaviorAgent', status: 'active' }, { id: 4, name: '驱动分析', agent: 'DriverAgent', status: 'pending' }, { id: 5, name: '叙事分析', agent: 'NarrativeAgent', status: 'pending' }, { id: 6, name: '逻辑链收敛', agent: 'LogicChainAgent', status: 'pending' }, { id: 7, name: '风险评估', agent: 'RiskAgent', status: 'pending' }, { id: 8, name: '方案生成', agent: 'DraftAgent', status: 'pending' }, ]; const discussionCards = [ { id: 1, agent: 'GoalAgent', phase: '目标分析', time: '10:32', type: 'judgment', coreJudgment: '核心目标是提升品牌在年轻群体中的认知度和好感度', outputFields: { primary_goal: '提升品牌在Z世代用户中的认知度', secondary_goal: '建立品牌年轻化形象', }, releaseStatus: 'passed', riskWarnings: [], }, { id: 2, agent: 'AudienceAgent', phase: '受众分析', time: '11:15', type: 'judgment', coreJudgment: '核心受众应聚焦18-25岁基层青年群体,次级受众为25-30岁职场新人', outputFields: { core_audience: '18-25岁基层青年', secondary_audience: '25-30岁职场新人', audience_insights: ['社交媒体重度用户', '注重性价比', '偏好真实、有态度的品牌'], }, releaseStatus: 'passed', riskWarnings: ['受众范围可能过宽,建议进一步细化'], }, { id: 3, agent: 'BehaviorAgent', phase: '行为分析', time: '14:20', type: 'response', coreJudgment: '目标行为是促使受众主动参与互动并生成UGC内容', outputFields: { target_behavior: '主动参与话题讨论、生成UGC内容', key_conversion: '浏览 → 点赞 → 评论 → 转发 → 创作', }, releaseStatus: 'pending', riskWarnings: [], }, ]; const confirmedFields = { goal: '提升品牌在Z世代用户中的认知度', audience: '18-25岁基层青年', behavior: '主动参与互动并生成UGC内容', driver: '待分析', narrative: '待分析', }; const currentPhaseName = phases.find(p => p.status === 'active')?.name || '未知'; return (
{/* 顶部:运行状态栏(精简版 - 无流程图) */}
{/* 左侧:当前阶段和运行状态 */}

当前阶段

{currentPhaseName}

运行中
{/* 右侧:全局操作按钮 */}
{/* 三栏式主工作区 */}
{/* 左栏 - 任务与流程区 (22%) */}
{/* 任务信息卡 */}

任务信息

任务标题 五四青年节宣传活动策略
任务编号 TASK-0319-001
所属场景 宣传策略生成
张策略 2026-03-19
{/* 流程节点区 */}

流程节点

{phases.map((phase) => ( ))}
{/* 快捷操作卡 */}

快捷操作

{/* 中栏 - 讨论区 (47%) */}
{/* 当前议题卡 */}

当前议题

明确目标受众的行为模式和转化路径

BehaviorAgent
上游输入: AudienceAgent 已确认输出 → 核心受众已明确:18-25岁基层青年群体
{/* 讨论消息流 */}

讨论消息流

{discussionCards.map((card) => (

{card.agent}

{card.type === 'judgment' ? '独立判断' : '回应'}

{card.phase} · {card.time}

{card.releaseStatus === 'passed' ? ( <> 已放行 ) : card.releaseStatus === 'pending' ? ( <> 待放行 ) : ( <> 未通过 )}

核心观点

{card.coreJudgment}

输出字段摘要

{Object.entries(card.outputFields).map(([key, value]) => (
{key}: {Array.isArray(value) ? value.join(', ') : value}
))}
{card.riskWarnings.length > 0 && (

风险提示

{card.riskWarnings[0]}

)}
))} {/* 系统摘要卡 */}

系统摘要

已形成结论:

  • 核心受众明确为18-25岁基层青年
  • 目标行为建议拆分为参与和传播两层

待确认:

  • UGC创作是否纳入核心行为?

建议下一步:

邀请 DriverAgent 分析驱动因素

{/* 右栏 - 策略收敛区 (28%) */}
{/* 策略链卡 */}

策略链

面向【18-25岁基层青年】, 围绕其【社交认同与自我表达】驱动, 传播【真实、有态度的青年故事】叙事, 促使其产生【主动参与互动并生成UGC内容】行为, 从而实现【提升品牌在Z世代用户中的认知度】目标。

{/* 逻辑链一致性校验 */}

逻辑链一致性

3/4 通过
{logicChainChecks.map((check) => (
{check.label} {check.status === 'passed' ? ( ) : check.status === 'warning' ? ( ) : ( )}
))}
{/* 已采纳观点 */}

已采纳观点

{[ { agent: 'GoalAgent', opinion: '主目标是提升认知度与好感度' }, { agent: 'AudienceAgent', opinion: '核心受众为18-25岁基层青年' }, { agent: 'BehaviorAgent', opinion: '目标行为应拆为参与和传播' }, ].map((item, index) => (

{item.agent}

{item.opinion}

))}
{/* 待确认与分歧 */}

待确认与分歧

{pendingQuestions.length} 项
{pendingQuestions.map((question) => (

{question.title}

{question.description}

))}
{/* 底部:固定输入区 */}
{/* 发送对象选择 */} {/* 输入类型选择 */} {/* 主输入框 */} setInputMessage(e.target.value)} placeholder="输入问题、指令、人工判断或批注..." className={`flex-1 px-4 py-2 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-red-500/20 ${ isDark ? 'bg-slate-900/50 border border-blue-800/30 text-white placeholder-slate-500' : 'bg-white border border-gray-200 text-gray-900 placeholder-gray-400' }`} /> {/* 发送按钮 */}
{/* 第二行快捷操作 */}
{/* 人工干预弹窗 */} {showHumanIntervention && (

人工干预

{[ { value: 'correct', label: '人工修正', icon: RefreshCw }, { value: 'approve', label: '提前放行', icon: CheckCircle2 }, { value: 'override', label: '强制覆盖', icon: Zap }, { value: 'reject', label: '终止本轮', icon: XCircle }, ].map((type) => ( ))}