测试计划.md 6.9 KB


doc_id: TST-202606-001 feature_id: FEAT-202606-006-agent-semantic-interaction type: test-plan title: Agent 语义交互与命令治理测试计划 status: reviewing owner: 医梦研发团队 created_at: 2026-06-29 updated_at: 2026-07-01 reviewers:

  • 开发负责人
  • 测试负责人
  • 终端负责人 related_docs:
  • PRD-202606-002
  • DDS-202606-004
  • API-202606-004 related_modules:
  • emoon-openplatform
  • emoon-ai-agent
  • emoon-ai-command
  • emoon-ai-mcp tags:
  • 测试计划
  • 挂号 Agent
  • 契约测试
  • 安全测试 ---

Agent 语义交互与命令治理测试计划

验收范围

覆盖:

  • 挂号 Agent 纵向样板;
  • FastGPT 文本与只读工具调用;
  • TaskState、ResultSnapshot、SemanticResponse;
  • 无状态 Presentation 与 interaction;
  • L1 锁号和 L2 挂号命令;
  • SSE v2、幂等、异常、安全和全链路回放;
  • 旧链式卡片语义清理。

不覆盖:

  • Dify、自研引擎和多引擎切换;
  • 真实支付、真实医保和 L3 医疗动作;
  • 生产性能容量与跨医院通用性;
  • 其他 Agent 的完整回归。

测试环境

实施时记录:

  • emoon 分支、提交和构建版本;
  • FastGPT 部署版本及 App/Workflow 版本;
  • Mock HIS/MCP 数据版本;
  • 终端 Web 版本与 deviceId;
  • 数据库迁移版本;
  • Bearer/HMAC 测试凭证范围。

不得在测试文档记录真实患者身份或生产密钥。

测试数据

至少准备:

  1. 明天呼吸科有多位主任医师和多个时段;
  2. 明天无主任医师、后天有主任医师;
  3. 明天只有副主任医师;
  4. 号源查询后被其他请求占用;
  5. 重复锁号和重复挂号;
  6. ResultSnapshot 和 Command 过期;
  7. 下游写超时但实际成功;
  8. 无卡片能力终端;
  9. 跨租户、跨患者和跨会话伪造 ID。

验收用例

编号 场景 核心步骤 预期结果 状态
TST-001 完整条件直查 输入明天+呼吸科+主任医师 不重复补问,返回可信候选 planned
TST-002 精确结果为空 查询无结果 按策略推荐并标注放宽条件 planned
TST-003 不自动放宽 返回替代候选 未明确选择前不更新条件、不锁号 planned
TST-004 文本完整性 禁用终端展示能力 纯文本/语音可完成查询 planned
TST-005 展示异步 延迟领域 ViewModel 转换 semantic_result 先返回,不被阻塞 planned
TST-006 展示失败 模板生成异常 文本成功,任务不失败 planned
TST-007 无状态展示 返回医生/号源展示 不创建 Command/Card 实例 planned
TST-008 点击选择 回传 interaction 解析稳定 candidateId planned
TST-009 自然语言序号 输入“选第二个” 与点击第二项解析一致 planned
TST-010 版本冲突 使用旧 resultVersion 返回冲突并要求刷新 planned
TST-011 快照过期 使用过期 resultRef 返回过期并重新查询 planned
TST-012 锁号前复核 查询后改变余号 不信任快照,使用实时结果 planned
TST-013 L1 锁号 明确选择号源 无额外二次确认,幂等锁号 planned
TST-014 L2 挂号 准备最终挂号 返回 command_prepared,等待确认 planned
TST-015 命令确认 合法确认 执行一次并完成 TaskState planned
TST-016 重复确认 重复相同幂等键 返回首次结果,不重复挂号 planned
TST-017 命令拒绝 调用 reject 不执行写工具,记录审计 planned
TST-018 命令过期 确认过期命令 拒绝执行,要求重新准备 planned
TST-019 写状态未知 模拟下游超时 进入 UNKNOWN,不盲重试 planned
TST-020 身份越权 跨患者确认命令 403,记录安全审计 planned
TST-021 租户越权 跨租户读取 result/command 403,不泄露存在性细节 planned
TST-022 FastGPT 写工具 模型请求写工具 后端拒绝,不调用 HIS planned
TST-023 模型伪造风险 模型将 L2 标为 L0 后端使用固定 L2 planned
TST-024 插入问答 挂号中问医生擅长 回答后保留原 TaskState planned
TST-025 切换任务 挂号中转缴费 挂号暂停,锁号不续期 planned
TST-026 断线恢复 SSE 中断 通过 turn/command 查询恢复 planned
TST-027 全链路回放 按 traceId 查询 能还原模型、工具、展示、确认和执行 planned
TST-028 v2 契约 校验 OpenAPI/SSE 无 nextCard 和通用 card_created planned
TST-029 架构边界 运行架构测试 FastGPT 不调用写工具,Command 不依赖模型 planned
TST-030 旧语义清理 仓库检索有效代码/契约 旧 Card 流程只存在历史说明 planned
TST-031 ToolCatalog 过滤 注册读写混合工具 FastGPT 只看到授权只读工具 planned
TST-032 查询参数无效 FastGPT 提交非法日期/字段 最多修复一次,否则自然语言澄清 planned
TST-033 阶段零门禁 模拟工具正常/空结果/参数错误/超时 能力验证有明确通过或停止结论 planned
TST-034 无 Card 端到端 关闭 Presentation,完成查询、选择、锁号和挂号 文本/语音与 Command 可独立完成全链路 planned
TST-035 Card 控制信号清理 检索运行代码并执行任务状态测试 cardKey/cardData/nextCard/Card 类型不参与完成判断和状态迁移 planned

性能基线

实施测试先测量再确定阈值,至少分别记录:

  • 首个 message_delta
  • semantic_result
  • 只读 MCP 查询;
  • presentation
  • L1/L2 命令执行;
  • 展示失败时的文本完成时间。

验收原则:Presentation 延迟或失败不能增加文本与 semantic_result 的关键路径等待。

自动化范围

  • DTO/OpenAPI Schema 契约测试;
  • TaskState 和 Command 状态机单元测试;
  • ResultSnapshot 过期、版本、租户校验;
  • MCP 读写权限隔离;
  • 幂等与 UNKNOWN 状态集成测试;
  • SSE 事件解析与终端交互契约测试;
  • AiPlatformArchitectureTest 扩展。

回归范围

  • 统一入口鉴权和设备场景;
  • 会话创建与断线恢复;
  • FastGPT Adapter;
  • MCP 工具注册、权限和审计;
  • HIS Mock 科室、医生、排班、锁号和挂号;
  • 计量/Outbox 对命令业务事实的归集;
  • 管理后台 Agent、展示和命令配置。

风险

  • FastGPT 目标版本尚未实测,工具事件可能需要 Adapter 特化。
  • 真实性能阈值需基于部署环境,不在本计划中预设虚假数字。
  • 真实 HIS 幂等和状态查询能力不足时,需要 Adapter 补偿设计。

结论

当前为测试计划,尚未执行。不得据此将专题标记为 implemented; 实施后必须创建独立 测试结果.md 记录真实环境、通过项、失败项和结论。