演示闭环纵向任务拆分.md 22 KB


doc_id: DEV-202606-001 feature_id: FEAT-202606-001-unified-entry-client type: dev-progress title: 统一入口客户端演示闭环纵向任务拆分 status: implemented owner: 医梦研发团队 created_at: 2026-06-02 updated_at: 2026-06-02 reviewers: [] related_docs:

  • PRD-202606-001
  • DDS-202606-001
  • API-202606-001 related_modules:
  • emoon-openplatform
  • emoon-ai-device
  • emoon-ai-agent
  • emoon-ai-card
  • emoon-ai-mcp tags:
  • 统一入口客户端
  • 任务拆分
  • 演示闭环 ---

统一入口客户端演示闭环纵向任务拆分

用途:团队任务分配。每个任务包按“用户可感知的纵向能力”拆分,尽量覆盖前端、后端、Mock HIS、测试和验收,而不是按纯技术层横切。

公共必读文档

所有参与人员开工前必须读透:

文档 必须理解的点
docs/standards/AI中台工程约束.md 模块边界、依赖方向、Controller 不直连 Mapper、Card 不绕过 Agent 调 MCP
docs/standards/工程规约生效说明.md 架构测试和新 AI 模块落位规则
docs/initiatives/FEAT-202606-001-unified-entry-client/对外接口联调基准.md 终端调用白名单、SSE、Card Action、HIS Tool 风险分级、Mock/真实适配边界
docs/initiatives/FEAT-202606-001-unified-entry-client/详细设计.md 统一入口整体架构、AgentRouter、TaskState、Card Runtime、MCP/HIS Adapter 职责
docs/initiatives/FEAT-202606-001-unified-entry-client/MVP接口契约.md 前端真实调用接口、SSE 事件、卡片动作、错误码
docs/initiatives/FEAT-202606-001-unified-entry-client/需求文档.md 演示范围冻结、DeepSeek/Dify/Card/MCP 分工、SQLite Mock HIS 口径
docs/initiatives/FEAT-202606-001-unified-entry-client/design/终端Web演示设计.md 前端 UI 定稿:A+B、品牌色、对话优先、右侧医生形象/卡片状态
docs/initiatives/FEAT-202606-001-unified-entry-client/dev-progress/统一入口挂号演示实施计划.md 后端挂号演示闭环详细任务
docs/initiatives/FEAT-202606-001-unified-entry-client/dev-progress/终端Web演示实施计划.md 前端 Web Demo 详细任务
.superpowers/brainstorm/86383-1780383912/content/ui-direction-options.html 初始 UI 方向对比,理解为什么最终选择单应用 Web Demo 和 A+B 混合布局
.superpowers/brainstorm/86383-1780383912/content/registration-flow-ab.html A+B 挂号交互流,理解对话区、卡片区、流程状态的协同方式
.superpowers/brainstorm/86383-1780383912/content/final-web-demo-design-v4.html 最终视觉基线,重点理解品牌色、无左侧功能菜单、右侧医生静态形象 idle 状态

任务包总览

编号 任务包 推荐负责人 主要产物 依赖 预估工作量
T0 演示契约与联调基线 技术负责人/后端负责人 冻结接口、卡片 schema、演示数据口径 0.5 人日
T1 SQLite Mock HIS 挂号服务 后端 独立 Mock HIS 服务、SQLite seed、HIS API T0 1.5 人日
T2 MCP Tool + HIS Adapter 纵向工具链 后端 HIS 工具注册、MockHisClient、工具调用日志 T1 1 人日
T3 OpenPlatform 终端入口与 SSE 会话 后端 设备/鉴权/SSE/会话入口可用 T0 1 人日
T4 AgentRouter + TaskState 挂号任务主链路 后端/AI 意图识别、任务状态、Dify 输出归一 T3 1 人日
T5 Card Runtime 挂号动作闭环 后端 科室/医生/时间/支付/成功卡片动作链 T2、T4 1.5 人日
T6 Web Demo UI Shell 与品牌视觉 前端 三栏布局、医生静态形象、主题色 T0 1 人日
T7 Web Demo 对话入口与 SSE 消费 前端 中间对话流、输入/语音按钮、SSE parser T3、T6 1 人日
T8 Web Demo 挂号卡片流 前端 右侧卡片专区、卡片组件、幂等提交 T5、T7 1.5 人日
T9 Mock 支付与挂号成功演示 前后端联合 支付二维码/模拟支付/成功卡/Mock 标识 T1、T5、T8 1 人日
T10 端到端验收与演示脚本 QA/全栈 curl 脚本、Playwright、演示证据包 T1-T9 1 人日

T0. 演示契约与联调基线

目标
冻结前后端统一口径,避免开发过程中各自发明字段、卡片、状态和 Mock 文案。

预估工作量
0.5 人日。

交付范围

  • 确认本轮只做 Web 浏览器演示优先,视口 1440x900 / 1920x1080
  • 确认本轮只完整做挂号闭环。
  • 冻结 cardKey:
    • department-selection
    • doctor-selection
    • time-slot-selection
    • confirm-appointment
    • payment-qrcode
    • appointment-success
  • 冻结 SSE 事件:
    • task_updated
    • message_delta
    • message_completed
    • card_created
    • error
    • completed
  • 冻结 Mock 标识文案:联调演示 / Mock 支付联调演示

开发前必须彻底理解

  • docs/initiatives/FEAT-202606-001-unified-entry-client/MVP接口契约.md
  • docs/initiatives/FEAT-202606-001-unified-entry-client/需求文档.md
  • docs/initiatives/FEAT-202606-001-unified-entry-client/design/终端Web演示设计.md
  • docs/initiatives/FEAT-202606-001-unified-entry-client/dev-progress/统一入口挂号演示实施计划.md
  • docs/initiatives/FEAT-202606-001-unified-entry-client/dev-progress/终端Web演示实施计划.md

验收标准

  • 前后端共同确认一份字段表和卡片链路。
  • 任何新增 cardKey/actionName 必须先更新契约文档。

T1. SQLite Mock HIS 挂号服务

目标
提供真实可演示的 HIS 业务语义,不能用随机数据或内存假成功。

预估工作量
1.5 人日。

交付范围

  • 独立 mock-his-service,不进入后端 Maven reactor。
  • SQLite 数据库和 seed 数据。
  • 科室、医生、排班、号源、锁号、Mock 支付、预约接口。
  • 号源锁定 5 分钟过期。
  • 支付成功后才能创建预约。
  • 幂等键重复提交返回首次结果。
  • 号源余量真实扣减。

涉及模块/路径

  • mock-his-service/
  • mock-his-service/src/main/resources/schema.sql
  • mock-his-service/src/main/resources/seed.sql
  • mock-his-service/src/test/java/com/emoon/mockhis/*

开发前必须彻底理解

  • docs/initiatives/FEAT-202606-001-unified-entry-client/需求文档.md3.1 Step 110.1 Mock HIS
  • docs/initiatives/FEAT-202606-001-unified-entry-client/dev-progress/统一入口挂号演示实施计划.mdTask 1: Build SQLite Mock HIS Service
  • docs/initiatives/FEAT-202606-001-unified-entry-client/对外接口联调基准.md 中写操作幂等和 Mock/Real Adapter 边界

验收标准

  • mvn -f mock-his-service/pom.xml -DskipTests=false test 通过。
  • 重复锁号/预约不会重复扣号。
  • 未支付订单不能创建预约。
  • 返回结果包含 mock:true

T2. MCP Tool + HIS Adapter 纵向工具链

目标
AI 中台通过统一工具出口调用 Mock HIS,Dify 和前端都不能绕过。

预估工作量
1 人日。

交付范围

  • 扩展 McpToolService 挂号工具:
    • 查询科室/医生/排班
    • 锁号/释放锁
    • 创建 Mock 支付订单
    • 标记 Mock 支付成功
    • 创建预约
  • MockHisClient 对接 SQLite Mock HIS。
  • 工具调用带 traceId、风险等级、幂等键。
  • 写操作只允许 Card Action 链路触发。

涉及模块/路径

  • emoon-infra/emoon-modules/emoon-ai/emoon-ai-mcp
  • com.emoon.ai.mcp.application.McpToolService
  • com.emoon.mcp.his.client.MockHisClient
  • emoon-infra/emoon-modules/emoon-ai/emoon-ai-mcp/src/test/java/com/emoon/ai/mcp/application/McpToolServiceTest.java

开发前必须彻底理解

  • docs/standards/AI中台工程约束.md 中 MCP、Card、Agent 依赖方向
  • docs/initiatives/FEAT-202606-001-unified-entry-client/详细设计.md11. MCP/HIS Adapter 设计
  • docs/initiatives/FEAT-202606-001-unified-entry-client/需求文档.md3.2 Step 2
  • docs/initiatives/FEAT-202606-001-unified-entry-client/dev-progress/统一入口挂号演示实施计划.mdTask 2

验收标准

  • mvn -pl emoon-infra/emoon-modules/emoon-ai/emoon-ai-mcp -DskipTests=false test 通过。
  • 日志能追踪每次工具调用的 traceId
  • 工具返回 Mock 标识,不伪装真实支付/真实 HIS。

T3. OpenPlatform 终端入口与 SSE 会话

目标
Web 客户端能通过统一入口发起对话,并收到稳定 SSE 事件和卡片创建事件。

预估工作量
1 人日。

交付范围

  • 新终端端点鉴权/HMAC 或演示模式兼容。
  • /api/v1/agent/chat/stream
  • 设备上下文解析。
  • conversation 创建/恢复。
  • SSE 事件顺序稳定:
    • task_updated
    • message_delta
    • message_completed
    • card_created
    • completed
  • 错误事件包含可展示信息和 traceId

涉及模块/路径

  • emoon-openplatform/src/main/java/com/emoon/openplatform/controller/v1/AgentChatController.java
  • emoon-openplatform/src/main/java/com/emoon/openplatform/service/impl/AgentChatApplicationServiceImpl.java
  • emoon-openplatform/src/test/java/com/emoon/openplatform/acceptance/TerminalMvpAcceptanceTest.java

开发前必须彻底理解

  • docs/initiatives/FEAT-202606-001-unified-entry-client/MVP接口契约.md4. 流式对话
  • docs/initiatives/FEAT-202606-001-unified-entry-client/前端接入指引.md 的 SSE 部分
  • docs/standards/AI中台工程约束.md 中 openplatform 禁止直连 Mapper
  • docs/initiatives/FEAT-202606-001-unified-entry-client/dev-progress/统一入口挂号演示实施计划.mdTask 4

验收标准

  • mvn -pl emoon-openplatform -DskipTests=false -Dtest=TerminalMvpAcceptanceTest test 通过。
  • 前端不传 agentId 也能正确路由到挂号任务。
  • SSE 断开时前端能保留 conversationId

T4. AgentRouter + TaskState 挂号任务主链路

目标
让系统表现得“智能”:由自然语言识别任务,而不是靠左侧菜单按钮进入流程。

预估工作量
1 人日。

交付范围

  • AgentRouter 优先级:
    • 设备策略
    • activeTask
    • waitingCard
    • 确定性规则
    • DeepSeek JSON 分类
    • 低置信度澄清
  • REGISTRATION task 创建和状态推进。
  • 用户说“下午”等上下文输入时,不重新走 DeepSeek 路由。
  • Dify 输出校验/归一化,非法 JSON 降级。

涉及模块/路径

  • emoon-infra/emoon-modules/emoon-ai/emoon-ai-agent
  • AgentRouterService
  • TaskStateService
  • IntentClassifier
  • DifyOutputNormalizer
  • TerminalReplyTemplateService

开发前必须彻底理解

  • docs/initiatives/FEAT-202606-001-unified-entry-client/需求文档.md3.3 Step 36. AgentRouter
  • docs/initiatives/FEAT-202606-001-unified-entry-client/详细设计.md7. AgentRouter 设计9. TaskStateService 设计
  • docs/initiatives/FEAT-202606-001-unified-entry-client/dev-progress/统一入口挂号演示实施计划.mdTask 4Task 5

验收标准

  • mvn -pl emoon-infra/emoon-modules/emoon-ai/emoon-ai-agent -DskipTests=false test 通过。
  • activeTask 场景不被 DeepSeek 错误切换。
  • Dify 不直接写 HIS。

T5. Card Runtime 挂号动作闭环

目标
让每一次用户选择和确认都经过 Card Action,保障幂等、审计、状态推进。

预估工作量
1.5 人日。

交付范围

  • 卡片动作链:
    • select_department
    • select_doctor
    • select_time_slot
    • confirm_appointment
    • mock_payment_paid
  • select_time_slot 后锁号。
  • confirm_appointment 后创建 Mock 支付订单。
  • mock_payment_paid 后创建预约。
  • 重复点击同一动作不创建重复业务结果。
  • Card Runtime 不直接调用 MCP,必须经 AgentActionOrchestrator。

涉及模块/路径

  • emoon-infra/emoon-modules/emoon-ai/emoon-ai-card
  • emoon-infra/emoon-modules/emoon-ai/emoon-ai-agent/src/main/java/com/emoon/ai/agent/application/AgentActionOrchestrator.java
  • CardActionService
  • CardInstanceService

开发前必须彻底理解

  • docs/standards/AI中台工程约束.md 中 Card 不绕过 Agent 调 MCP 红线
  • docs/initiatives/FEAT-202606-001-unified-entry-client/详细设计.md10. Card Runtime 设计
  • docs/initiatives/FEAT-202606-001-unified-entry-client/MVP接口契约.md5. 卡片动作
  • docs/initiatives/FEAT-202606-001-unified-entry-client/dev-progress/统一入口挂号演示实施计划.mdTask 3

验收标准

  • mvn -pl emoon-infra/emoon-modules/emoon-ai/emoon-ai-agent,emoon-infra/emoon-modules/emoon-ai/emoon-ai-card -DskipTests=false test 通过。
  • 重复 idempotencyKey 返回首次结果。
  • appointment-success 来自 Mock HIS 真实预约结果。

T6. Web Demo UI Shell 与品牌视觉

目标
做出甲方能看的第一屏:对话优先、品牌色正确、右侧静态医生形象,不再使用粗糙 CSS 图形。

预估工作量
1 人日。

交付范围

  • 独立 emoon-terminal-client 单应用。
  • Vue 3 + TypeScript + Vite。
  • 三栏布局:
    • 左:助手上下文,不是菜单
    • 中:对话和输入
    • 右:Context Panel
  • 品牌色:
    • #2b1f99
    • #3ad4d8
  • 医生形象使用真实 PNG 资产。
  • 右侧 idle 状态只展示医生形象,不放语音/发送按钮。

涉及模块/路径

  • /Users/destiny/dev/emoon/emoon-terminal-client
  • src/theme/tokens.css
  • src/layouts/AppShell.vue
  • src/layouts/AssistantContextPanel.vue
  • src/layouts/DoctorAssistantFigure.vue
  • src/assets/doctor-assistant.png

开发前必须彻底理解

  • docs/initiatives/FEAT-202606-001-unified-entry-client/design/终端Web演示设计.md
  • docs/initiatives/FEAT-202606-001-unified-entry-client/dev-progress/终端Web演示实施计划.mdTask 1Task 2Task 3
  • docs/initiatives/FEAT-202606-001-unified-entry-client/design/前端工程启动指南.md
  • .superpowers/brainstorm/86383-1780383912/content/ui-direction-options.html
  • .superpowers/brainstorm/86383-1780383912/content/final-web-demo-design-v4.html

验收标准

  • pnpm build 能通过。
  • 页面在 1440x900 无横向滚动。
  • 左侧没有大功能按钮或 agent 菜单。
  • 右侧医生形象质量达标,不使用 CSS 拼图。

T7. Web Demo 对话入口与 SSE 消费

目标
前端中间区域承载输入、语音按钮、发送按钮,并能消费后端 SSE。

预估工作量
1 人日。

交付范围

  • ConversationPanel
  • MessageBubble
  • ChatInput
  • SSE parser。
  • 语音按钮首版只展示提示,不实现 STT。
  • 用户输入后能追加消息。
  • 收到 card_created 后切换右侧为卡片。

涉及模块/路径

  • src/chat/ConversationPanel.vue
  • src/chat/ChatInput.vue
  • src/chat/MessageBubble.vue
  • src/api/sse.ts
  • src/state/terminalStore.ts

开发前必须彻底理解

  • docs/initiatives/FEAT-202606-001-unified-entry-client/design/终端Web演示设计.mdCenter Conversation PanelInteraction Flow
  • docs/initiatives/FEAT-202606-001-unified-entry-client/MVP接口契约.md4. 流式对话
  • docs/initiatives/FEAT-202606-001-unified-entry-client/前端接入指引.md4. 流式对话(SSE)
  • docs/initiatives/FEAT-202606-001-unified-entry-client/dev-progress/终端Web演示实施计划.mdTask 4Task 5
  • .superpowers/brainstorm/86383-1780383912/content/registration-flow-ab.html

验收标准

  • pnpm vitest run tests/unit/sse.spec.ts 通过。
  • 语音和发送按钮都在中间输入区。
  • 右侧 idle 不出现语音/发送交互。

T8. Web Demo 挂号卡片流

目标
前端右侧 Context Panel 能完整渲染挂号卡片并提交动作。

预估工作量
1.5 人日。

交付范围

  • Context Panel 状态:
    • idle
    • task
    • error
    • completed
  • 卡片组件:
    • DepartmentSelectionCard
    • DoctorSelectionCard
    • TimeSlotSelectionCard
    • ConfirmAppointmentCard
    • PaymentQrCard
    • AppointmentSuccessCard
    • ErrorCard
  • 每个动作带 idempotencyKey
  • 成功后点击 完成 回到 idle 医生形象。

涉及模块/路径

  • src/layouts/ContextPanel.vue
  • src/layouts/RegistrationProgress.vue
  • src/cards/*
  • src/api/client.ts
  • src/api/demoFixtures.ts

开发前必须彻底理解

  • docs/initiatives/FEAT-202606-001-unified-entry-client/design/终端Web演示设计.mdRight Context PanelCard Flow
  • docs/initiatives/FEAT-202606-001-unified-entry-client/MVP接口契约.md5. 卡片动作11. 前端卡片组件映射
  • docs/initiatives/FEAT-202606-001-unified-entry-client/dev-progress/终端Web演示实施计划.mdTask 6Task 7
  • .superpowers/brainstorm/86383-1780383912/content/final-web-demo-design-v4.html

验收标准

  • pnpm vitest run tests/unit/cardRenderer.spec.ts 通过。
  • 卡片顺序正确。
  • PaymentQrCard 必须显示 联调演示 / Mock 支付
  • AppointmentSuccessCard 必须显示 联调演示

T9. Mock 支付与挂号成功联合闭环

目标
打通“确认挂号 → Mock 支付 → 支付完成 → 预约成功”这一段最容易被甲方追问的链路。

预估工作量
1 人日。

交付范围

  • 后端:
    • 创建 Mock 支付订单。
    • 标记 Mock 支付完成。
    • 支付成功后创建预约。
  • 前端:
    • 显示 Mock 支付卡。
    • 显示模拟支付完成按钮。
    • 显示挂号成功卡。
  • 演示文案明确当前是 Mock 支付和 Mock HIS。

涉及模块/路径

  • mock-his-service
  • emoon-ai-mcp
  • emoon-ai-agent
  • emoon-ai-card
  • emoon-terminal-client/src/cards/PaymentQrCard.vue
  • emoon-terminal-client/src/cards/AppointmentSuccessCard.vue

开发前必须彻底理解

  • docs/initiatives/FEAT-202606-001-unified-entry-client/需求文档.md4.7 支付二维码4.8 支付成功后创建预约
  • docs/initiatives/FEAT-202606-001-unified-entry-client/dev-progress/统一入口挂号演示实施计划.mdTask 1Task 2Task 3
  • docs/initiatives/FEAT-202606-001-unified-entry-client/dev-progress/终端Web演示实施计划.mdTask 6
  • docs/initiatives/FEAT-202606-001-unified-entry-client/对外接口联调基准.md 中写操作和财务动作风险控制

验收标准

  • 未支付不能创建预约。
  • 支付卡和成功卡都显示 Mock/联调演示。
  • 预约号来自后端/Mock HIS 结果,不由前端编造。

T10. 端到端验收与演示脚本

目标
形成可重复的演示证据,保证甲方现场不会只靠手动点击“碰巧成功”。

预估工作量
1 人日。

交付范围

  • 后端 curl 脚本:
    • happy path
    • edge cases
  • 前端 Playwright:
    • 1440×900 视觉检查
    • 1920×1080 视觉检查
    • 挂号闭环点击流程
  • 演示证据包:
    • conversationId
    • taskId
    • cardInstanceId 序列
    • traceId
    • appointmentId
    • appointmentNo
    • mock:true 响应或截图

涉及模块/路径

  • scripts/demo-registration/*
  • emoon-terminal-client/tests/e2e/*
  • emoon-openplatform/src/test/java/com/emoon/openplatform/acceptance/TerminalMvpAcceptanceTest.java

开发前必须彻底理解

  • docs/initiatives/FEAT-202606-001-unified-entry-client/dev-progress/统一入口挂号演示实施计划.mdTask 6Task 7
  • docs/initiatives/FEAT-202606-001-unified-entry-client/dev-progress/终端Web演示实施计划.mdTask 8Task 9
  • docs/initiatives/FEAT-202606-001-unified-entry-client/MVP接口契约.md 全文
  • docs/initiatives/FEAT-202606-001-unified-entry-client/需求文档.md7. 核心 Case 验证清单

验收标准

  • 后端模块测试通过。
  • mvn -pl emoon-openplatform -DskipTests=false test 通过。
  • mvn -pl emoon-admin -DskipTests=false -Dprofiles.active= -Dtest=AiPlatformArchitectureTest test 通过。
  • 前端 pnpm build && pnpm test:unit && pnpm test:e2e 通过。
  • 演示前能一键重置 Mock HIS 数据。

推荐分配方式

小组/人 建议负责
王康 T1 SQLite Mock HIS
高力 T2 MCP Tool + T5 Card Action
高力 T3 OpenPlatform SSE + T4 AgentRouter/Task/Dify
韩朝 T6 UI Shell + 医生形象 + 品牌视觉
韩朝 T7 对话/SSE + T8 卡片流
一起 T9 支付成功联合闭环 + T10 验收脚本
王康 T0 契约冻结、跨任务 review、最终架构测试

工作量汇总

范围 包含任务 预估工作量
契约冻结 T0 0.5 人日
后端/Mock HIS/AI 中台 T1、T2、T3、T4、T5 6 人日
前端 Web Demo T6、T7、T8 3.5 人日
前后端联调和验收 T9、T10 2 人日
合计 T0-T10 12 人日
建议风险缓冲 Dify 输出不稳定、SSE 兼容、Mock HIS 边界补漏、视觉微调 2-3 人日

建议按 14-15 人日安排总容量。若投入 3 名后端、2 名前端、1 名全栈/QA,并且 T0 在首日上午冻结,理想情况下 4-5 个自然工作日可以完成可演示闭环;如果 Dify 工作流需要重新设计或真实 MCP 注册环境不可用,需要额外预留 1-2 天。

关键依赖顺序

T0
├── T1 ── T2 ── T5 ── T9
├── T3 ── T4 ────────┘
└── T6 ── T7 ── T8 ─┘
                    ↓
                   T10

每日联调检查点

时间点 必查内容
Day 1 T0 契约冻结,Mock HIS seed 数据可跑,前端 shell 可启动
Day 2 SSE 能返回 task_updated/card_created,前端能显示医生 idle 形象和首张科室卡
Day 3 科室→医生→时间卡片链路跑通,锁号真实落库
Day 4 Mock 支付→预约成功跑通,前端显示 Mock 标识
Day 5 curl + Playwright 全链路验收,准备演示证据包