对外名称:医梦患者智能服务门户
内部代号:Adjutant(副官)
适用版本:P0 / 单医院移动端 Web Demo
更新日期:2026-07-27
建议按以下顺序阅读:
src/portal/,再决定联调代码落点。本项目不是智能体聊天窗口集合,也不是完整互联网医院。它是部署给单家医院、面向患者的智能服务门户。
P0 只验证三项能力:
| 能力 | 患者主流程 | P0 执行方式 |
|---|---|---|
| 智能分诊挂号 | 表达需求 → 连续补槽 → 风险筛查 → 查询号源 → 确认挂号 | Mock HIS / Mock MCP |
| 检验检查报告解读 | 上传报告 → 识别分析 → 结构化解读 → 风险提醒 | Mock Report MCP |
| 中医舌诊 | 体质问答 → 上传舌象 → 分析 → 综合结果 | 后续接现有舌诊 MCP |
P0 的明确限制:
虽然 P0 只有本人,后续接口仍应预留 operatorId 和 subjectPatientId,避免 P1 支持家庭代办时重构数据归属。
prototype/adjutant-mobile/ 保存已通过视觉走查的 React 原型,是当前正式前端的设计参考,不是联调运行入口。
原型已经覆盖:
根工程已从旧桌面三栏终端切换为移动端门户:
src/App.vue 挂载 src/portal/PortalApp.vue。src/portal/pages/ 实现首页、服务、健康记录、我的。src/portal/components/AgentConversation.vue 实现三个 P0 演示流程。src/portal/catalog.ts 保存智能体目录;仅配置 mode 的三项能力可进入。src/portal/state/portalStore.ts 管理一级页面和当前智能体。src/portal/portal.css 实现最大宽度 430px 的移动 Web 页面。src/
├── portal/ # 当前 P0 正式门户
│ ├── components/ # 导航、消息、输入区和智能体会话
│ ├── pages/ # 四个一级页面
│ ├── state/ # 当前门户的轻量状态
│ ├── catalog.ts # 医院智能体目录
│ ├── types.ts
│ └── portal.css
├── api/ # 既有 API、HMAC、SSE、卡片 Mock
├── cards/ # 既有挂号卡片
├── chat/ # 既有桌面对话组件
├── layouts/ # 既有桌面终端布局
├── state/terminalStore.ts # 既有终端任务状态
└── theme/tokens.css # 全局视觉令牌
prototype/adjutant-mobile/ # 设计原型与视觉基准
docs/p0-mobile/ # 产品、交互、契约和验收文档
web-demos/ # 早期业务流程参考
artifacts/ # 产品审计和视觉 QA 证据
tests/ # 单元与 E2E 测试
需要特别注意:
prototype/adjutant-mobile/。src/api/、src/cards/ 和 src/state/terminalStore.ts 是旧终端时期留下的可复用基础,尚未与 src/portal/ 完整整合。环境要求:
Playwright Chromium(运行 E2E 时需要)。
pnpm install
pnpm dev
默认访问:
http://127.0.0.1:5173/
完整验证:
pnpm test
pnpm build
当前提交前基线:
前端应只认识稳定的 capabilityCode,不要认识 FastGPT 应用 ID。
| 能力 | capabilityCode | 当前前端 mode |
|---|---|---|
| 智能分诊挂号 | SMART_REGISTRATION |
registration |
| 报告智能解读 | REPORT_INTERPRETATION |
report |
| 中医舌诊 | TCM_TONGUE_ASSESSMENT |
tongue |
下一步可在 src/portal/types.ts 中把 mode 与 capabilityCode 建立显式映射,再由 Gateway 解析真实执行实现。
客户端不要直接调用 FastGPT,也不要把具体 Workflow ID 写进组件。推荐调用关系:
移动 Web
→ Agent Gateway
→ 能力校验与患者上下文
→ FastGPT / Agent Runtime
→ Mock MCP 或真实 MCP
→ 标准事件和 UI 数据
→ 移动 Web
建议统一请求至少包含:
{
"hospitalId": "HOSPITAL_DEMO",
"operatorId": "USER_DEMO",
"subjectPatientId": "PATIENT_DEMO",
"relationType": "SELF",
"capabilityCode": "SMART_REGISTRATION",
"sessionId": "SESSION_DEMO",
"taskId": "TASK_DEMO",
"input": {
"type": "TEXT",
"content": "我头疼,帮我挂神经内科明天早上九点的专家号"
},
"context": {
"channel": "MOBILE_WEB",
"mock": true
}
}
建议统一返回或事件包含:
traceId、taskId、sessionId。不要在浏览器日志、测试截图或公共仓库中保存真实报告原图、完整身份证号、手机号、Token 或医院生产地址。
traceId。P0 只连接 Mock HIS / Mock MCP,不得误调真实挂号接口。
AgentConversation.vue 中的本地阶段状态迁移到统一任务 Store。以下内容是接手后的实际工作,不应误认为当前已经实现:
pnpm test 和 pnpm build 通过。capabilityCode、输入输出契约和验收用例。pnpm test 和 pnpm build。先完成一个最小的 AgentGatewayClient,用同一接口支持 Mock 与远程模式,然后只替换挂号流程的本地阶段推进。
完成标准: