import React, { useState } from 'react'; import { ArrowLeft, Save, RotateCcw, Play, Pause, Settings, FileText, GitBranch, ListChecks, Shield, Bot, Clock, CheckCircle, X, Plus, ChevronDown, AlertTriangle } from 'lucide-react'; import { useTheme } from '../contexts/ThemeContext'; interface SceneDetailProps { sceneId: string | null; onBack: () => void; } interface FlowNode { id: number; name: string; agent: string; status: 'completed' | 'active' | 'pending'; inputs: number; outputs: number; inputSource: string[]; outputFields: string[]; releaseCondition: string; rollbackNode: string; allowParallel: boolean; description: string; } const SceneDetail: React.FC = ({ sceneId, onBack }) => { const { theme } = useTheme(); const isDark = theme === 'dark'; // 主题颜色类 const cardBg = isDark ? 'bg-slate-800/30' : 'bg-white'; const cardBorder = isDark ? 'border-blue-800/30' : 'border-red-200'; const textPrimary = isDark ? 'text-white' : 'text-gray-900'; const textSecondary = isDark ? 'text-slate-400' : 'text-gray-600'; const textMuted = isDark ? 'text-slate-500' : 'text-gray-500'; const btnSecondary = isDark ? 'bg-slate-700/50 hover:bg-slate-600/50 border-blue-800/30 text-slate-300' : 'bg-gray-100 hover:bg-gray-200 border-gray-300 text-gray-700'; const btnPrimary = isDark ? 'bg-blue-600 hover:bg-blue-500' : 'bg-red-600 hover:bg-red-500'; const inputBg = isDark ? 'bg-slate-900/50' : 'bg-gray-50'; const inputBorder = isDark ? 'border-blue-800/30' : 'border-gray-300'; const [activeTab, setActiveTab] = useState('flow'); const [selectedNode, setSelectedNode] = useState(null); const tabs = [ { id: 'basic', label: '基础设置', icon: FileText }, { id: 'flow', label: '流程编排', icon: GitBranch }, { id: 'template', label: '输入输出模板', icon: ListChecks }, { id: 'rules', label: '运行规则', icon: Shield }, ]; const flowNodes: FlowNode[] = [ { id: 1, name: '目标分析', agent: 'GoalAgent', status: 'completed', inputs: 2, outputs: 3, inputSource: ['task_background', 'primary_goal_hint'], outputFields: ['goal_model.primary_goal', 'goal_model.secondary_goal'], releaseCondition: '目标明确且可量化', rollbackNode: '无', allowParallel: false, description: '分析并确定宣传的核心目标' }, { id: 2, name: '受众分析', agent: 'AudienceAgent', status: 'completed', inputs: 3, outputs: 4, inputSource: ['goal_model', 'task_background'], outputFields: ['audience_model.core_audience', 'audience_model.secondary_audience'], releaseCondition: '核心受众明确', rollbackNode: '目标分析', allowParallel: false, description: '分析目标受众特征和需求' }, { id: 3, name: '行为分析', agent: 'BehaviorAgent', status: 'active', inputs: 4, outputs: 3, inputSource: ['audience_model', 'goal_model'], outputFields: ['behavior_model.target_behavior', 'behavior_model.conversion_path'], releaseCondition: '目标行为明确', rollbackNode: '受众分析', allowParallel: false, description: '设计目标受众的预期行为' }, { id: 4, name: '驱动分析', agent: 'DriverAgent', status: 'pending', inputs: 3, outputs: 2, inputSource: ['behavior_model', 'audience_model'], outputFields: ['driver_model.primary_driver', 'driver_model.secondary_driver'], releaseCondition: '核心驱动明确', rollbackNode: '行为分析', allowParallel: true, description: '分析影响受众行为的关键驱动因素' }, { id: 5, name: '叙事分析', agent: 'NarrativeAgent', status: 'pending', inputs: 2, outputs: 4, inputSource: ['driver_model', 'audience_model'], outputFields: ['narrative_model.core_narrative', 'narrative_model.message_points'], releaseCondition: '叙事框架明确', rollbackNode: '驱动分析', allowParallel: false, description: '设计传播叙事策略' }, { id: 6, name: '逻辑链收敛', agent: 'LogicChainAgent', status: 'pending', inputs: 4, outputs: 2, inputSource: ['goal_model', 'audience_model', 'behavior_model', 'narrative_model'], outputFields: ['strategy_chain.logic_statement', 'strategy_chain.consistency_score'], releaseCondition: '逻辑链校验通过', rollbackNode: '叙事分析', allowParallel: false, description: '验证策略链完整性和一致性' }, { id: 7, name: '风险评估', agent: 'RiskAgent', status: 'pending', inputs: 2, outputs: 3, inputSource: ['strategy_chain', 'task_constraints'], outputFields: ['risk_model.risk_items', 'risk_model.mitigation_suggestions'], releaseCondition: '高风险项已处理', rollbackNode: '逻辑链收敛', allowParallel: true, description: '评估策略执行风险' }, { id: 8, name: '方案生成', agent: 'DraftAgent', status: 'pending', inputs: 3, outputs: 5, inputSource: ['strategy_chain', 'narrative_model', 'risk_model'], outputFields: ['final_plan', 'execution_timeline', 'evaluation_metrics'], releaseCondition: '方案完整可执行', rollbackNode: '风险评估', allowParallel: false, description: '生成最终宣传方案' }, ]; const sceneSummary = { flowNodesCount: 8, boundAgentsCount: 8, serialNodes: 6, parallelNodes: 2, logicChainEnabled: true, lastPublishedTime: '2026-03-18 14:30', }; const inputTemplate = [ { name: '任务标题', type: 'STRING', required: true }, { name: '任务背景', type: 'TEXT', required: true }, { name: '上级要求', type: 'TEXT', required: false }, { name: '时间要求', type: 'DATE', required: true }, { name: '资源条件', type: 'JSON', required: false }, { name: '风险边界', type: 'TEXT', required: false }, ]; const outputTemplate = { middle: ['goal_model', 'audience_model', 'behavior_model', 'driver_model', 'narrative_model', 'strategy_chain'], final: ['讨论结果摘要', '最终策略链', '正式方案', '风险说明', '评估指标'], }; return (
{/* 顶部导航 */}

业务链条配置详情

启用

{/*
*/}
{/* Tab切换 */} {/*
{tabs.map((tab) => { const Icon = tab.icon; return ( ); })}
*/} {/* 内容区 */}
{/* 主内容区 */}
{activeTab === 'basic' && (
{/* 左侧表单区 */}

基础信息