From 006b5f0d5c9d867e6474443905f4e25fcfed6a9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=AF=E6=99=AE?= <18691763612@163.com> Date: Thu, 9 Apr 2026 11:23:54 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E7=9A=84=E5=AF=BC=E8=88=AA=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 333 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 项目背景.md | 12 +- 2 files changed, 344 insertions(+), 1 deletion(-) create mode 100644 index.html diff --git a/index.html b/index.html new file mode 100644 index 0000000..5553b65 --- /dev/null +++ b/index.html @@ -0,0 +1,333 @@ + + + + + +健康长庆升级 - 高保真交互原型导航 + + + +
+
+
+
+
健康长庆升级 · 高保真交互原型
+
点击模块卡片中的页面链接,即可跳转预览对应原型
+
+
+
+
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/项目背景.md b/项目背景.md index 272b05d..83fce46 100644 --- a/项目背景.md +++ b/项目背景.md @@ -12,6 +12,7 @@ ``` prototype-user-app/ +├── index.html # 全局导航页(项目入口) ├── web-admin/ # Web 管理端原型 ├── employee-app/ # 员工端 APP 原型 ├── emergency-app/ # 健康应急 APP 原型 @@ -23,7 +24,16 @@ prototype-user-app/ └── README.md # 项目说明 ``` -### 1.2 各端内部按核心功能模块分目录 +### 1.2 全局导航页(index.html) + +根目录 `index.html` 作为项目统一入口,部署到服务器后供研发人员浏览所有原型页面。 + +- 通过 Tab 切换三大终端(Web 管理端 / 员工端 APP / 健康应急 APP) +- 以模块卡片展示各业务模块,卡片内列出该模块所有原型页面的跳转链接 +- 数据驱动:所有模块和页面信息维护在 `SITE_MAP` JS 对象中 +- **新增原型页面时,必须同步在 `index.html` 的 `SITE_MAP` 中添加对应条目** + +### 1.3 各端内部按核心功能模块分目录 **员工端 APP(employee-app/)17 个模块** ``` From fd39307aaf1f277d036b9af9808c3ac48d909353 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=AF=E6=99=AE?= <18691763612@163.com> Date: Thu, 9 Apr 2026 12:39:47 +0800 Subject: [PATCH 2/5] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=E5=AF=BC?= =?UTF-8?q?=E8=88=AA=E9=A1=B5UI=E4=BA=A4=E4=BA=92=EF=BC=8C=E5=8D=A1?= =?UTF-8?q?=E7=89=87=E7=82=B9=E5=87=BB=E8=B7=B3=E8=BD=AC=E4=B8=BB=E9=A1=B5?= =?UTF-8?q?+=E5=BE=BD=E7=AB=A0=E6=82=AC=E6=B5=AE=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 去掉顶部冗余统计徽章,Tab导航移入Header居中显示 - 模块卡片改为点击跳转主页,点击页数徽章弹出悬浮页面列表 - 已完成模块卡片添加绿色边框呼吸灯动画 - 健康应急APP角色分组标题与卡片居中对齐 - 同步更新项目背景.md导航页交互说明 Co-Authored-By: Claude Opus 4.6 --- index.html | 386 +++++++++++++++++++++++++++------------------------- 项目背景.md | 4 +- 2 files changed, 201 insertions(+), 189 deletions(-) diff --git a/index.html b/index.html index 5553b65..82bf4be 100644 --- a/index.html +++ b/index.html @@ -13,6 +13,9 @@ --warning: #FAAD14; --danger: #FF4D4F; --purple: #722ED1; + --green: #52C41A; + --green-light: #f6ffed; + --green-border: #b7eb8f; --text-primary: #1a1a2e; --text-secondary: #5a607f; --text-placeholder: #999999; @@ -22,7 +25,6 @@ --radius-sm: 6px; --radius-md: 10px; --radius-lg: 16px; - --radius-xl: 20px; --shadow-sm: 0 1px 3px rgba(0,0,0,0.04), 0 1px 2px rgba(0,0,0,0.06); --shadow-md: 0 4px 16px rgba(22,119,255,0.10), 0 2px 6px rgba(0,0,0,0.06); --shadow-lg: 0 10px 30px rgba(22,119,255,0.15), 0 4px 10px rgba(0,0,0,0.06); @@ -31,27 +33,20 @@ body { background: var(--background); font-family: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Helvetica Neue', 'Segoe UI', sans-serif; color: var(--text-primary); min-height: 100vh; } /* ===== Header ===== */ -.header { position: relative; background: linear-gradient(135deg, #0b3d91 0%, var(--primary) 40%, #4facfe 100%); color: #fff; padding: 44px 48px 28px; overflow: hidden; } +.header { position: relative; background: linear-gradient(135deg, #0b3d91 0%, var(--primary) 40%, #4facfe 100%); color: #fff; padding: 40px 48px 20px; overflow: hidden; } .header::before { content: ''; position: absolute; top: -60px; right: -40px; width: 260px; height: 260px; background: radial-gradient(circle, rgba(255,255,255,0.12) 0%, transparent 70%); border-radius: 50%; } .header::after { content: ''; position: absolute; bottom: -80px; left: 20%; width: 360px; height: 360px; background: radial-gradient(circle, rgba(255,255,255,0.06) 0%, transparent 70%); border-radius: 50%; } -.header__inner { position: relative; z-index: 1; max-width: 1400px; margin: 0 auto; } -.header__top { display: flex; align-items: flex-start; justify-content: space-between; } +.header__inner { position: relative; z-index: 1; max-width: 1400px; margin: 0 auto; text-align: center; } .header__title { font-size: 28px; font-weight: 800; letter-spacing: 1px; text-shadow: 0 2px 8px rgba(0,0,0,0.15); } -.header__sub { font-size: 14px; color: rgba(255,255,255,0.7); margin-top: 8px; font-weight: 400; } -.header__stats { display: flex; gap: 14px; margin-top: 22px; flex-wrap: wrap; } -.stat-badge { background: rgba(255,255,255,0.15); backdrop-filter: blur(10px); border: 1px solid rgba(255,255,255,0.2); border-radius: 24px; padding: 8px 20px; font-size: 13px; font-weight: 500; display: flex; align-items: center; gap: 8px; transition: background .2s; } -.stat-badge:hover { background: rgba(255,255,255,0.25); } -.stat-badge__dot { width: 10px; height: 10px; border-radius: 50%; box-shadow: 0 0 6px currentColor; } -.stat-badge__dot--web { background: #69b1ff; color: #69b1ff; } -.stat-badge__dot--app { background: #95de64; color: #95de64; } -.stat-badge__dot--emergency { background: #ffc069; color: #ffc069; } -/* ===== Tab 导航 ===== */ -.tab-nav { display: flex; align-items: center; gap: 6px; background: var(--card-bg); padding: 12px 48px; position: sticky; top: 0; z-index: 10; box-shadow: 0 2px 12px rgba(0,0,0,0.06); } -.tab-nav__item { padding: 9px 22px; font-size: 14px; font-weight: 500; color: var(--text-secondary); cursor: pointer; border-radius: 24px; transition: all .25s ease; user-select: none; display: flex; align-items: center; gap: 8px; border: 1.5px solid transparent; } -.tab-nav__item:hover { color: var(--primary); background: var(--primary-light); } -.tab-nav__item--active { color: #fff; background: var(--primary); border-color: var(--primary); box-shadow: 0 2px 8px rgba(22,119,255,0.3); } -.tab-nav__item--active .tab-nav__badge { background: rgba(255,255,255,0.25); color: #fff; } -.tab-nav__badge { font-size: 11px; padding: 2px 8px; border-radius: 10px; background: var(--primary-light); color: var(--primary); font-weight: 600; transition: all .25s; } +.header__sub { font-size: 14px; color: rgba(255,255,255,0.7); margin-top: 8px; } + +/* ===== Tab 导航(嵌入 Header 底部) ===== */ +.tab-nav { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 20px 48px 0; position: relative; z-index: 1; } +.tab-nav__item { padding: 10px 28px; font-size: 15px; font-weight: 600; color: rgba(255,255,255,0.7); cursor: pointer; border-radius: 28px; transition: all .25s ease; user-select: none; display: flex; align-items: center; gap: 8px; border: 1.5px solid rgba(255,255,255,0.25); background: rgba(255,255,255,0.08); backdrop-filter: blur(6px); } +.tab-nav__item:hover { color: #fff; background: rgba(255,255,255,0.18); border-color: rgba(255,255,255,0.4); } +.tab-nav__item--active { color: var(--primary-dark); background: #fff; border-color: #fff; box-shadow: 0 4px 16px rgba(0,0,0,0.15); } +.tab-nav__item--active .tab-nav__badge { background: var(--primary); color: #fff; } +.tab-nav__badge { font-size: 11px; padding: 2px 9px; border-radius: 10px; background: rgba(255,255,255,0.2); color: rgba(255,255,255,0.9); font-weight: 700; transition: all .25s; } .tab-nav__icon { width: 18px; height: 18px; flex-shrink: 0; } /* ===== 内容区 ===== */ @@ -61,13 +56,14 @@ body { background: var(--background); font-family: -apple-system, BlinkMacSystem @keyframes fadeUp { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } } /* ===== 模块网格 ===== */ -.module-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(360px, 1fr)); gap: 20px; } +.module-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 20px; } +.module-grid--center { justify-content: center; display: flex; flex-wrap: wrap; gap: 20px; } +.module-grid--center .module-card { width: 320px; flex-shrink: 0; } /* ===== 角色分组 ===== */ -.role-group { margin-bottom: 28px; } +.role-group { margin-bottom: 28px; text-align: center; } .role-group:last-child { margin-bottom: 0; } .role-group__title { display: inline-flex; align-items: center; gap: 8px; font-size: 15px; font-weight: 600; color: var(--text-primary); margin-bottom: 16px; padding: 6px 16px 6px 12px; background: var(--card-bg); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); } -.role-group__title:first-child { margin-top: 0; } .role-icon { width: 22px; height: 22px; border-radius: 6px; display: flex; align-items: center; justify-content: center; font-size: 13px; color: #fff; flex-shrink: 0; } .role-icon--expert { background: linear-gradient(135deg, #1677FF, #4facfe); } .role-icon--assistant { background: linear-gradient(135deg, #722ED1, #b37feb); } @@ -77,185 +73,173 @@ body { background: var(--background); font-family: -apple-system, BlinkMacSystem .role-icon--admin { background: linear-gradient(135deg, #eb2f96, #ff85c0); } .role-icon--shared { background: linear-gradient(135deg, #13c2c2, #5cdbd3); } -/* ===== 模块卡片 ===== */ -.module-card { position: relative; background: var(--card-bg); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); padding: 22px 22px 22px 26px; transition: all .25s ease; border: 1px solid var(--border); overflow: hidden; } -.module-card::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; border-radius: 4px 0 0 4px; background: var(--primary); transition: width .2s; } -.module-card:hover { box-shadow: var(--shadow-lg); transform: translateY(-3px); border-color: rgba(22,119,255,0.2); } -.module-card:hover::before { width: 5px; } -.module-card--empty { opacity: 0.6; border-style: dashed; border-color: #d0d5dd; } -.module-card--empty::before { background: #d0d5dd; } -.module-card--empty:hover { opacity: 0.75; transform: translateY(-1px); box-shadow: var(--shadow-md); border-color: #d0d5dd; } -.module-card__header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; } -.module-card__name { font-size: 15px; font-weight: 700; color: var(--text-primary); } -.module-card__count { font-size: 12px; color: var(--text-secondary); margin-left: 8px; font-weight: 400; } -.module-card__tag { font-size: 11px; padding: 3px 10px; border-radius: 12px; font-weight: 600; letter-spacing: 0.3px; } -.module-card__tag--ready { background: #f6ffed; color: #389e0d; border: 1px solid #b7eb8f; } -.module-card__tag--pending { background: #fffbe6; color: #d48806; border: 1px solid #ffe58f; } -.module-card__empty-hint { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--text-placeholder); } -.module-card__empty-hint svg { flex-shrink: 0; } +/* ===== 呼吸灯动画 ===== */ +@keyframes breathe { + 0%, 100% { border-color: rgba(82,196,26,0.35); box-shadow: 0 0 0 0 rgba(82,196,26,0); } + 50% { border-color: rgba(82,196,26,0.7); box-shadow: 0 0 12px 2px rgba(82,196,26,0.18); } +} -/* ===== 页面链接 ===== */ -.page-links { display: flex; flex-wrap: wrap; gap: 8px; } -.page-link { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; font-weight: 500; color: var(--primary-dark); background: linear-gradient(135deg, #e8f4ff, #f0f7ff); padding: 5px 14px; border-radius: 16px; text-decoration: none; transition: all .2s ease; border: 1px solid rgba(22,119,255,0.12); } -.page-link:hover { background: linear-gradient(135deg, #bae0ff, #d6ebff); border-color: rgba(22,119,255,0.25); transform: translateY(-1px); box-shadow: 0 2px 6px rgba(22,119,255,0.12); } -.page-link svg { flex-shrink: 0; } -.page-link--dialog { color: #ad4e00; background: linear-gradient(135deg, #fff7e6, #fff9ed); border-color: rgba(250,173,20,0.2); } -.page-link--dialog:hover { background: linear-gradient(135deg, #ffe7ba, #fff1cc); border-color: rgba(250,173,20,0.35); box-shadow: 0 2px 6px rgba(250,173,20,0.15); } +/* ===== 模块卡片 ===== */ +.module-card { position: relative; background: var(--card-bg); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); padding: 20px; transition: all .25s ease; border: 1.5px solid var(--border); cursor: pointer; z-index: 1; } +.module-card--pop-open { z-index: 200; } +.module-card:hover { box-shadow: var(--shadow-lg); transform: translateY(-3px); } +.module-card--ready { border-color: var(--green-border); animation: breathe 3s ease-in-out infinite; } +.module-card--ready:hover { border-color: var(--green); animation: none; box-shadow: 0 8px 24px rgba(82,196,26,0.2); } +.module-card--empty { opacity: 0.55; border-style: dashed; border-color: #d0d5dd; cursor: default; } +.module-card--empty:hover { transform: none; box-shadow: var(--shadow-sm); } +.module-card__header { display: flex; align-items: center; justify-content: space-between; } +.module-card__name { font-size: 15px; font-weight: 700; color: var(--text-primary); } +.module-card__tag { position: relative; font-size: 11px; padding: 3px 10px; border-radius: 12px; font-weight: 600; letter-spacing: 0.3px; } +.module-card__tag--ready { background: var(--green-light); color: #389e0d; border: 1px solid var(--green-border); cursor: pointer; transition: all .15s; } +.module-card__tag--ready:hover { background: #d9f7be; transform: scale(1.05); } +.module-card__tag--pending { background: #fffbe6; color: #d48806; border: 1px solid #ffe58f; } +.module-card__empty-hint { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--text-placeholder); margin-top: 10px; } + +/* ===== 悬浮页面列表 ===== */ +.page-popover { display: none; position: absolute; top: 100%; right: 0; margin-top: 6px; background: var(--card-bg); border: 1px solid var(--border); border-radius: var(--radius-md); box-shadow: 0 8px 30px rgba(0,0,0,0.15); padding: 8px 0; z-index: 100; min-width: 200px; max-height: 320px; overflow-y: auto; animation: popIn .2s ease; } +.page-popover--visible { display: block; } +@keyframes popIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: translateY(0); } } +.page-popover__title { font-size: 12px; color: var(--text-placeholder); padding: 4px 14px 8px; border-bottom: 1px solid var(--border); margin-bottom: 4px; } +.page-popover__item { display: flex; align-items: center; gap: 8px; padding: 7px 14px; font-size: 13px; color: var(--text-primary); text-decoration: none; transition: background .15s; } +.page-popover__item:hover { background: var(--primary-light); color: var(--primary-dark); } +.page-popover__item svg { flex-shrink: 0; } +.page-popover__item--dialog { color: #ad4e00; } +.page-popover__item--dialog:hover { background: #fff7e6; color: #ad4e00; }
-
-
-
健康长庆升级 · 高保真交互原型
-
点击模块卡片中的页面链接,即可跳转预览对应原型
-
-
-
+
健康长庆升级 · 高保真交互原型
+
点击模块卡片跳转至对应模块主页,点击页数徽章查看全部页面
+
- -
- \ No newline at end of file diff --git a/md-viewer.html b/md-viewer.html new file mode 100644 index 0000000..762829a --- /dev/null +++ b/md-viewer.html @@ -0,0 +1,119 @@ + + + + + +文档预览 + + + + +
+ + 文档预览 + +
+
+
加载中...
+
+ + + diff --git a/健康长庆系统升级改造报价单.md b/健康长庆系统升级改造报价单.md new file mode 100644 index 0000000..7cd7ee7 --- /dev/null +++ b/健康长庆系统升级改造报价单.md @@ -0,0 +1,151 @@ +# 健康长庆系统升级改造项目报价单 + + +**日期:** 2026年4月9日 + +--- + +## 一、项目概况 + +本项目基于"解构-迁移模式(Demolition Pattern)",采用"逐步解构 + 数据迁移 + 停机切换"实施路线,预计总工期 **12 个月**,完成健康长庆系统从"分布式单体"架构向 Java 21 + Spring Boot 3 + Docker 微服务架构的全面升级改造。 + +--- + +## 二、报价汇总 + +| 序号 | 模块编号 | 模块名称 | 费用(万元) | +|:----:|:--------:|:--------:|:----------:| +| **一** | **第一阶段** | **基础建设与顶层设计** | | +| 1 | M1 | 基础设施与容器化底座搭建 | 3.60 | +| 2 | M2 | 领域驱动设计与技术规范确立 | 3.60 | +| **小计** | | | **7.20** | +| **二** | **第二阶段** | **健康管理后台系统** | | +| 3 | M3 | 系统管理 | 6.12 | +| 4 | M4 | 健康体检 | 25.02 | +| 5 | M5 | 体重管理 | 9.54 | +| 6 | M6 | 营养管理 | 7.74 | +| 7 | M7 | 运动管理 | 5.76 | +| 8 | M8 | 健康监测 | 19.08 | +| 9 | M9 | 健康评估 | 8.10 | +| 10 | M10 | 知识普及 | 15.84 | +| 11 | M11 | 健康数据 | 12.60 | +| 12 | M12 | 健康档案 | 8.28 | +| 13 | M13 | 心脑血管病预防 | 11.88 | +| 14 | M14 | 糖尿病预防 | 9.36 | +| 15 | M15 | 癌症预防 | 9.00 | +| 16 | M16 | 专家咨询 | 10.80 | +| 17 | M17 | 应急就医 | 9.90 | +| 18 | M18 | 一线医疗 | 15.66 | +| 19 | M19 | 待办(异常数据)通知 | 0.36 | +| **小计** | | | **185.04** | +| **三** | **第二阶段** | **健康长庆APP** | | +| 20 | M20 | AI | 1.80 | +| 21 | M21 | 应用 | 4.14 | +| 22 | M22 | 健康体检 | 13.32 | +| 23 | M23 | 体重管理 | 8.28 | +| 24 | M24 | 营养管理 | 4.14 | +| 25 | M25 | 运动管理 | 5.22 | +| 26 | M26 | 健康监测 | 6.48 | +| 27 | M27 | 健康评估 | 8.28 | +| 28 | M28 | 心脑血管病预防 | 10.08 | +| 29 | M29 | 糖尿病预防 | 6.84 | +| 30 | M30 | 癌症预防 | 6.30 | +| 31 | M31 | 健康咨询 | 6.48 | +| 32 | M32 | 应急就医 | 4.14 | +| 33 | M33 | 一线医疗 | 5.40 | +| 34 | M34 | 健康档案 | 12.42 | +| 35 | M35 | 知识普及 | 8.64 | +| 36 | M36 | 个人中心 | 3.60 | +| **小计** | | | **115.56** | +| **四** | **第二阶段** | **健康应急APP、医护人员PAD、应急大屏、微信小程序** | | +| 37 | M37 | 健康应急APP | 27.90 | +| 38 | M38 | 医护人员PAD | 5.04 | +| 39 | M39 | 应急大屏 | 10.08 | +| 40 | M40-M43 | 微信小程序 | 23.22 | +| **小计** | | | **66.24** | +| **五** | **第三阶段** | **压测与集成** | | +| 41 | M44-M45 | 集成测试 | 10.80 | +| **小计** | | | **10.80** | +| **六** | **第四阶段** | **生产割接与保障期** | | +| 42 | M46 | 生产割接与保障期 | 1.80 | +| **小计** | | | **1.80** | + +--- + +## 三、费用汇总 + +| 项目 | 金额(万元) | 费用占比 | +|:----:|:----------:|:--------:| +| 第一阶段:基础建设与顶层设计 | 7.20 | 1.86% | +| 第二阶段:健康管理后台系统(M3-M19) | 185.04 | 47.86% | +| 第二阶段:健康长庆APP(M20-M36) | 115.56 | 29.89% | +| 第二阶段:健康应急APP/PAD/大屏/小程序(M37-M43) | 66.24 | 17.13% | +| 第三阶段:压测与集成(M44-M45) | 10.80 | 2.79% | +| 第四阶段:生产割接与保障期(M46) | 1.80 | 0.47% | +| **合计** | **386.64** | **100.00%** | + +--- + +## 四、报价说明 + +### 4.1 技术栈 + +| 类别 | 技术选型 | +|:----:|:--------:| +| 后端框架 | Java 21 + Spring Boot 3 | +| 容器化 | Docker / Kubernetes(K8s) | +| 消息队列 | RocketMQ 5.x | +| 缓存 | Redis 7 Cluster | +| 数据库 | PostgreSQL | +| 搜索引擎 | Elasticsearch | +| CI/CD | Jenkins + GitLab + Harbor | +| 监控 | Prometheus + Grafana + EFK | +| 链路追踪 | OpenTelemetry + Zipkin | +| 注册中心 | Nacos 2.x | +| 前端框架 | Element Plus | + +### 4.2 硬件资源需求(供参考,不含在报价内) + +| 序号 | 服务器用途 | 区域 | CPU(核) | 内存(G) | 存储(G) | +|:----:|:----------:|:----:|:---------:|:---------:|:---------:| +| 1 | 微服务集群节点1 | DMZ | 32 | 128 | 1,024 | +| 2 | 微服务集群节点2 | DMZ | 32 | 64 | 1,024 | +| 3 | 微服务集群节点3 | DMZ | 32 | 64 | 1,024 | +| 4 | 注册中心(Nacos等) | DMZ | 16 | 64 | 1,024 | +| 5 | 消息与缓存(Redis/RocketMQ) | 办公区 | 16 | 64 | 1,024 | +| 6 | 搜索存储(ES/MongoDB) | 办公区 | 16 | 64 | 2,048 | +| 7 | 数据服务器(PostgreSQL) | 办公区 | 16 | 32 | 8,192 | +| 8 | 数据备份服务器 | 办公区 | 16 | 32 | 8,192 | +| 9 | 文件存储服务器 | 办公区 | 16 | 64 | 8,192 | +| 10 | DevOps自动运维平台 | 办公区 | 16 | 32 | 1,024 | +| 11 | 监控平台(Prometheus等) | 办公区 | 16 | 32 | 2,048 | +| **合计** | | | **224** | **640** | **34,816** | + +### 4.3 项目里程碑计划 + +| 阶段 | 时间节点 | 主要交付物 | +|:----:|:--------:|:----------:| +| 第一阶段 | 第 1 ~ 2 月 | 基础设施搭建、技术规范文档、领域模型架构图 | +| 第二阶段 | 第 3 ~ 10 月 | 后台系统、APP、PAD、小程序全部功能模块 | +| 第三阶段 | 第 11 月 | 全面压测、集成测试、上线部署 | +| 交付阶段 | 第 12 月 | 系统文档、保驾护航、运维移交 | + +### 4.4 报价说明 + +1. **估算依据**:本报价依据《健康长庆系统升级改造详细规划》中的里程碑计划,对各模块进行详细工作量拆解,工作量单位为人天,共计 2,148 人天。 +2. **费用范围**:本报价仅含软件开发人工成本,不含服务器硬件采购、网络设备、操作系统及数据库等基础软件授权、第三方 API 调用及云服务资源等费用。 +3. **税费**:本报价为含税价,税率以双方合同约定为准。 +4. **差旅费**:如需驻场或异地出差,差旅及住宿费用另行按实结算,不含在本报价内。 +5. **变更管理**:若需求范围在项目执行过程中发生变更,双方应签署变更确认单,费用据实调整。 +6. **有效期**:本报价单自出具之日起 **30 个自然日**内有效,逾期需重新确认。 +7. **付款方式**:建议按里程碑节点分期付款,具体比例及时间节点以双方签订合同为准。 + +--- + +## 五、报价总额 + +> **项目总报价:叁佰捌拾陆万陆仟肆佰元整(¥ 386.64 万元)** + +--- + +*本报价单最终以双方签订合同为准。* diff --git a/项目背景.md b/项目背景.md index fd562bd..ade4418 100644 --- a/项目背景.md +++ b/项目背景.md @@ -356,3 +356,35 @@ window.location.href = '../health-consult/consult-list.html'; | 应急就医 | 应急申请、资源调度、进度跟踪的全流程管理 | 员工端 APP / 健康应急 APP / Web 管理端 | | 一线医疗 | 一线医疗点服务与管理 | 员工端 APP / Web 管理端 | | AI | 智能健康助手,AI问答与健康建议 | 员工端 APP | + +--- + +## 七、模块文档规范 + +### 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. **页面清单**:表格列出所有页面和弹窗 +3. **逐页说明**:每个页面/弹窗包含三个维度 + - **功能说明**:页面用途和核心 UI 元素 + - **业务规则**:数据逻辑、状态约束、边界条件 + - **交互说明**:以文字列表形式描述各元素的交互行为和跳转目标,跳转目标使用中文页面名称(如"跳转到专家主页"),不使用文件名 +4. **表单字段表**:含表单提交的页面,以表格列出字段名、类型、是否必填、校验规则 From a9eab27b3dcc90ac45d5c87dccd11af457a9b3c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=AF=E6=99=AE?= <18691763612@163.com> Date: Thu, 9 Apr 2026 17:43:43 +0800 Subject: [PATCH 4/5] =?UTF-8?q?chore:=20=E7=A7=BB=E9=99=A4=E8=AF=AF?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=9A=84=E6=8A=A5=E4=BB=B7=E5=8D=95=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 --- 健康长庆系统升级改造报价单.md | 151 ---------------------------------- 1 file changed, 151 deletions(-) delete mode 100644 健康长庆系统升级改造报价单.md diff --git a/健康长庆系统升级改造报价单.md b/健康长庆系统升级改造报价单.md deleted file mode 100644 index 7cd7ee7..0000000 --- a/健康长庆系统升级改造报价单.md +++ /dev/null @@ -1,151 +0,0 @@ -# 健康长庆系统升级改造项目报价单 - - -**日期:** 2026年4月9日 - ---- - -## 一、项目概况 - -本项目基于"解构-迁移模式(Demolition Pattern)",采用"逐步解构 + 数据迁移 + 停机切换"实施路线,预计总工期 **12 个月**,完成健康长庆系统从"分布式单体"架构向 Java 21 + Spring Boot 3 + Docker 微服务架构的全面升级改造。 - ---- - -## 二、报价汇总 - -| 序号 | 模块编号 | 模块名称 | 费用(万元) | -|:----:|:--------:|:--------:|:----------:| -| **一** | **第一阶段** | **基础建设与顶层设计** | | -| 1 | M1 | 基础设施与容器化底座搭建 | 3.60 | -| 2 | M2 | 领域驱动设计与技术规范确立 | 3.60 | -| **小计** | | | **7.20** | -| **二** | **第二阶段** | **健康管理后台系统** | | -| 3 | M3 | 系统管理 | 6.12 | -| 4 | M4 | 健康体检 | 25.02 | -| 5 | M5 | 体重管理 | 9.54 | -| 6 | M6 | 营养管理 | 7.74 | -| 7 | M7 | 运动管理 | 5.76 | -| 8 | M8 | 健康监测 | 19.08 | -| 9 | M9 | 健康评估 | 8.10 | -| 10 | M10 | 知识普及 | 15.84 | -| 11 | M11 | 健康数据 | 12.60 | -| 12 | M12 | 健康档案 | 8.28 | -| 13 | M13 | 心脑血管病预防 | 11.88 | -| 14 | M14 | 糖尿病预防 | 9.36 | -| 15 | M15 | 癌症预防 | 9.00 | -| 16 | M16 | 专家咨询 | 10.80 | -| 17 | M17 | 应急就医 | 9.90 | -| 18 | M18 | 一线医疗 | 15.66 | -| 19 | M19 | 待办(异常数据)通知 | 0.36 | -| **小计** | | | **185.04** | -| **三** | **第二阶段** | **健康长庆APP** | | -| 20 | M20 | AI | 1.80 | -| 21 | M21 | 应用 | 4.14 | -| 22 | M22 | 健康体检 | 13.32 | -| 23 | M23 | 体重管理 | 8.28 | -| 24 | M24 | 营养管理 | 4.14 | -| 25 | M25 | 运动管理 | 5.22 | -| 26 | M26 | 健康监测 | 6.48 | -| 27 | M27 | 健康评估 | 8.28 | -| 28 | M28 | 心脑血管病预防 | 10.08 | -| 29 | M29 | 糖尿病预防 | 6.84 | -| 30 | M30 | 癌症预防 | 6.30 | -| 31 | M31 | 健康咨询 | 6.48 | -| 32 | M32 | 应急就医 | 4.14 | -| 33 | M33 | 一线医疗 | 5.40 | -| 34 | M34 | 健康档案 | 12.42 | -| 35 | M35 | 知识普及 | 8.64 | -| 36 | M36 | 个人中心 | 3.60 | -| **小计** | | | **115.56** | -| **四** | **第二阶段** | **健康应急APP、医护人员PAD、应急大屏、微信小程序** | | -| 37 | M37 | 健康应急APP | 27.90 | -| 38 | M38 | 医护人员PAD | 5.04 | -| 39 | M39 | 应急大屏 | 10.08 | -| 40 | M40-M43 | 微信小程序 | 23.22 | -| **小计** | | | **66.24** | -| **五** | **第三阶段** | **压测与集成** | | -| 41 | M44-M45 | 集成测试 | 10.80 | -| **小计** | | | **10.80** | -| **六** | **第四阶段** | **生产割接与保障期** | | -| 42 | M46 | 生产割接与保障期 | 1.80 | -| **小计** | | | **1.80** | - ---- - -## 三、费用汇总 - -| 项目 | 金额(万元) | 费用占比 | -|:----:|:----------:|:--------:| -| 第一阶段:基础建设与顶层设计 | 7.20 | 1.86% | -| 第二阶段:健康管理后台系统(M3-M19) | 185.04 | 47.86% | -| 第二阶段:健康长庆APP(M20-M36) | 115.56 | 29.89% | -| 第二阶段:健康应急APP/PAD/大屏/小程序(M37-M43) | 66.24 | 17.13% | -| 第三阶段:压测与集成(M44-M45) | 10.80 | 2.79% | -| 第四阶段:生产割接与保障期(M46) | 1.80 | 0.47% | -| **合计** | **386.64** | **100.00%** | - ---- - -## 四、报价说明 - -### 4.1 技术栈 - -| 类别 | 技术选型 | -|:----:|:--------:| -| 后端框架 | Java 21 + Spring Boot 3 | -| 容器化 | Docker / Kubernetes(K8s) | -| 消息队列 | RocketMQ 5.x | -| 缓存 | Redis 7 Cluster | -| 数据库 | PostgreSQL | -| 搜索引擎 | Elasticsearch | -| CI/CD | Jenkins + GitLab + Harbor | -| 监控 | Prometheus + Grafana + EFK | -| 链路追踪 | OpenTelemetry + Zipkin | -| 注册中心 | Nacos 2.x | -| 前端框架 | Element Plus | - -### 4.2 硬件资源需求(供参考,不含在报价内) - -| 序号 | 服务器用途 | 区域 | CPU(核) | 内存(G) | 存储(G) | -|:----:|:----------:|:----:|:---------:|:---------:|:---------:| -| 1 | 微服务集群节点1 | DMZ | 32 | 128 | 1,024 | -| 2 | 微服务集群节点2 | DMZ | 32 | 64 | 1,024 | -| 3 | 微服务集群节点3 | DMZ | 32 | 64 | 1,024 | -| 4 | 注册中心(Nacos等) | DMZ | 16 | 64 | 1,024 | -| 5 | 消息与缓存(Redis/RocketMQ) | 办公区 | 16 | 64 | 1,024 | -| 6 | 搜索存储(ES/MongoDB) | 办公区 | 16 | 64 | 2,048 | -| 7 | 数据服务器(PostgreSQL) | 办公区 | 16 | 32 | 8,192 | -| 8 | 数据备份服务器 | 办公区 | 16 | 32 | 8,192 | -| 9 | 文件存储服务器 | 办公区 | 16 | 64 | 8,192 | -| 10 | DevOps自动运维平台 | 办公区 | 16 | 32 | 1,024 | -| 11 | 监控平台(Prometheus等) | 办公区 | 16 | 32 | 2,048 | -| **合计** | | | **224** | **640** | **34,816** | - -### 4.3 项目里程碑计划 - -| 阶段 | 时间节点 | 主要交付物 | -|:----:|:--------:|:----------:| -| 第一阶段 | 第 1 ~ 2 月 | 基础设施搭建、技术规范文档、领域模型架构图 | -| 第二阶段 | 第 3 ~ 10 月 | 后台系统、APP、PAD、小程序全部功能模块 | -| 第三阶段 | 第 11 月 | 全面压测、集成测试、上线部署 | -| 交付阶段 | 第 12 月 | 系统文档、保驾护航、运维移交 | - -### 4.4 报价说明 - -1. **估算依据**:本报价依据《健康长庆系统升级改造详细规划》中的里程碑计划,对各模块进行详细工作量拆解,工作量单位为人天,共计 2,148 人天。 -2. **费用范围**:本报价仅含软件开发人工成本,不含服务器硬件采购、网络设备、操作系统及数据库等基础软件授权、第三方 API 调用及云服务资源等费用。 -3. **税费**:本报价为含税价,税率以双方合同约定为准。 -4. **差旅费**:如需驻场或异地出差,差旅及住宿费用另行按实结算,不含在本报价内。 -5. **变更管理**:若需求范围在项目执行过程中发生变更,双方应签署变更确认单,费用据实调整。 -6. **有效期**:本报价单自出具之日起 **30 个自然日**内有效,逾期需重新确认。 -7. **付款方式**:建议按里程碑节点分期付款,具体比例及时间节点以双方签订合同为准。 - ---- - -## 五、报价总额 - -> **项目总报价:叁佰捌拾陆万陆仟肆佰元整(¥ 386.64 万元)** - ---- - -*本报价单最终以双方签订合同为准。* From 73909bfb2c06443c923bb2dcecf8bdae4bf5e5c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=AF=E6=99=AE?= <18691763612@163.com> Date: Thu, 9 Apr 2026 17:45:20 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E5=85=B1=E6=80=A7=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 共性需求说明.md | 554 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 554 insertions(+) create mode 100644 共性需求说明.md diff --git a/共性需求说明.md b/共性需求说明.md new file mode 100644 index 0000000..4bcdfca --- /dev/null +++ b/共性需求说明.md @@ -0,0 +1,554 @@ + + +
+ +## 目录 + +- [一、文档概述](#一文档概述) +- [二、项目背景与目标](#二项目背景与目标) + - [(一)项目背景](#一项目背景) + - [(二)项目目标](#二项目目标) + - [(三)交付标准](#三交付标准) +- [三、项目需求分析](#三项目需求分析) + - [(一)用户画像分析](#一用户画像分析) + - [(二)项目交付成果分析](#二项目交付成果分析) + - [(三)核心业务分析](#三核心业务分析) +- [四、共性需求说明](#四共性需求说明) + - [(一)PC端共性需求](#一pc端共性需求) + - [1.布局与框架](#1布局与框架) + - [2.表单设计规范](#2表单设计规范) + - [3.搜索与筛选规范](#3搜索与筛选规范) + - [4.交互与操作](#4交互与操作) + - [5.数据展示](#5数据展示) + - [6.文件处理规范](#6文件处理规范) + - [7.反馈与提示](#7反馈与提示) + - [8.权限控制](#8权限控制) + - [(二)移动端共性需求](#二移动端共性需求) + - [1.布局与导航](#1布局与导航) + - [2.表单设计规范](#2表单设计规范) + - [3.交互与操作](#3交互与操作) + - [4.数据展示](#4数据展示) + - [5.图片与文件处理](#5图片与文件处理) + - [6.反馈与提示](#6反馈与提示) + - [7.网络异常处理](#7网络异常处理) + - [(三)跨端通用规范](#三跨端通用规范) + - [1.品牌与视觉一致性](#1品牌与视觉一致性) + - [2.数据安全与隐私保护](#2数据安全与隐私保护) + - [3.字典与枚举规范](#3字典与枚举规范) + - [4.无障碍规范](#4无障碍规范) +- [五、功能需求详细设计](#五功能需求详细设计) + - [(一)系统管理](#一系统管理) + - [(二)健康评估](#二健康评估) + - [(三)应急就医](#三应急就医) + - [(四)专家咨询](#四专家咨询) +- [六、非功能性需求](#六非功能性需求) + - [(一)性能要求](#一性能要求) + - [(二)兼容性要求](#二兼容性要求) +- [七、技术实现方案](#七技术实现方案) + - [(一)项目技术架构设计](#一项目技术架构设计) + - [(二)数据库设计](#二数据库设计) + - [(三)接口设计](#三接口设计) + - [(四)系统安全与可用性设计](#四系统安全与可用性设计) + - [(五)系统部署与运维设计](#五系统部署与运维设计) + +
+ +
+ +# 一、文档概述 + +本文档为“健康长庆升级项目”的产品需求规格说明书(以下简称PRD),旨在系统性地定义本次升级的业务目标、功能范围、用户角色及非功能性需求,为项目团队(包括产品、设计、研发、测试等角色)提供统一的需求基线。该文档适用于“健康长庆升级项目”的全生命周期,涵盖需求分析、系统设计、原型设计、测试验证、交付验收各阶段。 + +### 文档目的 + +- 明确本次升级的核心目标与建设范围,确保各方对项目方向达成一致理解; + +- 详细描述各功能模块的业务逻辑、交互流程及数据要求,作为设计与开发的直接依据; + +- 规范验收标准与质量指标,为后续测试与上线交付提供参考。 + +### 读者对象 + +- 项目管理人员:用于把控项目范围、进度与风险; + +- 产品与设计人员:作为功能设计与交互设计的输入依据; + +- 研发人员:用于理解业务逻辑,进行技术方案设计与编码实现; + +- 测试人员:用于编写测试用例,验证系统功能与非功能性指标; + +- 客户方相关人员:用于确认需求内容,参与评审与验收。 + +### 文档内容 + +- 项目背景与目标:阐述“健康长庆升级项目”的建设背景、升级动因及总体目标,明确本次项目的价值定位; + +- 项目需求分析:拆解面向平台管理员、油田员工、健康咨询专家、应急就医服务人员等用户群体用户画像分析,概述本次项目的具体交付成果,对核心业务板块做简要说明; + +- 共性需求说明:针对交付产物(PC端或移动端)通用能力进行统一说明,包括用户权限管理、通用样式布局、操作一致性、数据字典等跨模块的公共需求; + +- 功能需求详细设计:围绕系统管理、健康咨询、应急就医、健康体检、档案管理、健康监测、一线医疗点、健康干预、体重管理等模块,逐一描述业务场景、功能流程、界面要求及业务规则; + +- 非功能性需求:明确系统在性能、安全、可用性、兼容性、可扩展性等方面的质量要求与量化指标; + +- 技术实现方案:阐述系统整体技术架构、技术选型、数据库设计、第三方系统对接(如智能手表)、系统安全与可用性、系统部署与运维等方案。 + +# 二、项目背景与目标 + +## (一)项目背景 + +原健康长庆项目是长庆油田公司内部使用的综合性员工健康管理服务平台,旨在整合健康咨询、应急就医、健康体检、档案管理、健康监测、系统管理、健康干预、健康评估、一线医疗点及体重管理等多元功能,为油田员工提供全周期的健康保障。 + +随着系统业务数据量的不断攀升、企业健康管理要求的不断提升及人工智能技术的快速发展,现有系统在功能完整性、交互体验、数据处理效率及智能服务能力等方面已无法完全满足日益增长的业务需求。为此,启动本次“健康长庆升级项目”,通过对原有系统的全面升级,进一步提升平台的业务支撑能力与用户使用体验。 + +## (二)项目目标 + +本项目立足于油田员工健康管理的实际业务场景,围绕“性能提升、功能升级与优化、智能化改造”三大方向展开,具体目标如下: + +* 性能提升:优化系统架构与数据处理能力,提升系统在高并发场景下的响应速度与稳定性,保障健康监测数据、体检数据等关键信息的高效流转与存储。 + +* 功能优化:重构平台功能规划、针对现有功能模块进行梳理与重构,优化用户操作流程,提升业务闭环的完整性与易用性,覆盖平台管理员、油田员工、健康咨询专家、应急就医服务人员等核心用户角色的使用场景。 + +* 智能化改造:引入智能化技术与数据分析能力,强化健康预警、风险识别、个性化干预等应用场景,提升平台在主动健康管理方面的服务能力,实现从“被动响应”向“主动守护”的升级。 + +## (三)交付标准 + +为确保项目成果符合预期,本次升级项目将依据以下标准进行验收与交付。所有交付内容需经客户方及我方项目主观部门双重确认。 + +### 性能与稳定性标准 + +* 并发处理能力:系统需支持高峰时段(如全员体检季、健康数据同步、全员体重管理高峰期)不低于 3000用户同时在线,核心业务接口响应时间控制在 3秒以内。 + +* 数据同步时效:健康监测(手表)数据从设备端到平台端的同步延迟不超过 5分钟,确保健康监测的实时性。 + +* 系统可用性:系统在试运行期间可用性达到 99.6% 以上,无重大级生产事故。 + +### 功能完整性标准 + +* 模块全覆盖:完成对健康咨询、应急就医、健康体检、档案管理、健康监测、系统管理、一线医疗点、健康干预、体重管理九大核心模块的升级改造,所有功能均需通过预设的测试用例。 + +* 业务流程闭环:关键业务流程(如应急就医从发起、调度到反馈的全过程;健康干预从风险评估到方案执行的全链路;员工档案从建立到速查)需实现端到端的业务闭环,无逻辑断点。 + +* 权限准确率:平台管理员、油田员工、健康咨询专家、应急就医服务人员四类角色的数据隔离与操作权限准确率达到100%。 + +### 智能化改造标准 + +* 主动预警能力:基于健康监测与体检数据通过数据中台和AI赋能,实现对异常指标(如心率、血压、血糖等)的自动识别与预警推送,预警准确率不低于 80%。 + +* 数据辅助决策:支持生成多维度的健康数据分析报告(如团队健康画像、高风险人群分布),为健康干预策略的制定提供数据支撑。 + +### 文档与技术资产交付 + +* 开发文档:提供完整的《系统详细设计说明书》《软件产品需求文档》《接口文档》(包含与智能手表、智能体重秤、环境监测IOT设备等第三方系统的对接规范)。 + +* 部署运维文档:提供《部署手册》《服务器环境清单》《系统监控与运维手册》及《常见问题处理指南》,确保系统具备可持续运维能力。 + +* 测试报告:提供功能测试报告、性能测试报告及安全测试报告,明确各项测试结论。 + +# 三、项目需求分析 + +## (一)用户画像分析 + +| 用户角色 | 角色定义 | 核心使用场景 | 核心诉求 | 当前痛点 | +| --- | --- | --- | --- | --- | +| 油田员工 | 长庆油田一线员工及管理人员,平台的最终受益者 | 查看健康档案、监测数据、发起健康咨询、申请应急就医、参与健康干预活动、记录体重管理 | 操作便捷、信息及时、响应迅速、隐私安全 | 原系统操作流程较为烦琐;健康数据呈现不够直观;应急就医入口不够显眼;缺乏主动健康提醒 | +| 平台管理员 | 油田健康管理部门的后台运营人员 | 用户管理、权限配置、数据统计、系统监控、体检安排、健康干预活动发布 | 管理效率高、数据可视化、权限控制灵活 | 后台数据统计维度单一;批量操作能力弱;干预活动发布流程复杂;缺乏数据导出与报表功能 | +| 健康咨询专家 | 提供健康咨询服务的专业医师/健康管理师 | 接收员工咨询、回复问题、查看咨询历史、辅助健康评估 | 咨询界面清晰、历史记录可追溯、辅助工具完善 | 咨询消息通知不及时;无法快速查看咨询用户的健康档案;缺乏常用回复模板 | +| 应急就医服务人员 | 负责应急就医调度与协调的后台人员 | 接收应急就医申请、核实信息、协调资源、跟踪处理进度、反馈结果 | 响应高效、信息完整、流程闭环、异常可预警 | 应急流程缺乏自动化提醒;处理进度跟踪困难;与一线医疗点信息联动不足 | +| 医疗点工作人员 | 长庆油田各一线医疗点的医护人员,负责为油田员工提供现场医疗服务 | 根据员工的健康状况、记录员工现场就诊信息、周期性就行慢病随访、体检报告解读等 | 信息同步及时、操作简便、与上级机构协同顺畅 | 平台响应效率慢;就诊记录与平台数据同步困难,重复录入工作量大 | + +## (二)项目交付成果分析 + +| 交付成果 | 终端定位 | 使用人群 | 核心功能要点 | +| --- | --- | --- | --- | +| 健康长庆平台(Web管理端) | 平台统一管理后台,支撑全系统配置与数据管理 | 平台管理员、健康管理部门人员 | 用户权限管理、组织架构维护、数据统计报表、体检安排、健康干预活动发布、应急就医调度监控、系统配置与日志审计 | +| 员工端Android版APP | 油田员工日常健康管理移动端入口(安卓设备) | 油田员工 | 健康档案查看、健康监测数据(手表)展示、发起健康咨询、申请应急就医、参与健康干预、体重管理、消息通知接收 | +| 员工端iOS版APP | 油田员工日常健康管理移动端入口(苹果设备) | 油田员工 | 功能与Android版一致,覆盖健康档案、健康监测、健康咨询、应急就医、健康干预、体重管理等核心模块 | +| 健康应急Android版APP | 应急场景专用移动端,服务于咨询专家、应急人群及咨询助手(安卓设备) | 健康咨询专家、应急就医服务人员、咨询小助手 | 咨询专家:接收咨询、回复问题、查看用户健康档案、快捷回复模板;应急人群:应急申请进度跟踪、资源调度查看;咨询小助手:辅助答疑、常见问题推送、数据统计 | +| 健康应急iOS版APP | 应急场景专用移动端,服务于咨询专家、应急人群及咨询助手(苹果设备) | 健康咨询专家、应急就医服务人员、咨询小助手 | 咨询专家:接收咨询、回复问题、查看用户健康档案、快捷回复模板;应急人群:应急申请进度跟踪、资源调度查看;咨询小助手:辅助答疑、常见问题推送、数据统计 | +| 应急大屏 | 应急指挥可视化看板,用于实时监控应急事件与资源调度 | 应急就医服务人员、平台管理员、应急指挥人员 | 应急事件实时地图展示、应急资源分布(医疗点、车辆)、事件处理进度追踪、异常事件预警、数据大屏可视化 | +| 医疗点pad端 | 一线医疗点专用移动终端,用于现场医疗服务与应急协同 | 一线医疗点工作人员 | 应急就医通知接收、现场就诊记录录入、医疗点资源(药品、设备)状态更新、与应急调度中心协同、员工健康档案快速查询 | +| 微信小程序 | 轻量化服务入口,满足员工便捷访问需求 | 油田员工 | 膳食营养监控、健康档案快速查看、健康监测数据摘要、消息通知、体重管理 | +| 服务监控平台 | 系统运行状态监控与运维管理后台,保障平台稳定运行 | 系统运维人员、技术支撑人员 | 服务健康状态监控、接口调用链路追踪、异常告警与通知、日志聚合分析、性能指标监控、资源使用情况监控、告警规则配置、运维报表统计 | +| 体检医生工作台 | 油田员工体检医院医生端工作台 | 医院体检医生 | 用于油田员工体检时医院医生进行信息核查和数据录入 | + +## (三)核心业务分析 + +| 核心业务 | 业务概述 | 现状问题 | 升级方向 | +| --- | --- | --- | --- | +| 系统管理 | 用户管理、角色权限、组织架构、系统配置、数据字典,保障平台安全稳定运行 | 权限颗粒度粗、日志不完善、无历史版本留存与操作记录、配置分散 | RBAC精细化权限、完整操作、统一配置管理、结合数据中台构建数据档案 | +| 健康评估 | 基于交大健康干预算法模型、中新惠尔风险与心理评估模型生成健康风险评估报告,识别风险等级 | 评估模型单一、报告样式单一、结果准确度不高、缺少系统自动评估机制和风险预警机制 | 借助AI平台优化评估模型、可视化报告、实现评估结果自动预警和主动风险预测 | +| 应急就医 | 应急申请、资源调度、进度跟踪、结果反馈的全流程管理。 | 应急业务并未形成完整闭环,应急过程以人为干预为主缺少智能的应急指导 | 完善业务流程闭环、就近资源自动匹配、超时升级提醒 | +| 专家咨询 | 员工在线健康咨询,连接专家,支持图文咨询与视频咨询 | 消息回复时效差、无有效的消息提醒机制,平台咨询助手强依赖于人工介入,智能化程度低 | 实时推送消息提醒、增加智能咨询助手 | +| 健康体检 | 体检预约、报告管理、历年数据对比,支撑健康管理基础数据 | 预约流程烦琐、部分报告上传依赖人工处理、数据量庞大导致业务性能表现差 | 优化体检预约流程、打通数据自动上传通道、历年趋势可视化、数据自动同步档案 | +| 健康监测 | 智能手表采集心率、血压、血氧、睡眠等数据,实现动态跟踪 | 同步延迟高、仅展示无分析、缺异常告警 | 优化同步延迟、趋势图可视化、借助AI实现异常自动识别告警、扩展设备兼容性 | +| 一线医疗 | 管理一线员工健康档案、开展慢病管理、随访管理、健康宣教、日常诊疗等医疗服务 | 数据权限管理混乱、信息更新滞后、部分业务性能表现差、大部分业务依赖人工介入智能化程度低 | 信息实时维护更新、优化数据权限以及业务响应速度、通过大数据+AI赋能提高诊疗业务中的智能化程度 | +| 营养管理 | 员工日常用餐记录、膳食指导、营养分析、饮食建议、风险预测助力健康生活方式 | 系统故障频发、功能单一、数据实时性差、与健康数据关联弱 | 提升系统功能卡永兴、完善个性化膳食建议、营养数据分析业务、打通与健康数据联动的壁垒 | +| 体重管理 | 体重记录、目标设定、进度追踪、激励反馈,科学管理体重 | 仅支持记录、缺目标激励、智能化引导和建议较弱 | 目标设定与进度追踪、趋势图表、因人而异提供更科学的减重建议和指导意见 | +| 知识普及 | 健康资讯、科普文章、视频课程,提升健康素养 | 更新慢、缺分类搜索、形式单一、阅读数据未利用 | 多形式内容、分类搜索推荐、点赞评论互动、阅读行为记录、优化智能推荐体系 | +| 运动管理 | 运动数据记录、目标设定、运动计划推荐,促进规律运动 | 数据来源单一、缺目标计划、与健康模块联动弱 | 手动录入补充、目标设定与进度、个性化运动推荐、联动体重营养 | +| 心脑血管病预防 | 高风险人群识别、预警推送、干预方案、科普教育专项管理 | 评估准确性较差、评估与干预脱节、缺少高风险预警措施 | 自动识别高风险人群、风险预警推送、专项干预方案、科普专区 | +| 糖尿病预防 | 血糖监测、风险预警、饮食运动指导,服务高风险及前期人群 | 评估准确性较差、血糖监控难落实、建议缺乏针对性、管理分散 | 血糖记录与趋势分析、自动识别高风险、个性化饮食运动建议、专项干预计划 | +| 癌症预防 | 常见癌症科普、早期筛查提醒、风险评估与预防建议 | 内容覆盖不全、缺评估工具、筛查提醒缺失 | 科普知识库、风险评估问卷、筛查提醒推送、筛查结果入档 | +| 健康数据 | 汇聚系统中所有健康数据,提供可视化分析、报表导出、统计能力 | 数据分散、统计维度单一、导出功能弱 | 统一数据中心、多维度可视化分析、灵活报表导出 | +| 健康档案 | 统一归集体检、监测、咨询、干预等数据,形成个人健康时间轴 | 个别业务未留存历史数据、数据分散未统一视图、数据资产管理方式混乱、数据统计与导出不完善 | 补全历史数据留存环节、实现多源数据整合统一视图、提供灵活的数据统计与导出方案 | +| 待办通知 | 待处理事项、系统消息、预警推送、活动提醒,保障流程推进 | 通知方式单一、缺强提醒、待办分散 | 统一待办中心、多渠道推送(App/短信/微信)、消息分类状态管理、超时升级提醒 | + +# 四、共性需求说明 + +本章节对平台各端(PC端、移动端)的通用交互规范、数据展示规则、权限控制及跨端一致性要求进行统一定义,所有功能模块的设计与开发须遵循本章节规范,不得与之冲突。 + +## (一)PC端共性需求 + +### 1.布局与框架 + +- 整体采用顶部导航&左侧导航栏 + 右侧内容区的经典后台布局,内容区支持自适应拉伸 + +- 无权限的菜单项、按钮直接隐藏 + +- 导入功能使用统一弹窗布局,支持模板下载、拖拽上传、文件预览 + +- 列表分页默认每页 10 条,支持切换每页条数(10 / 20 / 50/100) + +- 列表表格支持列宽拖动、根据每列内容合理规划列宽(如手机号身份证号等长度固定的字段)、列显隐配置,配置状态本地持久化 + +- 超长文本单行截断显示"...",鼠标悬浮展示完整内容(Tooltip) + +- 无数据、加载中、接口异常、空白页使用统一样式组件 + +- 详情页与编辑页排版结构与新增页保持一致 + +### 2.表单设计规范 + +- 必填字段在标签前标注红色星号(*),选填字段不做标注 + +- 字段标签统一左对齐,同一表单内标签宽度保持一致 + +- 校验时机:输入框失焦时触发单字段校验,提交时触发全量校验 + +- 只读态字段使用纯文本展示,不使用禁用输入框 + +- 下拉选项超过 10 条时,支持关键词搜索过滤 + +- 日期/时间选择统一使用系统日期组件,不允许纯手动输入 + +- 表单提交后按钮进入 loading 状态,防止重复提交 + +- 表单离开未保存时,弹出"是否放弃修改?"二次确认弹窗 + +### 3.搜索与筛选规范 + +- 搜索框支持回车键触发搜索,与点击搜索按钮效果一致 + +- 多条件筛选区域默认展开,条件较多时可折叠收起 + +- 已选筛选条件以标签形式展示在筛选区下方,支持单独点击删除 + +- 筛选条件变更后需手动点击"查询"按钮触发,不自动触发(避免频繁请求) + +- 提供"重置"按钮,一键清空所有筛选条件并恢复默认列表 + +- 列表页搜索/筛选状态不跨页面保留,刷新后恢复默认 + +### 4.交互与操作 + +- 删除、清空、重置、批量操作前必须弹出二次确认弹窗,明确说明操作影响 + +- 批量操作按钮在未选中数据时置灰禁用,选中后激活并显示已选数量 + +- 所有按钮做防连点控制,同一接口短时间内不可重复触发 + +- 接口请求期间按钮进入 loading 状态,内容区显示骨架屏或 loading 遮罩 + +- 导出规范:小数据量(≤1000条)即时导出;大数据量(>1000条)异步导出,生成任务后提示"请在导出任务中查看";按钮文案统一为"导出列表数据",导出成功后 Toast 提示 + +- 所有字段校验采用前端校验 + 后端校验双重保障 + +### 5.数据展示 + +- 时间展示统一格式:YYYY-MM-DD HH:mm:ss;日期类型统一格式:YYYY-MM-DD + +- 金额类型保留两位小数;百分比保留一位小数 + +- 浮点型数据无特别说明时默认保留两位小数 + +- 手机号、固定电话、身份证号使用统一正则验证规则 + +- 表格中数字列右对齐,文本列左对齐 + +- 空值/无数据字段统一展示为"—",不展示空字符串或 null + +### 6.文件处理规范 + +- 上传入口处明确标注支持的文件类型与大小上限 + +- 图片文件支持在线预览;PDF、Word、Excel 支持在线预览(不强制下载) + +- 大文件上传(>5MB)显示上传进度条,支持取消上传 + +- 下载文件统一通过浏览器下载,文件命名格式:模块名_数据名_时间戳 + +- 批量下载超过 10 个文件时,自动打包为 ZIP 后下载 + +### 7.反馈与提示 + +- 操作成功/失败:使用顶部居中 Toast 提示,3 秒后自动消失 + +- 关键操作(删除、提交、发布):使用 Confirm 确认框,需用户主动确认 + +- 接口报错:统一提示"系统繁忙,请稍后重试",详细错误信息仅输出至控制台 + +- 网络断开:全局顶部展示"网络连接已断开"横幅提示,恢复后自动消失 + +- 操作日志:新增、修改、删除、导出等关键操作自动记录操作日志,支持审计追溯 + +### 8.权限控制 + +- 应用权限:根据登录用户角色动态显示主页应用模块,无权限模块不可见 + +- 菜单权限:根据用户角色动态渲染菜单,无权限菜单项直接隐藏 + +- 按钮权限:页面内操作按钮根据权限控制显示/隐藏或启用/禁用 + +- 数据权限:所有业务数据默认按组织架构层级与登录用户管理范围进行隔离,禁止数据越权访问(如员工健康数据、单位活动、监测设备信息等) + +- 接口权限:核心业务接口必须加权限校验,普通员工 Token 无法访问后台统计接口,管理员 Token 无法访问 APP 专用接口 + +## (二)移动端共性需求 + +### 1.布局与导航 + +- 整体采用单列布局,内容区上下滑动 + +- 员工端 APP、健康应急 APP 使用底部 Tab 栏导航,Tab 不超过 5 个,当前选中项高亮 + +- 顶部导航栏显示页面标题,左侧返回按钮(一级页面无返回),右侧可放置更多操作入口 + +- 适配主流手机分辨率(iOS:iPhone 12 及以上;Android:主流全面屏),支持安全区域适配 + +- 支持左滑返回上一页;列表支持下拉刷新、上拉加载更多 + +### 2.表单设计规范 + +- 表单采用单列纵向排列,标签置于输入框上方 + +- 必填字段标注红色星号(*) + +- 输入框获取焦点时键盘自动弹起,内容区自动上移,避免键盘遮挡输入框 + +- 点击空白区域收起键盘 + +- 选择类控件使用底部弹出 Picker 或 ActionSheet,不使用 PC 式下拉框 + +- 长表单建议分步骤展示,每步不超过 5 个字段,顶部显示步骤进度条 + +- 表单提交后按钮进入 loading 状态,防止重复提交 + +### 3.交互与操作 + +- 可点击区域不小于 44×44pt,确保手指触控友好 + +- 主按钮使用圆角大按钮,宽度占满或居中,置于页面底部悬浮或跟随内容流 + +- 删除、清空等危险操作使用底部弹出 ActionSheet 或居中模态框,需二次确认 + +- 键盘弹起时底部悬浮按钮自动上移,避免被键盘遮挡 + +- 列表支持下拉刷新,刷新时顶部显示 loading 动画 + +### 4.数据展示 + +- 图表采用移动端适配的简化版本,支持手势缩放查看详情 + +- 无数据时显示统一占位图 + 提示文案,提供引导操作 + +- 空值统一展示为"—" + +### 5.图片与文件处理 + +- 图片上传支持拍照和相册选取两种方式,入口明确区分 + +- 上传前自动压缩,单张图片大小不超过 2MB + +- 图片预览支持双指缩放、左右滑动切换多张图片 + +- 文件下载显示进度,完成后提示"下载完成,点击打开" + +- 上传失败时提示具体原因(如"文件格式不支持"、"文件超出大小限制") + +### 6.反馈与提示 + +- 操作反馈使用 Toast 轻提示,1.5~2 秒自动消失,不阻断操作 + +- 异步请求使用全屏或局部 Loading,避免用户重复点击 + +- 待办事项、未读消息在入口处显示红点或数字角标 + +- 关键操作(如问卷提交)成功后,给予明确的成功状态页,而非仅 Toast + +### 7.网络异常处理 + +- 请求超时时间统一设置为 10 秒,超时后提示"服务器繁忙,请稍后在再试"并提供重试按钮 + +- 网络断开时,页面顶部展示"当前无网络连接"横幅,恢复后自动消失并刷新数据 + +- 弱网环境下优先展示缓存数据,并标注"网络不佳数据可能存在延迟" + +- 关键操作(如应急就医发起)在网络恢复后自动重试,并通知用户操作结果 + +- 首屏关键数据优先加载,非关键内容懒加载;图片使用缩略图 + 懒加载策略 + +## (三)跨端通用规范 + +### 1.品牌与视觉一致性 + +- PC 端与移动端采用统一的品牌色、字体、圆角、阴影等视觉语言 + +- 全平台功能命名、按钮文案、提示文案保持一致(如"应急就医"不出现"紧急就医"等变体) + +- 时间显示格式统一:近 24 小时内显示"X 小时前",超过 24 小时显示具体日期 + +- 错误提示文案统一维护,避免不同模块出现不同表述 + +- 同一用户在不同端操作,数据实时同步,无延迟感知 + +### 2.数据安全与隐私保护 + +- 所有数据传输使用 HTTPS 加密,禁止明文传输敏感信息 + +- 敏感字段(手机号、身份证号、健康指标数据)在列表中默认脱敏,详情页按权限展示完整信息 + +- 会话超时时间设置为 30 分钟无操作后自动登出,跳转登录页并提示"登录已过期,请重新登录" + +- 移动端禁止对健康敏感数据页面进行截图分享(系统级限制,如条件不允许则在界面层提示禁止截图) + +- 用户登出后本地缓存的敏感数据立即清除 + +### 3.字典与枚举规范 + +- 所有状态值、类型值统一在后台数据字典中维护,前端不硬编码枚举含义 + +- 前后端枚举值保持严格一致,接口文档中明确枚举定义 + +- 字典数据由后端统一下发,前端缓存使用;字典变更时主动通知前端刷新缓存 + +- 列表筛选、表单选项中的枚举值均从字典接口动态获取 + +### 4.无障碍规范 + +- 正文字体最小不低于 12px(PC),移动端正文不低于 14px + +- 文字与背景色对比度不低于 4.5:1(WCAG AA 标准) + +- 所有图标按钮需配备文字说明或 aria-label 属性 + +- 表单字段需关联 label 标签,支持屏幕阅读器识别 + +- 关键操作结果(成功/失败)需通过文字或图标明确告知,不能仅依赖颜色区分 + +# 五、功能需求详细设计 + +## (一)系统管理 + +健康长庆升级项目产品需求文档-系统管理.docx + +## (二)健康评估 + +健康长庆升级项目产品需求文档-健康评估.docx + +## (三)应急就医 + +## (四)专家咨询 + +# 六、非功能性需求 + +## (一)性能要求 + +### 业务指标 + +| 指标 | 定义 | 简称 | 本系统标准 | +| --- | --- | --- | --- | +| 请求响应时间 | 指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,整个过程所耗费的时间。 | Response Time: RT | 平均响应在1s以下;
统计查询接口3s以下 | +| 系统处理能力 | 指系统在利用系统硬件平台和软件平台进行信息处理的能力。
系统处理能力通过系统每秒钟能够处理的交易数量来评价。 | HPS(每秒点击次数)
TPS(系统每秒处理交易数)
QPS(系统每秒处理查询次数) | HPS:10000次/秒
TPS:3000笔/秒
QPS:5000次/秒 | +| 并发用户数 | 指在同一时刻内,登录系统并进行业务操作的用户数量。在测试中,采用虚拟用户来模拟现实中用户进行业务操作。 | Virtual User: VU | 正常负载下支持用户并发数3000+ | +| 错误率 | 指系统在负载情况下,失败交易的概率。 | Failure Ratio: FR | 错误率低于千分之六,即成功率高于99.6% | + +### 服务器资源指标 + +| 指标 | 定义 | 简称 | 本系统标准 | +| --- | --- | --- | --- | +| CPU | 中央处理器是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。 | Central Processing Unit:CPU | CPU sys%小于30%
CPU wait%小于5%。
CPU Load小于CPU 核数。 | +| 内存 | 内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。 | Memory就是内存的简称 | 本系统据其优秀的系统架构设计,合理的运用内存,在一般情况下不会利用到SWAP空间,自身的内存完全能够支撑项目的运行 | +| 磁盘吞吐量 | 指在无磁盘故障的情况下单位时间内通过磁盘的数据量。 | Disk Throughput | 在分布式架构下,一般磁盘繁忙率要低于70% | +| 网络吞吐量 | 指在无网络故障的情况下单位时间内通过的网络的数据数量。单位为Byte/s。用于衡量系统对于网络设备或链路传输能力的需求。 | Network Throughput | 网络吞吐量指标主要有每秒有多少兆流量进出,一般情况下不能超过设备或链路最大传输能力的70% | + +### 前端应用指标 + +| 指标 | 二级指标 | 解释 | 本系统指标 | +| --- | --- | --- | --- | +| 页面展示 | 首次显示时间 | 在浏览器地址栏输入URL按回车到用户看到网页的第一个视觉标志为止 | 秒级别响应 | +| | OnLoad事件时间 | 浏览器触发onLoad事件的时间,当原始文档和所有引用的内容完全下载后才会触发这个事件 | 秒级别响应 | +| | 完全载入的时间 | 所有onLoad JavaScript 处理程序执行完毕,所有动态的或延迟加载的内容都通过这些处理程序触发的时间 | 秒级别响应 | +| 页面数量 | 页面大小 | 整个页面大小 | 所有页面Body大小为KB级别 | +| | 请求数量 | 从网站下载资源时所有网络请求的总数,尽量少 | | +| 网络所花时间 | DNS时间 | DNS查找时间 | 秒级别响应 | +| | 连接时间 | 浏览器与Web服务器建立TCP/IP连接的时间 | 秒级别响应 | +| | 服务器时间 | 服务器处理时间 | 秒级别响应 | +| | 传输时间 | 内容传输所用时间 | 秒级别响应 | +| | 等待时间 | 等待某个资源释放的时间 | 秒级处理 | + +### 稳定性、可靠性指标 + +| 指标 | 解释 | 本系统标准 | +| --- | --- | --- | +| 稳定性指标 | 系统按照最大容量的80%或标准压力(系统的预期日常压力)情况下运行,能够稳定运行的最短时间 | 本系统能提供7*24运行的系统稳定运行能力。 | +| 集群 | 集群中某个节点出现故障时,系统是否有业务中断情况出现
在集群中新增一个节点时,是否需要重启系统
当故障节点恢复后,加入集群,是否需要重启系统
当故障节点恢复后,加入集群,系统是否有业务中断情况出现
节点切换需要多长时间 | 当系统出现故障时,故障节点会自动从集群中剔除,业务无需中断,当节点恢复时自动加入集群,实现无感知切换,纳秒级切换。 | +| 备份和恢复 | 备份是否成功及其消耗时间
备份是否使用脚本自动化完成
恢复是否成功及其消耗时间
恢复是否使用脚本自动化完成 | 备份策略采用全量和增量的方式进行,以小时为单位,周期性循环备份,并以天或周为单位周期性循环实现全量备份,为数据提供基础底层保障。 | + +## (二)兼容性要求 + +| 应用名称 | 系统性质 | 操作系统/浏览器内核兼容性要求 | 操作系统版本/browser版本要求 | 终端适配要求 | 备注 | +| --- | --- | --- | --- | --- | --- | +| 客户端APP | 移动APP | 1. 需同时兼容 Android、iOS、HarmonyOS 三类主流手机操作系统。
2. 需进行充分兼容性测试并输出测试报告。 | Android 系统:需兼容 Android 10.0 及以上版本,推荐 Android 12 及以上。 | 1. 机型适配:需兼容市面主流屏幕类型(全面屏、打孔屏、折叠屏等)。
2. 屏幕分辨率:1080×2400 及以上,支持安全区域适配。
3. 运行内存:4GB 及以上。 | 1. 测试需覆盖所有功能点。
2. 品牌、系统、分辨率兼容性测试可使用第三方测评平台,需出具测试报告。 | +| | | | iOS 系统:需兼容 iOS 16 及以上版本,推荐 iOS 17 及以上。 | 1. 适配 iPhone 12 及以上机型。
2. 屏幕分辨率:1170×2532 及以上。
3. 支持 Face ID 安全区域适配。 | | +| | | | HarmonyOS 系统:需兼容 HarmonyOS 4.0 及以上版本,推荐 HarmonyOS 6.0。 | 1. 适配华为、荣耀品牌近 3 年内主流机型。
2. 屏幕分辨率:1080×2340 及以上。
3. 运行内存:4GB 及以上。 | | +| 客户端WEB | B/S应用 | 1. 主要适配内核:Blink(Chromium)、Gecko、WebKit。
2. 不再支持 IE 浏览器(Trident 内核已废弃)。
3. 需适配 PC 端主流浏览器。 | Chromium 内核:Chrome 100+;Edge 100+;360极速浏览器(Chromium内核)13+;QQ浏览器 14+;搜狗浏览器 12+;Opera 85+。 | 1. 显示器分辨率:最低 1366×768,推荐 1920×1080 及以上,支持 2K(2560×1440)。
2. 显示器尺寸:13in–34in。 | 1. 推荐使用 Chrome 浏览器以获得最佳体验。
2. 不再支持 IE 浏览器,访问时提示升级。
3. 兼容性测试以浏览器版本为主,需同时注明内核版本。
4. 终端适配以分辨率为准,显示器尺寸为参考值。 | +| | | | Gecko 内核:Firefox 100+。
WebKit 内核:Safari 16+(仅适用于 macOS 用户)。
企业微信内置浏览器(Chromium 内核):需兼容企业微信 PC 端及移动端内置浏览器,版本跟随企业微信最新版本。 | | | + +# 七、技术实现方案 + +## (一)项目技术架构设计 + +## (二)数据库设计 + +## (三)接口设计 + +## (四)系统安全与可用性设计 + +## (五)系统部署与运维设计 + +
\ No newline at end of file