# 健康CQ升级 - 高保真交互原型
## 项目概述
本项目以 HTML 方式生成「健康CQ升级」平台的高保真交互原型,覆盖 Web 管理端、员工端 APP、健康应急 APP 三大终端,用于需求确认、交互评审及后续导入墨刀进行团队协作。
---
## 一、项目结构规范
### 1.1 顶层目录结构
```
prototype-user-app/
├── index.html # 全局导航页(项目入口)
├── web-admin/ # Web 管理端原型
├── employee-app/ # 员工端 APP 原型
├── emergency-app/ # 健康应急 APP 原型
├── other-terminals/ # 其他终端原型(小程序、大屏、PAD、餐厅的终端设备)
├── 项目背景.md # 本文件 - 项目约束与规范
└── README.md # 项目说明
```
### 1.2 全局导航页(index.html)
根目录 `index.html` 作为项目统一入口,部署到服务器后供研发人员浏览所有原型页面。
- 通过 Tab 切换四大板块(Web 管理端 / 员工端 APP / 健康应急 APP / 其他终端)
- 以模块卡片展示各业务模块,点击卡片跳转至该模块主页(index.html)
- 点击卡片右上角页数徽章,悬浮展示该模块所有页面和弹窗的跳转链接
- 已有原型的模块卡片带绿色边框呼吸灯动画,待开发模块为虚线灰色卡片
- 数据驱动:所有模块和页面信息维护在 `SITE_MAP` JS 对象中
- **新增原型页面时,必须同步在 `index.html` 的 `SITE_MAP` 中添加对应条目**
### 1.3 各端内部按核心功能模块分目录
**员工端 APP(employee-app/)17 个模块**
```
employee-app/
├── ai/ # AI
├── home/ # 应用主页
├── health-checkup/ # 健康体检
├── weight-management/ # 体重管理
├── nutrition/ # 营养管理
├── exercise/ # 运动管理
├── health-monitor/ # 健康监测
├── health-assessment/ # 健康评估
├── cardiovascular/ # 心脑血管病预防
├── diabetes/ # 糖尿病预防
├── cancer/ # 癌症预防
├── health-consult/ # 健康咨询
├── emergency-medical/ # 应急就医
├── frontline-medical/ # 一线医疗
├── health-record/ # 健康档案
├── knowledge/ # 知识普及
└── profile/ # 个人中心
```
**Web 管理端(web-admin/)16 个模块**
```
web-admin/
├── system-management/ # 系统管理
├── health-checkup/ # 健康体检
├── weight-management/ # 体重管理
├── nutrition/ # 营养管理
├── exercise/ # 运动管理
├── health-monitor/ # 健康监测
├── health-assessment/ # 健康评估
├── knowledge/ # 知识普及
├── health-data/ # 健康数据
├── health-record/ # 健康档案
├── cardiovascular/ # 心脑血管病预防
├── diabetes/ # 糖尿病预防
├── cancer/ # 癌症预防
├── health-consult/ # 专家咨询
├── emergency-dispatch/ # 应急就医
└── frontline-medical/ # 一线医疗
```
**健康应急 APP(emergency-app/)**
底部固定 5 个 Tab:工作台、知识库、AI助手、消息(即时通讯)、我的。
6 种角色登录后看到的工作台、知识库、我的内容不同,AI助手和消息全角色共享。
| 角色 | 英文标识 | 说明 |
|------|---------|------|
| 咨询专家 | expert | 专业医师/健康管理师,接收咨询、回复问题 |
| 应急操作人员 | operator | 负责应急事件的调度与操作执行 |
| 应急专业人员 | professional | 参与应急响应的专业技术人员 |
| 应急驻场人员 | onsite | 驻扎在现场的应急保障人员 |
| 咨询小助手 | assistant | 辅助答疑、常见问题推送、数据统计 |
| 管理员 | admin | 应急APP端的管理与配置人员 |
目录按角色优先组织,每个角色包含自己的工作台、知识库、我的页面:
```
emergency-app/
├── expert/ # 咨询专家(角色目录)
│ ├── workbench/ # 工作台页面
│ ├── knowledge/ # 知识库页面
│ └── profile/ # 我的页面
├── operator/ # 应急操作人员
│ ├── workbench/
│ ├── knowledge/
│ └── profile/
├── professional/ # 应急专业人员
│ ├── workbench/
│ ├── knowledge/
│ └── profile/
├── onsite/ # 应急驻场人员
│ ├── workbench/
│ ├── knowledge/
│ └── profile/
├── assistant/ # 咨询小助手
│ ├── workbench/
│ ├── knowledge/
│ └── profile/
├── admin/ # 管理员
│ ├── workbench/
│ ├── knowledge/
│ └── profile/
│
├── ai-assistant/ # AI助手(全角色共享)
│ └── index.html
│
└── message/ # 消息 - 即时通讯聊天(全角色共享)
├── index.html
├── contacts.html
└── im-chat.html
```
**其他终端(other-terminals/)**
包含微信小程序、应急大屏、医疗点PAD端、体检医生工作台等独立交付产物。
```
other-terminals/
├── mini-program/ # 微信小程序(营养管理用户端)
├── emergency-screen/ # 应急大屏
│ ├── xian-center/ # 西安应急中心大屏
│ ├── standard-center/ # 标准版中心大屏
│ └── jiuchang-center/ # 九厂应急中心大屏
├── medical-pad/ # 医疗点PAD端
└── canteen-device/ # 餐厅终端设备
├── index.html # 模块导航页
├── canteen-nutrition-scale/ # 餐线营养秤
│ ├── index.html
│ ├── 01-meal-start.html
│ ├── 02-meal-replenish.html
│ ├── 03-dish-display.html
│ ├── 04-meal-pickup.html
│ ├── 05-settings.html
│ └── 06-dish-sampling.html
├── canteen-recharge-screen/ # 餐线充值屏
├── checkout-device/ # 结算设备
├── clean-veg-inventory-cabinet/ # 净菜库存柜
├── clean-veg-kitchen-cabinet/ # 净菜厨房柜
├── clean-veg-packaging-labeler/ # 净菜包装贴标机
├── clean-veg-ratio-scale/ # 净菜配比秤
├── food-safety-monitor/ # 食安监控设备
├── nutrition-score-screen/ # 营养得分屏
├── plate-dispenser/ # 吐盘机
├── processing-prompt-screen/ # 加工提示屏
├── ratio-scale/ # 配比秤
├── raw-veg-hygiene-inspection/ # 毛菜卫检设备
├── raw-veg-inspection-scale/ # 毛菜验收秤
├── raw-veg-inventory-cabinet/ # 毛菜库存柜
├── raw-veg-processing-scale/ # 加工毛菜秤
├── raw-veg-washing-scale/ # 毛菜清洗秤
├── stall-nutrition-scale/ # 档口营养秤
└── utility-meter/ # 水电气计量表
```
**canteen-device 各子设备文件夹中文对照表:**
| 英文路径 | 中文名称 | 说明 |
|---------|---------|------|
| `canteen-nutrition-scale` | 餐线营养秤 | 开餐、补餐、取餐、餐品展示、设置、采样 |
| `canteen-recharge-screen` | 餐线充值屏 | 餐卡充值与余额查询 |
| `checkout-device` | 结算设备 | 智能结算与支付 |
| `clean-veg-inventory-cabinet` | 净菜库存柜 | 净菜库存管理与盘点 |
| `clean-veg-kitchen-cabinet` | 净菜厨房柜 | 净菜暂存与保鲜存储 |
| `clean-veg-packaging-labeler` | 净菜包装贴标机 | 净菜自动包装与贴标打印 |
| `clean-veg-ratio-scale` | 净菜配比秤 | 净菜搭配称重与营养配比 |
| `food-safety-monitor` | 食安监控设备 | 食品安全监控与预警 |
| `nutrition-score-screen` | 营养得分屏 | 个人营养评分与健康建议 |
| `plate-dispenser` | 吐盘机 | 自动出盘与回盘管理 |
| `processing-prompt-screen` | 加工提示屏 | 加工流程提示与操作指引 |
| `ratio-scale` | 配比秤 | 食材精准配比称重 |
| `raw-veg-hygiene-inspection` | 毛菜卫检设备 | 毛菜卫生检测与质量判定 |
| `raw-veg-inspection-scale` | 毛菜验收秤 | 毛菜到货验收与质检 |
| `raw-veg-inventory-cabinet` | 毛菜库存柜 | 毛菜库存管理与出入库 |
| `raw-veg-processing-scale` | 加工毛菜秤 | 毛菜初加工称重与记录 |
| `raw-veg-washing-scale` | 毛菜清洗秤 | 毛菜清洗流程与称重管理 |
| `stall-nutrition-scale` | 档口营养秤 | 档口菜品营养分析与称重结算 |
| `utility-meter` | 水电气计量表 | 水电气能耗计量与统计 |
---
## 二、HTML 原型编写规范
### 2.1 文件粒度原则(核心约束)
> **每个独立的页面、弹窗、浮层、操作面板必须是独立的 `.html` 文件。**
这是为了兼容墨刀导入(通过 `modao-proto-mcp` 的 `import_html` 工具),墨刀以单个 HTML 文件为粒度创建页面。
- **页面**:每个可导航的页面 → 独立 `.html` 文件
- **弹窗/对话框**:每个模态弹窗 → 独立 `.html` 文件,命名如 `xxx-dialog.html`
- **浮层/操作面板**:底部弹出面板、下拉菜单等 → 独立 `.html` 文件,命名如 `xxx-panel.html`
- **状态变体**:同一页面的不同状态(空状态、加载中、错误态)如差异较大 → 独立文件,命名如 `xxx-empty.html`、`xxx-loading.html`
### 2.2 单文件结构规范
每个 `.html` 文件必须是完整的、可独立在浏览器中打开的自包含文件:
```html
[模块名] - [页面名] | 健康CQ原型
```
**关键要求:**
- CSS 和 JS 全部内联,禁止引用外部文件(确保墨刀导入兼容性)
- 图片优先使用 SVG 内联或 CSS 绘制的图形占位,避免外部图片依赖
- 图标使用 SVG 内联或 Unicode/Emoji 占位
### 2.3 APP 端原型视觉规范
APP端(员工端、应急端)使用手机壳模拟器包裹:
```
设备尺寸: 390 x 844 (iPhone 14 逻辑分辨率)
外壳圆角: 44px
状态栏高度: 44px
底部安全区: 34px
导航栏高度: 44px
底部Tab栏高度: 50px + 34px安全区
```
### 2.4 Web 端原型视觉规范
Web管理端使用标准后台布局:
```
最小宽度: 1280px
侧边栏宽度: 240px(折叠态 64px)
顶部导航高度: 56px
内容区内边距: 24px
```
### 2.5 其他终端原型视觉规范
**微信小程序(营养管理用户端)**使用手机壳模拟器包裹:
```
设备尺寸: 375 x 812 (iPhone X 逻辑分辨率)
外壳圆角: 44px
状态栏高度: 44px
底部安全区: 34px
导航栏高度: 44px
底部Tab栏高度: 50px + 34px安全区
```
**应急大屏**使用全屏深色背景布局:
```
设计尺寸: 1920 x 1080 (Full HD)
背景色: 深色渐变(#0a1628 → #0f2847)
字体色: 浅色系(主文字 #E0F0FF,次要 #8CB8D9)
数据可视化风格,无外壳包裹
```
**医疗点PAD端**使用平板横屏布局:
```
设计尺寸: 1024 x 768 (iPad 横屏)
外壳圆角: 24px
状态栏高度: 24px
导航栏高度: 48px
内容区内边距: 20px
```
**体检医生WEB工作台**与Web管理端共用布局规范:
```
最小宽度: 1280px
侧边栏宽度: 240px(折叠态 64px)
顶部导航高度: 56px
内容区内边距: 24px
```
### 2.6 统一设计令牌
```css
/* 品牌色 */
--primary: #1890FF; /* 主色 */
--primary-light: #E6F7FF; /* 主色浅底 */
--success: #52C41A; /* 成功 */
--warning: #FAAD14; /* 警告 */
--danger: #FF4D4F; /* 危险 */
/* 中性色 */
--text-primary: #333333; /* 主文字 */
--text-secondary: #666666; /* 次要文字 */
--text-placeholder: #999999; /* 占位文字 */
--border: #E8E8E8; /* 边框 */
--background: #F5F7FA; /* 页面背景 */
/* 字号 */
--font-xs: 11px;
--font-sm: 13px;
--font-base: 15px;
--font-lg: 17px;
--font-xl: 20px;
--font-xxl: 24px;
/* 圆角 */
--radius-sm: 4px;
--radius-md: 8px;
--radius-lg: 12px;
/* 阴影 */
--shadow-sm: 0 1px 4px rgba(0,0,0,0.08);
--shadow-md: 0 4px 12px rgba(0,0,0,0.12);
--shadow-lg: 0 8px 24px rgba(0,0,0,0.16);
```
---
## 三、交互效果规范
### 3.1 必须实现的交互
- **页面导航**:点击按钮/链接可跳转至对应页面(通过 `window.location.href` 或页内锚点切换)
- **Tab 切换**:底部 Tab 栏、顶部 Tab 栏的选中态切换
- **弹窗展示**:点击触发弹窗的元素时,展示弹窗的打开态(弹窗为独立文件,在预览时可用 overlay 模拟)
- **表单交互**:输入框聚焦态、按钮点击态、单选/多选切换
- **列表滚动**:内容区可滚动,导航栏/Tab 栏固定
- **下拉刷新/加载更多**:提供视觉占位表现
### 3.2 页面间跳转约定
由于每个页面是独立文件,页面间通过相对路径跳转:
```javascript
// 同模块内跳转
window.location.href = './detail.html';
// 跨模块跳转
window.location.href = '../health-consult/consult-list.html';
// 弹窗页面(在当前页面中以 iframe 或 overlay 方式展示)
// 建议在页面内通过注释标注关联的弹窗文件
//
```
### 3.3 交互注释标注
在 HTML 中使用注释标注交互说明,便于评审和墨刀导入后的理解:
```html
全部
```
### 3.4 表格操作列固定规则
- 所有列表/表格中包含「操作」列的,操作列必须使用 `position:sticky;right:0` 固定在表格右侧
- 确保横向滚动时操作列始终可见,不会因列表内容过多而被遮挡
- 操作列需添加左侧阴影(`box-shadow:-4px 0 8px rgba(0,0,0,0.04)`)以区分固定区域
- thead 的操作列表头同样需要 sticky 固定
- 操作列 td 添加 class `td-actions`,并设置白色背景避免内容穿透
---
## 四、命名规范
### 4.1 文件命名
- 全部使用**小写英文 + 短横线**连接:`consult-detail.html`
- 页面文件:`{功能名}.html`,如 `consult-list.html`
- 弹窗文件:`{功能名}-dialog.html`,如 `filter-dialog.html`
- 面板文件:`{功能名}-panel.html`,如 `sort-panel.html`
- 状态变体:`{功能名}-{状态}.html`,如 `list-empty.html`
- 模块入口:统一使用 `index.html`
### 4.2 CSS 类命名
采用 BEM 风格,简洁明了:
```css
.consult-card { }
.consult-card__title { }
.consult-card__status--resolved { }
```
---
## 五、墨刀导入兼容约束
### 5.1 导入方式
通过已配置的 `modao-proto-mcp` MCP 服务,使用 `import_html` 工具将单个 HTML 文件导入墨刀项目。
### 5.2 兼容性要求
- **自包含**:每个 HTML 不得引用外部 CSS/JS/图片资源
- **单页面**:每个 HTML 文件仅包含一个页面/弹窗的内容
- **固定尺寸**:APP端页面内容区域控制在 390×844 内;Web端不设固定高度
- **简洁 DOM**:避免过度嵌套(建议不超过 8 层),墨刀解析有层级限制
- **内联 SVG**:图标和简单图形使用内联 SVG,复杂图形使用 CSS 绘制或色块占位
---
## 六、项目背景参考
### 6.1 项目背景
原健康CQ项目是CQ能源公司内部使用的综合性员工健康管理服务平台,旨在整合健康咨询、应急就医、健康体检、档案管理、健康监测、系统管理、健康干预、健康评估、一线医疗点及体重管理等多元功能,为能源员工提供全周期的健康保障。
### 6.2 用户群体
| 用户角色 | 角色定义 | 对应原型端 |
|---------|---------|-----------|
| 能源员工 | CQ能源一线员工及管理人员 | 员工端 APP |
| 平台管理员 | 健康管理部门后台运营人员 | Web 管理端 |
| 健康咨询专家 | 专业医师/健康管理师 | 健康应急 APP |
| 应急就医服务人员 | 应急调度与协调人员 | 健康应急 APP |
| 营养管理用户 | 通过小程序进行营养管理的员工 | 微信小程序 |
| 体检医生 | 负责体检检查的医生 | 体检医生工作台 |
| 医疗点医护人员 | 一线医疗点驻点医护 | 医疗点PAD端 |
| 应急中心值班人员 | 应急指挥中心大屏监控人员 | 应急大屏 |
### 6.3 核心业务模块
| 模块 | 业务概述 | 所属端 |
|-----|---------|-------|
| 系统管理 | 用户管理、角色权限、组织架构、系统配置 | Web 管理端 |
| 健康体检 | 体检预约、报告管理、历年数据对比 | 员工端 APP / Web 管理端 |
| 体重管理 | 体重记录、目标设定、进度追踪 | 员工端 APP / Web 管理端 |
| 营养管理 | 用餐记录、膳食指导、营养分析 | 员工端 APP / Web 管理端 |
| 运动管理 | 运动数据记录、目标设定、运动计划 | 员工端 APP / Web 管理端 |
| 健康监测 | 智能手表采集心率、血压、血氧、睡眠数据 | 员工端 APP / Web 管理端 |
| 健康评估 | 健康风险评估报告,识别风险等级 | 员工端 APP / Web 管理端 |
| 知识普及 | 健康资讯、科普文章、视频课程 | 员工端 APP / Web 管理端 |
| 健康数据 | 健康数据可视化与统计分析 | Web 管理端 |
| 健康档案 | 统一归集健康数据,形成个人健康时间轴 | 员工端 APP / Web 管理端 |
| 心脑血管病预防 | 心脑血管疾病风险筛查与预防管理 | 员工端 APP / Web 管理端 |
| 糖尿病预防 | 糖尿病风险筛查与预防管理 | 员工端 APP / Web 管理端 |
| 癌症预防 | 癌症风险筛查与预防管理 | 员工端 APP / Web 管理端 |
| 健康咨询/专家咨询 | 在线健康咨询,支持图文与视频咨询 | 员工端 APP / 健康应急 APP / Web 管理端 |
| 应急就医 | 应急申请、资源调度、进度跟踪的全流程管理 | 员工端 APP / 健康应急 APP / Web 管理端 |
| 一线医疗 | 一线医疗点服务与管理 | 员工端 APP / Web 管理端 |
| AI | 智能健康助手,AI问答与健康建议 | 员工端 APP |
| 营养管理小程序 | 员工端营养管理微信小程序 | 微信小程序 |
| 应急大屏 | 应急指挥中心数据可视化大屏 | 应急大屏(西安/标准版/九厂) |
| 医疗点PAD | 一线医疗点平板端服务系统 | 医疗点PAD端 |
| 体检医生工作台 | 体检医生检查与报告录入 | 体检医生WEB工作台 |
---
## 七、模块文档规范
### 7.1 文档要求
每个一级功能模块目录下必须创建 `doc/` 子目录,维护以下两个文档:
| 文件 | 用途 | 更新时机 |
|------|------|----------|
| `doc/CHANGELOG.md` | 变更记录 | 每次提交代码前自动整理并追加 |
| `doc/PRD.md` | 产品需求文档 | **用户明确要求时**才编写或更新,不随原型修改自动同步 |
### 7.2 CHANGELOG.md 格式规范
- 按时间倒序排列,最新变更在最前
- 每条记录格式:`## [YYYY-MM-DD] type: 变更摘要`
- type 取值:`init`(初始化)、`feat`(新增)、`fix`(修复)、`refactor`(重构)
- 列出涉及的文件及具体变更说明
### 7.3 PRD.md 编写规范
面向研发人员的产品需求文档,要求简洁、条理清晰,包含以下结构:
1. **模块概述**:一段话简要说明模块功能 + 页面导航结构树 + 状态流转图(Mermaid)
2. **页面清单**:表格列出所有功能页面、弹窗、内嵌功能页、结果态页面,页面清单根据业务分类(同一个PRD文档内公用的页面不重复罗列)
3. **逐页说明**:自动按业务流程顺序组织,WEB后台按一级菜单顺序分类罗列,APP端按每个业务线分类罗列,每个页面/弹窗/内嵌功能页/结果态页面包含以下维度:
- **页面截图**:在标题下方紧跟截图引用(格式见 7.4)
- **功能说明**:页面用途和核心 UI 元素
- **业务规则**:数据逻辑、状态约束、边界条件
- **交互说明**:以文字列表形式描述各元素的交互行为和跳转目标,跳转目标使用中文页面名称(如"跳转到专家主页"),不使用文件名
4. **表单字段表**:含表单提交的页面,以表格列出字段名、类型、是否必填、校验规则
### 7.4 PRD 页面截图规范
为提升文档可读性,PRD 中每个页面说明需附带页面截图。
**截图生成方式:**
- 使用浏览器自动化工具(如 Playwright、Puppeteer、Chrome DevTools 等)对 HTML 原型文件进行截图
- APP 端截图流程:
1. 通过脚本移除 `.phone-shell` 固定高度限制(`height: auto`)、移除圆角和阴影、将 `.page-content` 的 `overflow` 设为 `visible`,使内容完整展开
2. 设置视口宽度为 390px(与 phone-shell 一致),高度匹配内容实际高度
3. 截取全页面长图
- Web 端截取完整页面,视口 1440×900,设备缩放 1x
- 输出格式:JPEG(质量 85%),兼顾清晰度与文件体积
- 截图体积:Web ≤ 80KB、小程序 ≤ 60KB、硬件 ≤ 80KB;优先 Puppeteer,失真时降级 chrome-devtools MCP
**截图存放:**
- 统一存放在模块的 `doc/screenshots/` 目录下
- 文件名与原型 HTML 文件名一致(去掉 `.html` 后缀),如 `find-expert.jpg`
- 内嵌于其他页面的弹窗无需单独截图,在页面清单中标注即可
**PRD 中引用方式:**
- 在每个页面/弹窗的三级标题下方紧跟插入:``
- 使用相对路径(基于 `doc/` 目录),`_templates/md-viewer.html` 会自动补全为完整路径
**截图更新时机:**
- 与 PRD 文档同步,仅在用户明确要求更新 PRD 时重新截取