diff --git a/wwwroot/index.ui b/wwwroot/index.ui index eebdc86..6376206 100644 --- a/wwwroot/index.ui +++ b/wwwroot/index.ui @@ -106,90 +106,15 @@ "binds": [] }, { - "widgettype": "VBox", + "widgettype": "AgentIO", + "id": "chat_io", "options": { "css": "filler", - "width": "100%", - "height": "100%", - "padding": "0 24px 0 24px", - "gap": "0" - }, - "subwidgets": [ - { - "widgettype": "AgentIO", - "id": "chat_scroll", - "options": { - "css": "filler", - "width": "100%", - "height": "100%", - "bgcolor": "#f8fafc", - "border": "1px solid #e2e8f0", - "borderBottom": "none", - "borderRadius": "8px 8px 0 0", - "padding": "16px", - "url": "/pipeline-sdlc/api/cockpit_chat.dspy" - }, - "subwidgets": [ - { - "widgettype": "VBox", - "options": { - "alignItems": "center", - "padding": "40px 0", - "gap": "12px" - }, - "subwidgets": [ - { - "widgettype": "Text", - "options": { - "text": "选择一个迭代后,在下方输入你的需求。", - "cfontsize": 1, - "color": "#64748b" - } - }, - { - "widgettype": "Text", - "options": { - "text": "Agent 将自动分析需求、生成设计、驱动产线执行。", - "cfontsize": 0.85, - "color": "#94a3b8" - } - } - ] - } - ], - "binds": [] - }, - { - "widgettype": "VBox", - "options": { - "bgcolor": "#fff", - "border": "1px solid #e2e8f0", - "borderTop": "none", - "borderRadius": "0 0 8px 8px", - "padding": "0" - }, - "subwidgets": [ - { - "widgettype": "AgentIO", - "id": "chat_input", - "options": { - "placeholder": "输入你的需求...", - "model_dataurl": "/pipeline-sdlc/api/cockpit_model_options.dspy", - "model_cwidth": 14 - }, - "binds": [ - { - "wid": "self", - "event": "inputed", - "actiontype": "script", - "target": "self", - "script": "var p=params.prompt;var mid=params.model_id||'';if(typeof mid==='object'&&mid!==null)mid=mid.model_id||'';var ctx=bricks.getWidgetById('context_data',bricks.app);var cd=ctx?ctx.getValue():{};var iid=cd.iteration_id||'';var pid=cd.project_id||'';var fnames=params.file_names||[];var chat=bricks.getWidgetById('chat_scroll',bricks.app);var at=null;if(chat){var ub=new bricks.HBox({width:'100%'});var um=new bricks.VBox({width:'85%',alignSelf:'flex-end',bgcolor:'#dbeafe',borderRadius:'12px',padding:'12px 16px',marginBottom:'10px',gap:'4px'});um.add_widget(new bricks.Text({text:'你',cfontsize:0.75,color:'#2563eb',fontWeight:'bold'}));um.add_widget(new bricks.Text({text:p,cfontsize:0.95,color:'#1e293b',whiteSpace:'pre-wrap'}));ub.add_widget(new bricks.VBox({css:'filler'}));ub.add_widget(um);ub.add_widget(new bricks.Svg({rate:2,url:bricks_resource('imgs/chat-user.svg')}));chat.add_widget(ub);var ab=new bricks.HBox({width:'100%'});var am=new bricks.VBox({width:'85%',alignSelf:'flex-start',bgcolor:'#e8f0fe',borderRadius:'12px',padding:'12px 16px',marginBottom:'10px',gap:'4px'});am.add_widget(new bricks.Text({text:'Agent',cfontsize:0.75,color:'#3b82f6',fontWeight:'bold'}));at=new bricks.Text({text:'正在分析需求...',cfontsize:0.85,color:'#64748b'});am.add_widget(at);ab.add_widget(new bricks.Svg({rate:2,url:bricks_resource('imgs/llm.svg')}));ab.add_widget(am);ab.add_widget(new bricks.VBox({css:'filler'}));chat.add_widget(ab);}var fd=new FormData();fd.append('action','send_message');fd.append('message_text',p);fd.append('model_id',mid);fd.append('iteration_id',iid);fd.append('project_id',pid);fd.append('file_paths',JSON.stringify(fnames));fetch('/pipeline-sdlc/api/cockpit_chat.dspy',{method:'POST',body:fd}).then(function(r){return r.json()}).then(function(r){if(r.success){if(at)at.set_text(r.agent_reply||'已处理');var s=bricks.getWidgetById('stats_row',bricks.app);if(s)s.render({});}else{if(at)at.set_text('错误: '+(r.error||'未知错误'));}}).catch(function(e){if(at)at.set_text('网络错误: '+e.message);});" - } - ] - } - ] - } - ] + "url": "/pipeline-sdlc/api/cockpit_chat.dspy", + "model_dataurl": "/pipeline-sdlc/api/cockpit_model_options.dspy", + "model_cwidth": 14, + "placeholder": "输入你的需求..." + } } ] } \ No newline at end of file