Files
AIclinicalresearch/docs/03-业务模块/AIA-AI智能问答/04-开发计划/05-一键生成研究方案开发计划.md
HaHafeng 4d7d97ca19 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
2026-01-24 23:06:33 +08:00

10 KiB
Raw Blame History

一键生成研究方案 - 开发计划

版本: v1.1
创建日期: 2026-01-24
最后更新: 2026-01-24
负责人: AI Assistant
状态: 待开发


一、功能概述

目标

基于 Protocol Agent 收集的 5 个核心要素,一键生成完整的临床研究方案文档,支持在线编辑和 Word 导出。

核心价值

  • 将 5-10 小时的方案撰写工作缩短至 30 分钟
  • AI 生成 + 人工编辑,保证专业性和个性化
  • 输出符合伦理委员会审查要求的标准文档

二、交互设计:两阶段渐进式生成

第一阶段:对话框生成摘要

用户点击"一键生成研究方案"
        ↓
AI 在对话框中流式输出研究方案摘要约500字
        ↓
用户确认摘要 → 进入第二阶段
用户不满意 → 在对话中继续调整要素

摘要内容

  • 研究题目
  • 研究目的(主要/次要)
  • 研究设计概述
  • 样本量结论
  • 主要结局指标

第二阶段:方案编辑器生成完整方案

用户点击"生成完整方案"
        ↓
跳转到方案编辑器页面
        ↓
流式生成完整研究方案5000-8000字
        ↓
用户在线编辑 / AI协作润色
        ↓
导出 Word 文档

三、研究方案结构

# 临床研究方案

## 1. 研究题目
## 2. 研究背景与立题依据
## 3. 研究目的
## 4. 研究设计
## 5. 研究对象(纳入/排除标准)
## 6. 样本量估算
## 7. 研究实施步骤与技术路线
## 8. 观察指标
## 9. 数据管理与质量控制
## 10. 安全性评价
## 11. 统计分析计划
## 12. 伦理与知情同意
## 13. 研究时间表
## 14. 参考文献

四、方案编辑器设计

布局结构

┌────────────────────────────────────────────────────────────────┐
│  ← 返回    📄 研究方案编辑器    [自动保存✓]  [导出Word]  [发布] │
├──────────┬─────────────────────────────────────┬───────────────┤
│  📑 大纲  │         📝 编辑区                   │   🤖 AI助手   │
│          │                                     │               │
│  可点击   │  Notion 风格分块编辑                │  选中文本后: │
│  快速跳转 │  支持 Markdown + 富文本             │  - /ai 润色   │
│          │  Slash 命令 (/)                     │  - /ai 扩写   │
│          │  拖拽排序章节                        │  - /ai 精简   │
└──────────┴─────────────────────────────────────┴───────────────┘

核心功能

功能 说明 优先级
Slash 命令 输入 / 唤起菜单,支持 /ai 调用生成 P0
分块编辑 每个章节独立编辑,支持拖拽排序 P0
大纲导航 左侧目录,点击跳转 P0
自动保存 每30秒 + 失焦时保存 P0
导出Word Tiptap JSON → docx P0
AI润色 选中文本,/ai polish 优化 P1
AI扩写 选中章节,/ai expand 补充 P1
Ghost Text AI 生成时显示幽灵文字预览 P1
版本历史 查看修改记录,回滚 P2

五、技术方案

技术选型Novel (Fork)

选型结论Fork Novel 源码,而非 npm 包引入。

选择 Novel 的理由

因素 Novel 优势
AI 原生 专为 AI 写作设计,已处理流式生成的 UX 细节Ghost Text、光标锁定
标准 Tiptap 直接暴露 Tiptap 配置,可插入交互组件(样本量计算器、引用卡片)
可控性 源码在手100% 可定制 UI 和逻辑
对接成本 替换 useCompletion → useAIStream 即可对接现有后端

Fork 策略

不要 npm install novel

将 novel/packages/core/src 复制到:
frontend-v2/src/shared/components/ProtocolEditor/

目录结构:
├── index.tsx              # 主组件
├── extensions/            # Tiptap 扩展
│   ├── ai-autocomplete.ts # 替换为 useAIStream
│   ├── slash-command.tsx  # 保留 Slash 菜单
│   ├── citation.ts        # Phase 2: 文献引用
│   └── medical-table.ts   # Phase 2: 复杂表格
├── components/            # UI 组件
│   ├── EditorContent.tsx
│   ├── SlashMenu.tsx
│   └── BubbleMenu.tsx
└── styles/                # 样式(处理 Tailwind 冲突)
    └── editor.css

Tailwind CSS 冲突处理

/* 方案CSS 命名空间隔离 */
.novel-editor-scope {
  /* Novel 的 Tailwind 样式限制在此作用域 */
}

技术栈总览

前端编辑器Novel (Fork) - 基于 Tiptap/ProseMirror
├── 优点AI 原生、Notion 风格、源码可控
├── 核心Slash 命令、Ghost Text、拖拽排序
│
AI 调用:复用现有 useAIStream Hook
├── 替换 Novel 的 useCompletion (Vercel AI SDK)
├── 对接 /api/v1/aia/protocol-agent/generate
│
文档导出docx.js 或 @tiptap-pro/extension-export-docx
│
数据存储PostgreSQL (protocol_generations 表)

数据模型

-- 方案生成记录表
CREATE TABLE protocol_generations (
  id UUID PRIMARY KEY,
  conversation_id UUID REFERENCES conversations(id),
  user_id UUID REFERENCES users(id),
  
  -- 内容
  summary TEXT,           -- 摘要(第一阶段)
  full_content JSONB,     -- 完整方案Tiptap JSON标准格式
  
  -- 状态
  status VARCHAR(20),     -- draft | generating | completed
  version INT DEFAULT 1,
  
  -- 元数据
  word_file_url TEXT,     -- 导出的Word文件URL
  created_at TIMESTAMP,
  updated_at TIMESTAMP
);

API 设计

// 第一阶段:生成摘要(流式)
POST /api/v1/aia/protocol-agent/generate/summary
Request: { conversationId: string }
Response: SSE 流式输出摘要

// 第二阶段:生成完整方案(流式)
POST /api/v1/aia/protocol-agent/generate/full
Request: { conversationId: string }
Response: SSE 流式输出完整方案

// 保存编辑
PUT /api/v1/aia/protocol-agent/generation/:id
Request: { content: TiptapJSON }

// 导出Word
POST /api/v1/aia/protocol-agent/generation/:id/export
Response: { downloadUrl: string }

// AI编辑润色/扩写)
POST /api/v1/aia/protocol-agent/generation/:id/ai-edit
Request: { 
  action: 'polish' | 'expand' | 'simplify',
  selectedText: string,
  context: string
}
Response: SSE 流式输出

六、开发计划

Phase 1Fork Novel + 对接后端3天

目标3天内跑通"编辑器 + AI 流式生成"

天数 任务 交付物
Day 1 Fork Novel 源码 + 项目集成 编辑器基础渲染、Slash 菜单可用
Day 2 替换 AI 调用 → useAIStream /ai 命令可调用后端生成
Day 3 摘要生成 API + 编辑器页面路由 完整的"对话→摘要→编辑器"流程

Phase 1 交付

  • Notion 风格编辑器可用
  • /ai 命令可调用 Protocol Agent
  • 支持 Markdown 导出

Phase 2完整方案生成 + Word 导出3天

天数 任务 交付物
Day 4 完整方案生成 API流式 编辑器中流式显示完整方案
Day 5 自动保存 + 版本管理 数据库存储、草稿恢复
Day 6 Word 导出功能 docx 文件下载

Phase 2 交付

  • 完整方案流式生成
  • 自动保存
  • Word 导出

Phase 3医疗特性增强4天

天数 任务 交付物
Day 7 集成 Tiptap Table 扩展 复杂表格支持(访视排期表)
Day 8 开发 CitationBlock 文献引用组件(对接 PKB
Day 9 AI 润色/扩写优化 选中文本 AI 编辑体验
Day 10 测试 + UI 美化 完整功能测试

Phase 3 交付

  • 复杂表格支持
  • 文献引用功能
  • AI 协作编辑完善

七、风险与依赖

风险 影响 缓解措施
Tailwind CSS 冲突 样式混乱 CSS 命名空间隔离
Novel 源码维护成本 后续升级困难 代码量小(~2000行),可独立维护
LLM 生成质量不稳定 方案内容不专业 优化 Prompt + 人工模板
长文本生成超时 用户等待过久 分章节流式生成
Word 导出格式问题 格式错乱 预设 Word 模板

依赖项

  • Protocol Agent 5阶段数据收集已完成
  • StreamingService 流式输出(已完成)
  • useAIStream Hook已完成
  • Novel 源码 Fork待执行
  • docx.js 导出功能(待开发)

兜底方案

如果 Fork 的 Novel 代码难以维护:

  • 可回退到 Tiptap Headless
  • 用 Ant Design 重写 UI
  • 数据模型 (Tiptap JSON) 完全兼容,用户数据不丢失

八、验收标准

功能验收

  • 点击"一键生成",对话框流式输出摘要
  • 点击"生成完整方案",跳转编辑器并流式生成
  • 编辑器支持 Slash 命令 (/)
  • 编辑器支持章节拖拽排序
  • 选中文本可调用 AI 润色/扩写
  • 可导出标准格式的 Word 文档
  • 支持复杂表格编辑

性能指标

指标 目标
摘要生成时间 < 30秒
完整方案生成时间 < 3分钟
自动保存延迟 < 1秒
Word导出时间 < 5秒

九、后续迭代

  • v1.1: 方案模板库(不同研究类型)
  • v1.2: 多人协作编辑
  • v1.3: 方案审核流程
  • v1.4: 与伦理系统对接

十、参考文档


文档更新记录

  • 2026-01-24 v1.0: 初始版本技术选型Tiptap/BlockNote
  • 2026-01-24 v1.1: 技术选型改为 Novel (Fork),更新开发计划