feat(aia): Protocol Agent streaming + editable state panel + protocol generation plan
Day 2 Development (2026-01-24): Backend Enhancements: - Implement SSE streaming in ProtocolAgentController using createStreamingService - Add data condensation via LLM in ProtocolOrchestrator.handleProtocolSync - Support stage editing without resetting progress - Add explicit JSON output format for each stage in system prompt - Create independent seed script for Protocol Agent (seed-protocol-agent.ts) Frontend Improvements: - Integrate useAIStream hook for typewriter effect in ChatArea - Add MarkdownContent component for basic Markdown rendering - Implement StageEditModal for editing stage data (scientific question, PICO, etc.) - Add edit button to StageCard (visible on hover) - Fix routing paths from /aia to /ai-qa - Enhance CSS with full-screen layout and Markdown styles New Documentation: - One-click protocol generation development plan (v1.1) - Editor selection evaluation (Novel vs BlockNote vs Tiptap) - Novel fork strategy for AI-native editing Technical Decisions: - Choose Novel (Fork) as protocol editor for AI-first design - Two-stage progressive generation: summary in chat, full protocol in editor - 10-day development plan for protocol generation feature Code Stats: - Backend: 3 files modified, 1 new file - Frontend: 9 files modified, 2 new files - Docs: 3 new files Status: Streaming and editable features working, protocol generation pending
This commit is contained in:
@@ -2,9 +2,9 @@
|
||||
* AIA - AI Intelligent Assistant 模块入口
|
||||
*
|
||||
* 路由管理:
|
||||
* - /aia -> Hub: 智能体大厅(12个模块展示)
|
||||
* - /aia/chat -> Chat: 沉浸式对话工作台(原12个智能体)
|
||||
* - /aia/protocol-agent/:conversationId? -> Protocol Agent(全流程方案制定)
|
||||
* - /ai-qa -> Hub: 智能体大厅(12个模块展示)
|
||||
* - /ai-qa/chat -> Chat: 沉浸式对话工作台(原12个智能体)
|
||||
* - /ai-qa/protocol-agent/:conversationId? -> Protocol Agent(全流程方案制定)
|
||||
*/
|
||||
|
||||
import React, { useState } from 'react';
|
||||
@@ -40,12 +40,12 @@ const AIAHub: React.FC = () => {
|
||||
|
||||
if (agent.isProtocolAgent) {
|
||||
// Protocol Agent:跳转专属页面
|
||||
console.log('[AIAHub] Navigating to /aia/protocol-agent');
|
||||
navigate('/aia/protocol-agent');
|
||||
console.log('[AIAHub] Navigating to /ai-qa/protocol-agent');
|
||||
navigate('/ai-qa/protocol-agent');
|
||||
} else {
|
||||
// 传统智能体:跳转对话页面
|
||||
console.log('[AIAHub] Navigating to /aia/chat');
|
||||
navigate('/aia/chat', { state: { agent, initialQuery: agent.initialQuery } });
|
||||
console.log('[AIAHub] Navigating to /ai-qa/chat');
|
||||
navigate('/ai-qa/chat', { state: { agent, initialQuery: agent.initialQuery } });
|
||||
}
|
||||
};
|
||||
|
||||
@@ -61,11 +61,11 @@ const AIAChat: React.FC = () => {
|
||||
const state = location.state as { agent: AgentConfig; initialQuery?: string } | null;
|
||||
|
||||
const handleBack = () => {
|
||||
navigate('/aia');
|
||||
navigate('/ai-qa');
|
||||
};
|
||||
|
||||
if (!state?.agent) {
|
||||
navigate('/aia');
|
||||
navigate('/ai-qa');
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user