# 医梦门诊助手 — 统一入口客户端 Web Demo 基于 Vue 3 + TypeScript + Vite 构建的自助终端前端演示应用。 ## 环境要求 - Node.js >= 20 - pnpm >= 9 ## 快速启动 ```bash # 安装依赖 pnpm install # 启动开发服务器(默认 http://127.0.0.1:5173) pnpm dev # 生产构建 pnpm build # 预览生产构建 pnpm preview ``` ## 测试 ```bash # 单元测试(Vitest) pnpm test:unit # E2E 测试(Playwright,需先安装浏览器) npx playwright install chromium pnpm test:e2e # 全部测试 pnpm test ``` ## Demo 模式 默认开启 Demo 模式(`VITE_DEMO_MODE !== 'false'`),无需后端即可体验完整挂号流程: 1. 在中间对话区输入任意文字并发送 2. 右侧依次选择:科室 → 医生 → 时间 → 确认挂号 → Mock 支付 3. 挂号进度条随卡片切换同步推进 关闭 Demo 模式需配置环境变量 `VITE_DEMO_MODE=false` 并指定后端地址 `VITE_API_BASE_URL`。 ## 技术栈 | 类别 | 方案 | |------|------| | 框架 | Vue 3 (Composition API) | | 语言 | TypeScript | | 构建 | Vite 6 | | 状态管理 | Pinia | | 单元测试 | Vitest + @vue/test-utils | | E2E 测试 | Playwright | | 类型检查 | vue-tsc | ## 目录结构 ``` src/ ├── api/ # SSE 解析器、API 客户端、类型定义、Demo 数据 ├── cards/ # 6 种挂号卡片 + CardRenderer 路由 ├── chat/ # 对话面板、输入框、消息气泡 ├── demo/ # Demo 模式开关 ├── layouts/ # AppShell 三栏布局、ContextPanel 状态机、医生形象 ├── state/ # Pinia 全局状态 store ├── theme/ # 设计令牌 CSS 变量 ├── assets/ # 静态资源 ├── App.vue # 根组件 └── main.ts # 应用入口 ```