docs: 全局文档梳理归档 — 删除过期文件 + 归档 V1/早期设计 + wiki 数据校正 + CLAUDE.md 规则优化
**根目录清理:** - 删除 CLAUDE-1.md(ZCLAW 旧项目配置,HMS 已完全脱离) - 移动 DESIGN.md → docs/archive/(ERP 旧设计系统) - 删除 plans/ 98 个临时会话计划文件 **归档重组:** - V1 审计(12 文件)→ docs/archive/audits-v1/ - 早期 CRM/插件迭代设计(13 文件)→ docs/archive/superpowers-early/ - 已完成/已取代设计(28 文件)→ docs/archive/superpowers-completed/ - 早期讨论/测试报告 → docs/archive/discussions-early/ + test-reports-early/ - QA 重复文件清理(3 个旧版 result 文件) **wiki 数据校正:** - 迁移数 137→145,源文件 599→649,提交数 720→800+ - 小程序文件 124→163,Web 前端 297→332 - 后端测试 999→943(实际统计),权限码 75+→128 - 文档索引新增归档目录说明 **CLAUDE.md 规则优化:** - §2.5 闭环工作法:提交+文档+推送三合一 + wiki 更新触发条件 - §2.6 Feature DoD:新增文档一致性检查项 - §6 反模式:新增 wiki 更新滞后/推送不及时警告
This commit is contained in:
273
docs/archive/DESIGN.md
Normal file
273
docs/archive/DESIGN.md
Normal file
@@ -0,0 +1,273 @@
|
||||
# Design System — Enterprise ERP Platform
|
||||
|
||||
> Generated by UI UX Pro Max | Style: Soft UI Evolution | Target: Cross-industry business users
|
||||
|
||||
## 1. Visual Theme & Atmosphere
|
||||
|
||||
A warm, professional, and approachable design that feels trustworthy for business users across all industries — manufacturing, retail, finance, services, and more. The design uses a clean white canvas with soft blue as the primary brand color, conveying reliability and clarity without feeling cold or corporate.
|
||||
|
||||
The Soft UI Evolution style provides subtle depth through improved shadows — softer than flat design but clearer than neumorphism. This creates a sense of modern polish that invites interaction while maintaining excellent readability and accessibility (WCAG AA+).
|
||||
|
||||
**Key Characteristics:**
|
||||
- Clean white canvas with soft blue accent — trustworthy, professional, warm
|
||||
- Subtle depth through soft shadows — modern but not flat, not skeuomorphic
|
||||
- Moderate border-radius (10-12px) — friendly but not playful
|
||||
- Chinese-first typography with Noto Sans SC — readable at all sizes
|
||||
- Two-tier token system: CSS Variables (`--erp-*`) + Ant Design ConfigProvider
|
||||
- Dual theme support: light (default) + dark mode
|
||||
|
||||
## 2. Color Palette & Roles
|
||||
|
||||
### Primary Brand
|
||||
- **Primary Blue** (`#2563EB`): Primary CTA, active states, links, brand accent
|
||||
- **Primary Hover** (`#1D4ED8`): Pressed/active primary state
|
||||
- **Primary Light** (`#EFF6FF`): Primary background tint, subtle highlights
|
||||
- **Primary Subtle** (`#DBEAFE`): Light blue backgrounds for badges, chips
|
||||
|
||||
### Semantic Colors
|
||||
- **Success Green** (`#059669`): Success states, positive indicators, confirmations
|
||||
- **Success Light** (`#ECFDF5`): Success background tint
|
||||
- **Warning Amber** (`#D97706`): Warnings, pending states, attention needed
|
||||
- **Warning Light** (`#FFFBEB`): Warning background tint
|
||||
- **Error Red** (`#DC2626`): Errors, destructive actions, required fields
|
||||
- **Error Light** (`#FEF2F2`): Error background tint
|
||||
- **Info Blue** (`#0284C7`): Informational elements, tooltips, help text
|
||||
|
||||
### Text
|
||||
- **Primary Text** (`#0F172A`): Headings, primary body text — deep navy, professional
|
||||
- **Secondary Text** (`#475569`): Descriptions, labels, helper text
|
||||
- **Tertiary Text** (`#94A3B8`): Placeholders, disabled text, timestamps
|
||||
- **Inverse Text** (`#FFFFFF`): Text on colored/dark surfaces
|
||||
|
||||
### Surface & Border
|
||||
- **Page Background** (`#F8FAFC`): App background — cool off-white
|
||||
- **Container Background** (`#FFFFFF`): Cards, panels, modals
|
||||
- **Elevated Background** (`#FFFFFF`): Dropdowns, popovers, tooltips
|
||||
- **Border** (`#E2E8F0`): Default borders, dividers
|
||||
- **Border Strong** (`#CBD5E1`): Emphasized borders, active card outlines
|
||||
- **Hover Background** (`#F1F5F9`): Row hover, item hover backgrounds
|
||||
- **Muted Background** (`#F1F5F9`): Subtle section backgrounds, table headers
|
||||
|
||||
### Dark Mode
|
||||
- **Dark Page** (`#0F172A`): Dark app background
|
||||
- **Dark Container** (`#1E293B`): Dark cards, panels
|
||||
- **Dark Elevated** (`#334155`): Dark dropdowns, popovers
|
||||
- **Dark Border** (`#334155`): Dark borders
|
||||
- **Dark Hover** (`#1E293B`): Dark row hover
|
||||
- **Dark Text Primary** (`#F8FAFC`): Dark mode primary text
|
||||
- **Dark Text Secondary** (`#94A3B8`): Dark mode secondary text
|
||||
|
||||
## 3. Typography Rules
|
||||
|
||||
### Font Family
|
||||
- **Primary**: `Noto Sans SC`, fallbacks: `-apple-system, system-ui, 'Segoe UI', Roboto, 'PingFang SC', 'Microsoft YaHei', sans-serif`
|
||||
- **Monospace (optional)**: `'JetBrains Mono', 'Fira Code', Consolas, monospace`
|
||||
|
||||
### Hierarchy
|
||||
|
||||
| Role | Size | Weight | Line Height | Usage |
|
||||
|------|------|--------|-------------|-------|
|
||||
| Page Title | 24px (1.5rem) | 700 | 1.3 | Page headings, dialog titles |
|
||||
| Section Title | 20px (1.25rem) | 600 | 1.4 | Section headings, card titles |
|
||||
| Subsection | 16px (1rem) | 600 | 1.5 | Subsection labels, form group titles |
|
||||
| Body | 14px (0.875rem) | 400 | 1.6 | Standard body text, table cells, descriptions |
|
||||
| Caption | 12px (0.75rem) | 400 | 1.5 | Timestamps, badges, helper text, metadata |
|
||||
|
||||
### Principles
|
||||
- **Chinese-first**: Noto Sans SC ensures excellent CJK rendering
|
||||
- **Readable weights**: 400 for body, 600-700 for headings — always substantial, never thin
|
||||
- **Generous line-height**: 1.5-1.6 for body text ensures comfortable reading
|
||||
- **Moderate scale**: 12-24px range creates a compact, professional information hierarchy
|
||||
|
||||
## 4. Component Stylings
|
||||
|
||||
### Buttons
|
||||
- **Primary**: Blue (#2563EB) background, white text, 10px radius, soft shadow
|
||||
- **Secondary**: White background, slate border (#CBD5E1), dark text, 10px radius
|
||||
- **Ghost**: Transparent background, primary blue text, no border
|
||||
- **Danger**: Red (#DC2626) background, white text, for destructive actions
|
||||
- **All buttons**: Min height 36px, 40px preferred; smooth hover transition 200ms
|
||||
|
||||
### Cards & Containers
|
||||
- White background, 12px radius, soft shadow: `0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04)`
|
||||
- Hover: Slightly elevated shadow: `0 4px 6px rgba(0,0,0,0.07), 0 2px 4px rgba(0,0,0,0.05)`
|
||||
- No thick borders — shadows and subtle background differences create depth
|
||||
|
||||
### Inputs
|
||||
- White background, 1px solid #CBD5E1 border, 10px radius
|
||||
- Focus: Blue ring (2px solid #2563EB) with outer glow
|
||||
- Error: Red border + error message below field
|
||||
- Height: 40px standard, 32px small
|
||||
|
||||
### Tables
|
||||
- Header: #F1F5F9 background, #475569 text, 14px weight 600
|
||||
- Row hover: #F1F5F9 background
|
||||
- Cell padding: 16px vertical, 12px horizontal
|
||||
- Border: Bottom-only using #E2E8F0
|
||||
|
||||
### Navigation / Sidebar
|
||||
- Background: White (#FFFFFF) with right border #E2E8F0
|
||||
- Active item: #EFF6FF background, #2563EB text, left accent bar (3px)
|
||||
- Hover item: #F1F5F9 background
|
||||
- Item height: 40px, 12px radius
|
||||
- Icons: 20px, inline with label text
|
||||
|
||||
### Tags / Badges
|
||||
- Small radius (6px), medium padding (4px 8px)
|
||||
- Color-coded backgrounds: blue tint, green tint, amber tint, red tint
|
||||
- Text matches semantic color (darker shade than background)
|
||||
|
||||
### Modals / Dialogs
|
||||
- 16px radius, generous padding (24px)
|
||||
- Soft elevated shadow: `0 8px 30px rgba(0,0,0,0.12)`
|
||||
- Header with title, footer with action buttons
|
||||
|
||||
## 5. Layout Principles
|
||||
|
||||
### Spacing System
|
||||
- Base unit: 4px
|
||||
- Scale: 4px, 8px, 12px, 16px, 20px, 24px, 32px, 40px, 48px, 64px
|
||||
- Content padding: 24px standard, 16px compact
|
||||
|
||||
### Layout
|
||||
- Fixed sidebar: 240px wide, collapsible to 72px
|
||||
- Sticky header: 56px
|
||||
- Content area: Fluid width with max comfortable reading width
|
||||
- Standard CRUD table/list views for data management
|
||||
|
||||
### Border Radius Scale
|
||||
- Small (6px): Tags, badges, small elements
|
||||
- Standard (10px): Buttons, inputs, cards
|
||||
- Large (12px): Panels, modals, large containers
|
||||
- Full (50%): Circular avatars, icon buttons
|
||||
|
||||
## 6. Depth & Elevation
|
||||
|
||||
| Level | Shadow | Use |
|
||||
|-------|--------|-----|
|
||||
| Level 0 (Flat) | None | Page background, sidebar |
|
||||
| Level 1 (Subtle) | `0 1px 2px rgba(0,0,0,0.05)` | Cards, form sections |
|
||||
| Level 2 (Default) | `0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04)` | Elevated cards, dropdowns |
|
||||
| Level 3 (Elevated) | `0 4px 6px rgba(0,0,0,0.07), 0 2px 4px rgba(0,0,0,0.05)` | Hover states, active cards |
|
||||
| Level 4 (Modal) | `0 8px 30px rgba(0,0,0,0.12)` | Modals, overlays |
|
||||
|
||||
## 7. Interactive States
|
||||
|
||||
### Hover
|
||||
- Background color shift: `#F1F5F9` for neutral, semantic tint for colored elements
|
||||
- Transition: 200ms ease
|
||||
- Cursor: `pointer` on clickable elements
|
||||
|
||||
### Focus
|
||||
- 2px solid ring using `#2563EB`
|
||||
- 2px offset for visibility
|
||||
- Always visible for keyboard navigation
|
||||
|
||||
### Active / Pressed
|
||||
- Slightly darker shade of the element's color
|
||||
- Brief scale or shadow change for tactile feedback
|
||||
|
||||
### Disabled
|
||||
- Reduced opacity (0.5)
|
||||
- No hover effects
|
||||
- Cursor: `not-allowed`
|
||||
|
||||
### Loading
|
||||
- Spinner or skeleton placeholder
|
||||
- Disabled interactions during async operations
|
||||
|
||||
## 8. Do's and Don'ts
|
||||
|
||||
### Do
|
||||
- Use soft shadows for depth — the Soft UI Evolution identity
|
||||
- Apply Primary Blue (#2563EB) only for primary actions and active states
|
||||
- Use Noto Sans SC for consistent Chinese rendering
|
||||
- Apply 10-12px radius — friendly but professional
|
||||
- Use semantic color tints for status backgrounds
|
||||
- Keep tables clean with subtle header differentiation
|
||||
- Ensure 4.5:1 contrast ratio for all text
|
||||
|
||||
### Don't
|
||||
- Don't use heavy or dramatic shadows — keep depth subtle
|
||||
- Don't use pure black (#000000) for text — use #0F172A instead
|
||||
- Don't use pill-shaped buttons — 10px radius is rounded but not pill
|
||||
- Don't mix warm and cool neutrals — stay in the slate family
|
||||
- Don't use emojis as icons — use SVG icons (Lucide/Heroicons)
|
||||
- Don't use decorative-only animations — every animation must serve a purpose
|
||||
- Don't use colors as the sole means of conveying information
|
||||
|
||||
## 9. Responsive Behavior
|
||||
|
||||
### Breakpoints
|
||||
| Name | Width | Key Changes |
|
||||
|------|-------|-------------|
|
||||
| Mobile | <576px | Sidebar collapsed, single column |
|
||||
| Tablet | 576-768px | Sidebar collapsed, 2-column grid |
|
||||
| Desktop Small | 768-1024px | Sidebar expanded, responsive grid |
|
||||
| Desktop | 1024-1440px | Full layout |
|
||||
| Large Desktop | >1440px | Maximum content width |
|
||||
|
||||
### Collapsing Strategy
|
||||
- Sidebar: 240px → 72px (icon only) on mobile/tablet
|
||||
- Tables: Horizontal scroll on narrow screens
|
||||
- Forms: Single column on mobile, multi-column on desktop
|
||||
- Cards: Full-width stack → grid layout
|
||||
|
||||
## 10. ERP Platform Adaptations
|
||||
|
||||
### Layout
|
||||
- Fixed sidebar navigation (240px wide, collapsible to 72px)
|
||||
- Sticky header (56px) with search, notifications, user menu
|
||||
- Content area uses CSS Grid for responsive multi-column dashboards
|
||||
- Standard CRUD table/list views replace masonry grid for data management
|
||||
|
||||
### Color Adaptations
|
||||
- Primary Blue (#2563EB) for primary actions (Save, Create, Submit)
|
||||
- Success Green (#059669) for positive states (Approved, Completed, Paid)
|
||||
- Warning Amber (#D97706) for pending states (Pending Review, Awaiting)
|
||||
- Error Red (#DC2626) for destructive/error states (Rejected, Failed, Overdue)
|
||||
- Info Blue (#0284C7) for informational elements (Tips, Help, Documentation)
|
||||
|
||||
### Component Adaptations
|
||||
- **Tables**: Slate header bg (#F1F5F9), generous cell padding, subtle hover (#F1F5F9)
|
||||
- **Forms**: 10px radius inputs, slate borders (#CBD5E1), generous spacing
|
||||
- **Cards**: 12px radius, soft shadow, white background
|
||||
- **Sidebar**: Blue active states (#EFF6FF bg), slate hover, 12px radius items
|
||||
- **Tags/Badges**: 6px radius, semantic color tints (blue/green/amber/red)
|
||||
- **Modals**: 16px radius, elevated shadow, generous padding
|
||||
|
||||
### Dark Mode
|
||||
- Background: #0F172A (deep navy)
|
||||
- Container: #1E293B (dark slate)
|
||||
- Elevated: #334155 (medium slate)
|
||||
- Border: #334155
|
||||
- Active accent: #3B82F6 (lighter blue for dark backgrounds)
|
||||
- Text: #F8FAFC primary, #94A3B8 secondary
|
||||
|
||||
## 11. Agent Prompt Guide
|
||||
|
||||
### Quick Color Reference
|
||||
- Brand: Primary Blue (#2563EB)
|
||||
- Background: Cool Off-White (#F8FAFC)
|
||||
- Text: Deep Navy (#0F172A)
|
||||
- Secondary text: Slate (#475569)
|
||||
- Border: Light Slate (#E2E8F0)
|
||||
- Success: Green (#059669)
|
||||
- Warning: Amber (#D97706)
|
||||
- Error: Red (#DC2626)
|
||||
- Focus: Blue (#2563EB)
|
||||
|
||||
### Example Component Prompts
|
||||
- "Create a card: white background, 12px radius, soft shadow (0 1px 3px rgba(0,0,0,0.06)). Title in 16px weight 600 #0F172A. Body in 14px #475569."
|
||||
- "Design a primary button: #2563EB background, white text, 10px radius, 8px 16px padding. Hover: #1D4ED8. Focus: 2px solid #2563EB ring."
|
||||
- "Build a table: header #F1F5F9 background, #475569 text 14px weight 600. Row hover #F1F5F9. Cell padding 16px 12px. Border bottom #E2E8F0."
|
||||
- "Create a sidebar: white background, right border #E2E8F0. Active item: #EFF6FF background, #2563EB text, 3px left accent bar. Hover: #F1F5F9."
|
||||
- "Design a modal: 16px radius, shadow 0 8px 30px rgba(0,0,0,0.12). Title 20px weight 600. Footer with primary blue CTA."
|
||||
|
||||
### Iteration Guide
|
||||
1. Soft shadows everywhere — subtle depth is the identity
|
||||
2. Primary Blue for CTAs and active states — trustworthy, not overwhelming
|
||||
3. 10px radius on buttons/inputs, 12px on cards — friendly but professional
|
||||
4. Noto Sans SC is the primary font — Chinese-first, readable at all sizes
|
||||
5. Slate neutrals — never pure black or pure gray, always with blue undertone
|
||||
6. Semantic tints for status — green/amber/red backgrounds with matching text
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 884 KiB |
@@ -1,134 +0,0 @@
|
||||
# R01 — Admin 测试结果
|
||||
|
||||
> 测试日期: 2026-05-06 | 测试人: Claude | 环境: 本地 dev
|
||||
|
||||
## 1. 登录 & 仪表盘
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|--------|------|----------|----------|------|
|
||||
| 1.1 | 登录 | 输入 admin / Admin@2026 | 成功登录,左侧菜单 45 项 | 成功登录,菜单完整显示 | PASS |
|
||||
| 1.2 | 工作台仪表盘 | 查看首页 | 显示注册用户数、业务模块数、今日操作、本周活跃 | 注册用户17、业务模块8/8、今日操作5、本周活跃7;8模块均"运行中" | PASS |
|
||||
| 1.3 | 最近操作记录 | 查看操作日志 | 按时间倒序显示登录/操作记录 | 6条登录记录,按时间倒序 | PASS |
|
||||
|
||||
## 2. 场景 A — 患者建档全链路
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|------|------|----------|----------|------|
|
||||
| A.1 | 创建患者 | 新增 → 填写姓名/身份证/手机/出生日期 → 保存 | 患者出现在列表,状态 active | 创建"测试患者R01"成功,列表首位显示 | PASS |
|
||||
| A.2 | 患者详情 | 点击新患者卡片 | 显示基本信息、体征数据 Tab、操作记录 | 详情页显示基本信息+体征Tab+操作记录 | PASS |
|
||||
| A.3 | 打标签 | 标签管理 → 新增"高血压高危"→ 回患者详情分配 | 标签显示在患者卡片和详情页 | 标签 CRUD 正常,患者卡片显示标签 | PASS |
|
||||
| A.4 | 绑定设备 | 查看设备列表 → 记录绑定状态 | 设备列表显示绑定关系 | 设备列表正常显示 | PASS |
|
||||
| A.5 | 知情同意 | 查看知情同意记录 | 知情同意书列表可查看 | 列表正常 | PASS |
|
||||
| A.6 | 验证完整性 | 搜索新患者 | 患者信息完整 | 搜索结果正确 | PASS |
|
||||
|
||||
## 3. 场景 B — 随访闭环(管理视角)
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|------|------|----------|----------|------|
|
||||
| B.1 | 创建随访 | 新增 → 选患者+随访类型+计划日期 → 保存 | 随访任务创建成功,状态 pending | 创建电话随访(2026-05-15)成功 | PASS |
|
||||
| B.2 | 随访列表 | 按状态筛选:待办/进行中/已完成 | 筛选正确,数据一致 | **筛选不生效**:选"待处理"后列表仍显示全部22条混合状态 | FAIL |
|
||||
| B.3 | 查看模板 | 查看随访模板 | 模板列表显示结构和字段 | 模板列表正常 | PASS |
|
||||
| B.4 | 行动收件箱 | 筛选类型 | 显示行动项 | 新建随访出现在行动收件箱 | PASS |
|
||||
|
||||
## 4. 场景 C — 咨询流转(管理视角)
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|------|------|----------|----------|------|
|
||||
| C.1 | 咨询列表 | 按状态筛选 | 显示 waiting/active/closed 状态 | 列表显示多条咨询,按状态分组 | PASS |
|
||||
| C.2 | 对话详情 | 点击某条咨询 → 查看对话 | 显示完整消息历史 | 对话详情正常,发送"测试回复消息"成功;患者名显示"未知"(minor) | PASS |
|
||||
|
||||
## 5. 场景 D — 告警处理链
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|------|------|----------|----------|------|
|
||||
| D.1 | 危急值阈值 | 查看配置 | 显示各体征指标的阈值范围 | 显示收缩压/舒张压/心率/血氧/体温阈值 | PASS |
|
||||
| D.2 | 告警仪表盘 | 查看统计 | 按严重程度分类显示告警 | 显示 pending 告警统计 | PASS |
|
||||
| D.3 | 告警处理 | 点击告警 → 标记已确认/已处理 | 告警状态变更 | **无操作按钮**:详情面板只有 ID/score/severity 信息,无确认/处理按钮 | ISSUE |
|
||||
| D.4 | 实时监控 | 查看面板 | 显示实时体征数据流 | 实时监控面板正常显示 | PASS |
|
||||
| D.5 | BLE 网关 | 查看网关列表 | 显示连接状态 | 网关列表正常 | PASS |
|
||||
|
||||
## 6. 场景 E — AI 分析链
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|------|------|----------|----------|------|
|
||||
| E.1 | Prompt 管理 | 查看 Prompt 模板列表 | 显示 Prompt 模板,可编辑 | 显示 4 个 Prompt 模板(趋势分析/化验报告/健康报告/通用) | PASS |
|
||||
| E.2 | 触发分析 | 查看 AI 分析历史 | 显示分析记录和结果 | 历史记录正常显示 | PASS |
|
||||
| E.3 | AI 用量 | 查看统计 | 显示调用次数、token 消耗 | 显示总量/成功/失败统计 | PASS |
|
||||
|
||||
## 7. 场景 F — 内容发布链
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|------|------|----------|----------|------|
|
||||
| F.1 | 创建文章 | 新增 → 填写标题/内容 → 保存草稿 | 文章状态为 draft | 创建"R01测试文章-健康饮食"成功,状态 draft | PASS |
|
||||
| F.2 | 编辑文章 | 点击草稿 → 修改内容 → 保存 | 内容更新成功 | 编辑保存成功 | PASS |
|
||||
| F.3 | 发布文章 | 点击发布 | 状态 draft → published | 发布成功,状态变为 published | PASS |
|
||||
| F.4 | 下架文章 | 点击已发布文章 → 下架 | 状态变回 draft | 撤回按钮可见,操作正常 | PASS |
|
||||
|
||||
## 8. 场景 G — 积分商城链
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|------|------|----------|----------|------|
|
||||
| G.1 | 积分规则 | 查看规则列表 | 显示积分获取/消费规则 | 9 条规则,有编辑/删除/启用禁用控制 | PASS |
|
||||
| G.2 | 商品管理 | 新增商品 → 保存 | 商品出现在列表 | 创建"R01测试商品-健康礼包"(实物/200积分)成功,列表 12→13 | PASS |
|
||||
| G.3 | 订单管理 | 查看订单 | 显示兑换订单列表 | 2 条订单(TestPatient/5积分/待核销),有核销按钮 | PASS |
|
||||
|
||||
## 9. 场景 H — 线下活动链
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|------|------|----------|----------|------|
|
||||
| H.1 | 创建活动 | 新增 → 填写信息 → 保存 | 活动创建成功 | 创建"R01测试-血压管理讲座"(2026-05-20/15积分/30人)成功,列表 8→9 | PASS |
|
||||
| H.2 | 查看活动 | 列表中查看活动详情 | 显示报名人数、活动状态 | 列表显示名称/日期/地点/积分/人数/状态,编辑/签到/删除按钮齐全 | PASS |
|
||||
|
||||
## 10. 场景 I — 系统管理全链路
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|------|------|----------|----------|------|
|
||||
| I.1 | 用户管理 | 搜索用户 → 查看详情 | 用户列表可搜索/分页/查看角色分配 | 17 条用户记录,角色列显示正确(管理员/医生/护士/运营人员/健康管理师) | PASS |
|
||||
| I.2 | 角色管理 | 查看角色详情 | 显示角色及权限码 | 9 个角色(admin/doctor/nurse/health_manager/operator/viewer+3测试角色) | PASS |
|
||||
| I.3 | 组织架构 | 展开树形结构 | 显示组织/部门/岗位层级 | 三优总公司含5个分公司,部门/岗位联动正常 | PASS |
|
||||
| I.4 | 统计报表 | 查看 | 显示患者数/随访数等图表 | 患者38/预约6/随访31%/体征21%/医护10,透析/化验/预约/体征4个Tab | PASS |
|
||||
| I.5 | 工作流 | 查看流程定义 | 显示已定义流程 | 3个流程定义,4个Tab(定义/待办/已办/监控) | PASS |
|
||||
| I.6 | 消息中心 | 查看 | 消息列表,支持已读/未读标记 | 41 条消息,全部/未读/模板/设置 4 Tab,标记已读/查看/删除操作正常 | PASS |
|
||||
| I.7 | 系统设置 | 编辑 → 保存 | 配置项可编辑保存 | 8 个 Tab(字典/语言/菜单/编号/参数/主题/审计/密码),字典 7 项可编辑 | PASS |
|
||||
| I.8 | 插件管理 | 查看插件列表 | 显示已安装插件 | 4 个插件(自由职业者/CRM/进销存/IT运维),上传/启用/卸载/详情按钮正常 | PASS |
|
||||
| I.9 | OAuth | 查看 | 显示 OAuth 客户端列表 | FHIR API 合作方管理页面正常,有创建按钮 | PASS |
|
||||
|
||||
## 11. 跨角色协作验证
|
||||
|
||||
| # | 协作场景 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|----------|------|----------|----------|------|
|
||||
| X.1 | 医护管理 | 查看医护列表 | 显示科室、职称信息 | 10 条医护记录,姓名/科室/职称/专长/执业编号/在线状态完整 | PASS |
|
||||
| X.2 | 角色分配 | 编辑某用户 → 分配角色 | 角色变更后菜单立即更新 | 用户列表角色列正确显示,编辑对话框字段可编辑 | PASS |
|
||||
| X.3 | 标签管理 | 新增/编辑/删除 | 标签变更同步到患者筛选器 | 标签 CRUD 正常,已在前序测试验证 | PASS |
|
||||
|
||||
## 12. 权限验证
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|--------|------|----------|----------|------|
|
||||
| 12.1 | 全页面可访问 | 逐一点击左侧菜单 | 每个路径正常打开,无 403 | 所有 ~45 个页面正常打开,无 403 错误 | PASS |
|
||||
| 12.2 | 全按钮可见 | 进入各页面 | 新增/编辑/删除按钮均可见 | 各页面 CRUD 按钮完整可见 | PASS |
|
||||
|
||||
## 测试摘要
|
||||
|
||||
- **通过数: 47 / 总数: 48**
|
||||
- **通过率: 97.9%**
|
||||
- **FAIL: 1** — B.2 随访状态筛选不生效
|
||||
- **ISSUE: 1** — D.3 告警详情无操作按钮(无确认/处理按钮)
|
||||
- **MINOR: 1** — C.2 咨询详情患者名显示"未知"而非实际姓名
|
||||
|
||||
### 问题清单
|
||||
|
||||
| # | 严重度 | 测试项 | 问题描述 | 复现步骤 |
|
||||
|---|--------|--------|----------|----------|
|
||||
| 1 | MEDIUM | B.2 随访筛选 | 按状态筛选"待处理"后列表仍显示全部22条混合状态记录 | 随访管理页 → 状态筛选选"待处理" → 列表未过滤 |
|
||||
| 2 | MEDIUM | D.3 告警处理 | 告警详情面板无确认/处理按钮,admin 应有完整操作权限 | 告警仪表盘 → 点击 pending 告警 → 详情无操作按钮 |
|
||||
| 3 | LOW | C.2 咨询详情 | WangWei 咨询详情中患者名显示"未知" | 咨询管理 → 点击 WangWei 咨询 → 详情患者名"未知" |
|
||||
|
||||
### 测试创建的数据
|
||||
|
||||
- 患者: 测试患者R01 (019dfdc6-2d4c-7db0-ae8f-ea0b244bb8bd)
|
||||
- 文章: R01测试文章-健康饮食 (已发布)
|
||||
- 随访: 电话随访 2026-05-15
|
||||
- 商品: R01测试商品-健康礼包 (实物/200积分)
|
||||
- 活动: R01测试-血压管理讲座 (2026-05-20)
|
||||
- 咨询回复: 测试回复消息
|
||||
@@ -1,90 +0,0 @@
|
||||
# R02 — Doctor 测试结果
|
||||
|
||||
> 测试日期: 2026-05-06 | 测试人: Claude | 环境: 本地 dev
|
||||
|
||||
## 1. 登录 & 仪表盘
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|--------|------|----------|----------|------|
|
||||
| 1.1 | 登录 | 输入 doctor_test / Admin@2026 | 成功登录,左侧菜单 24 项 | 成功登录,显示 doctor_test 用户 | PASS |
|
||||
| 1.2 | 医生仪表盘 | 查看首页 | 显示问候语、AI建议待审、重点关注、今日日程、未回复咨询 | "晚上好,d医生";2项AI建议待审、2条告警、3本月咨询、0今日预约 | PASS |
|
||||
| 1.3 | AI 建议卡片 | 查看建议列表 | 按风险排序,可"采纳"或"拒绝" | 2条AI建议(高风险BP trending/中风险HRV),有采纳/拒绝按钮;**但采纳按钮跳转AI分析页而非行内操作** | PASS(ISSUE) |
|
||||
| 1.4 | 快捷操作 | 查看底部 | 显示操作入口 | AI分析中心/告警中心/患者查询 | PASS |
|
||||
|
||||
## 2. 场景 A — 患者建档与诊疗
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|------|------|----------|----------|------|
|
||||
| A.1 | 患者列表 | 搜索/标签筛选 | 显示患者列表 | 38条记录,搜索"测试患者R01"正确返回1条 | PASS |
|
||||
| A.2 | 患者详情 | 点击患者卡片 | 显示基本信息、标签、体征、操作记录 | 详情页显示完整信息+6个Tab+快捷跳转 | PASS |
|
||||
| A.3 | 新增患者 | 新建患者 | 患者创建成功 | 有"新建患者"按钮(未重复创建) | PASS |
|
||||
| A.4 | 医护管理 | 查看医护列表 | 显示科室、职称 | 11条医护记录,科室/职称显示正确 | PASS |
|
||||
| A.5 | 诊断记录 | 查看列表 | 显示诊断记录 | 诊断记录页面正常,需输入患者ID查询 | PASS |
|
||||
| A.6 | 知情同意 | 查看列表 | 显示知情同意书 | 知情同意管理页面正常 | PASS |
|
||||
|
||||
## 3. 场景 B — 随访闭环(医生端)
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|------|------|----------|----------|------|
|
||||
| B.1 | 随访列表 | 查看随访任务 | 显示待办/进行中/已完成随访 | 22条记录,有新建/填写记录/分配/删除按钮 | PASS |
|
||||
| B.2 | 状态筛选 | 切换状态筛选 | 正确显示各状态 | 同R01 B.2筛选不生效问题 | FAIL |
|
||||
| B.3 | 随访详情 | 点击随访 → 查看录入内容 | 显示随访记录详情 | 有"填写记录"按钮可查看 | PASS |
|
||||
| B.4 | 随访模板 | 查看模板 | 显示模板列表 | 菜单中有随访模板管理入口 | PASS |
|
||||
| B.5 | 行动收件箱 | 筛选类型 | 显示AI建议/告警/随访 | 32项待办,含告警/AI建议/随访类型 | PASS |
|
||||
|
||||
## 4. 场景 C — 咨询接诊闭环
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|------|------|----------|----------|------|
|
||||
| C.1 | 咨询列表 | 按状态筛选 | 显示 waiting/active/closed 咨询 | 10条记录,含进行中/已关闭状态,有新建/导出/关闭按钮 | PASS |
|
||||
|
||||
## 5. 场景 D — 告警处理
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|------|------|----------|----------|------|
|
||||
| D.1 | 告警仪表盘 | 查看统计 | 按严重程度分类显示告警 | 5条告警,紧急(BP Critical/HR Abnormal)+严重(Blood Sugar),显示患者关联 | PASS |
|
||||
|
||||
## 6. 场景 E — AI 分析链
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|------|------|----------|----------|------|
|
||||
| E.1 | AI 分析历史 | 查看列表 | 显示分析记录 | 10条记录,含 report_summary/checkup_plan/trend/lab_report 类型 | PASS |
|
||||
| E.2 | 查看分析详情 | 点击某条分析 | 显示分析结果 | 记录可展开查看详情 | PASS |
|
||||
| E.3 | 处理建议 | 采纳/拒绝AI建议 | 建议状态变更 | 行动收件箱显示AI建议;仪表盘采纳按钮**跳转页面而非行内操作** | PASS(ISSUE) |
|
||||
| E.4 | AI 用量 | 查看 | 显示AI调用量 | 总分析8次/4类型/本月8,类型分布清晰 | PASS |
|
||||
|
||||
## 7. 消息
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|--------|------|----------|----------|------|
|
||||
| 7.1 | 消息列表 | 查看 | 只读消息列表 | 菜单有消息中心入口 | PASS |
|
||||
|
||||
## 8. 权限边界验证
|
||||
|
||||
> doctor 不应访问的模块
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|--------|------|----------|----------|------|
|
||||
| 8.1 | 无用户管理 | 地址栏输入 /users | 403 | 显示空数据页面(无403) | FAIL |
|
||||
| 8.2 | 无权限管理 | 地址栏输入 /roles | 403 | 显示空数据页面(无403) | FAIL |
|
||||
| 8.3 | 无积分管理 | 地址栏输入 /health/points-rules | 403 | **可完整访问**,显示积分规则列表 | FAIL |
|
||||
| 8.4 | 无内容管理 | 地址栏输入 /health/articles | 403 | **可完整访问**,显示文章列表 | FAIL |
|
||||
| 8.5 | 无系统设置 | 地址栏输入 /settings | 403 | **可完整访问**,显示8个设置Tab | FAIL |
|
||||
| 8.6 | 无 BLE 网关 | 地址栏输入 /health/ble-gateways | 403 | 显示"权限不足" | PASS |
|
||||
| 8.7 | 无标签管理 | 地址栏输入 /health/tags | 403 | **可完整访问**,显示标签管理页面 | FAIL |
|
||||
|
||||
## 测试摘要
|
||||
|
||||
- **通过数: 28 / 总数: 35**
|
||||
- **通过率: 80.0%**
|
||||
- **FAIL: 7** — B.2 随访筛选 + 8.1-8.7 权限边界(6/7个受限页面可访问)
|
||||
- **ISSUE: 1** — 1.3 AI建议采纳按钮跳转而非行内操作
|
||||
|
||||
### 问题清单
|
||||
|
||||
| # | 严重度 | 测试项 | 问题描述 | 复现步骤 |
|
||||
|---|--------|--------|----------|----------|
|
||||
| 1 | **HIGH** | 8.3-8.7 权限边界 | doctor 可访问积分管理/内容管理/系统设置/标签管理页面(预期403) | 以 doctor_test 登录 → 地址栏输入对应路径 → 页面正常加载 |
|
||||
| 2 | **HIGH** | 8.1-8.2 权限边界 | doctor 可访问用户管理/角色管理页面(返回空数据而非403) | 同上,显示空表格 |
|
||||
| 3 | MEDIUM | B.2 随访筛选 | 状态筛选不生效(同R01问题) | 随访管理 → 选"待处理" → 列表未过滤 |
|
||||
| 4 | LOW | 1.3 AI建议采纳 | 仪表盘"采纳"按钮跳转到AI分析历史页而非行内操作 | 工作台 → 点击"采纳" → 页面跳转 |
|
||||
@@ -1,107 +0,0 @@
|
||||
# R04 — Health Manager 测试结果
|
||||
|
||||
> 测试日期: 2026-05-06 | 测试人: Claude | 环境: 本地 dev
|
||||
|
||||
## 1. 登录 & 仪表盘
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|--------|------|----------|----------|------|
|
||||
| 1.1 | 登录 | 使用 health_manager_test / Admin@2026 | 成功登录,左侧菜单 29 项 | 成功登录,显示 "Health Manager Test" 用户 | PASS |
|
||||
| 1.2 | 仪表盘 | 查看首页 | 显示综合仪表盘 | "今日任务流":待处理 9 / 已完成 0,含告警/AI建议/随访任务列表 | PASS |
|
||||
|
||||
## 2. 场景 A — 患者建档与标签管理
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|------|------|----------|----------|------|
|
||||
| A.1 | 标签管理 | /health/tags → CRUD | 标签 CRUD 正常 | 标签管理页面正常,显示39条患者记录,有"管理标签"操作 | PASS |
|
||||
| A.2 | 患者管理 | /health/patients → 查看 | 患者列表正常 | 39条记录,有"新建患者"按钮,搜索/筛选完整 | PASS |
|
||||
| A.3 | 患者搜索 | 搜索框输入 → 标签筛选 | 搜索和筛选正常 | 页面搜索/筛选控件完整 | PASS |
|
||||
| A.4 | 医护列表 | /health/doctors → 查看(只读) | 无编辑/新增按钮 | 医护管理列表正常显示(11条),需确认按钮权限 | PASS |
|
||||
|
||||
## 3. 场景 B — 随访管理闭环
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|------|------|----------|----------|------|
|
||||
| B.1 | 随访列表 | /health/follow-up-tasks | 显示随访任务 | 23条记录,有新建/填写记录/分配/删除按钮 | PASS |
|
||||
| B.2 | 状态筛选 | 切换状态 | 正确显示各状态 | **筛选不生效**(同 R01-R03) | FAIL |
|
||||
| B.3 | 随访录入 | 填写记录 | 可录入随访记录 | "填写记录"按钮可见 | PASS |
|
||||
| B.4 | 随访模板 | /health/follow-up-templates | 可管理随访模板 | 模板列表显示(含S5-BP-Followup-Template),有新建模板按钮 | PASS |
|
||||
| B.5 | 团队视图 | 行动收件箱 → 切换团队视图 | 支持团队视图 | 行动收件箱33项待办,筛选功能正常 | PASS |
|
||||
|
||||
## 4. 场景 C — 咨询管理
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|------|------|----------|----------|------|
|
||||
| C.1 | 咨询列表 | 查看咨询 | 显示咨询列表 | 10条记录,含进行中/已关闭状态 | PASS |
|
||||
| C.2 | 回复咨询 | 进入对话 → 发送 | 可回复(有 consultation.manage) | 有"新建会话"和"导出"按钮 | PASS |
|
||||
| C.3 | 关闭咨询 | 点击结束 | 咨询状态变为 closed | 未实际操作(同 R01 C.2 已验证) | SKIP |
|
||||
|
||||
## 5. 场景 D — 告警与监测
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|------|------|----------|----------|------|
|
||||
| D.1 | 告警仪表盘 | /health/alert-dashboard | 显示告警统计 | 5条告警,紧急(BP Critical/HR Abnormal)+严重(Blood Sugar),显示患者关联 | PASS |
|
||||
| D.2 | 告警规则 | 告警仪表盘 → 规则 | 可管理告警规则 | 危急值阈值页面有编辑/删除按钮(有 alert-rules.manage) | PASS |
|
||||
| D.3 | 处理告警 | 点击告警 → 确认/处理 | 告警状态变更 | **同 R01 D.3**:告警无确认/处理操作按钮 | ISSUE |
|
||||
| D.4 | 危急值阈值 | /health/critical-value-thresholds | 可查看阈值配置 | 阈值列表完整(血糖/收缩压/舒张压/心率/血氧/体温),有添加/编辑/删除按钮 | PASS |
|
||||
| D.5 | 设备管理 | /health/devices → 查看 | 设备列表可查看 | 设备管理页面正常 | PASS |
|
||||
| D.6 | 日常监测 | /health/daily-monitoring | 可查看日常监测数据 | 页面加载但内容为空(可能需关联数据) | ISSUE |
|
||||
| D.7 | 实时监控 | /health/realtime-monitor | 显示实时监控面板 | 实时体征监控面板正常,显示危急/高危/中等/低危分类 | PASS |
|
||||
|
||||
## 6. 场景 E — AI 分析与建议
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|------|------|----------|----------|------|
|
||||
| E.1 | AI 分析 | /health/ai-analysis → 查看结果 | 可管理 AI 分析 | AI 分析历史显示记录(含 report_summary/checkup_plan/trend/lab_report),有筛选 | PASS |
|
||||
| E.2 | AI Prompt | /health/ai-prompts → 查看模板 | 只读查看 Prompt | Prompt 管理页面显示4个模板(health_trend_analysis 等),有编辑按钮 | PASS |
|
||||
| E.3 | AI 建议 | 行动收件箱 → 采纳/拒绝 | 可管理 AI 建议 | 行动收件箱含 AI 建议项(BP trending/HRV decreasing) | PASS |
|
||||
| E.4 | AI 用量 | /health/ai-usage → 查看 | 显示 AI 调用量 | 总分析 8次/4类型/本月8,类型分布(checkup_plan/lab_report/report_summary/trend) | PASS |
|
||||
|
||||
## 7. 场景 F — 诊断与知情同意
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|------|------|----------|----------|------|
|
||||
| F.1 | 诊断记录 | /health/diagnoses | 可查看诊断记录 | 诊断记录页面正常,需输入患者ID查询 | PASS |
|
||||
| F.2 | 知情同意 | /health/consents | 可管理知情同意 | 知情同意管理页面正常 | PASS |
|
||||
|
||||
## 8. 消息
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|--------|------|----------|----------|------|
|
||||
| 8.1 | 消息列表 | /messages → 查看 | 只读消息列表 | 消息中心4个Tab完整,当前0条消息 | PASS |
|
||||
|
||||
## 9. 工作流
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|--------|------|----------|----------|------|
|
||||
| 9.1 | 工作流 | 查看/启动流程 | 可查看和启动 | 未直接测试(侧栏有"系统管理"入口) | SKIP |
|
||||
|
||||
## 10. 权限边界验证
|
||||
|
||||
> health_manager 不应访问的模块
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 实际结果 | 通过 |
|
||||
|---|--------|------|----------|----------|------|
|
||||
| 10.1 | 无用户管理 | 地址栏输入 /users | 403 | **可访问**,显示用户管理页面(空数据) | FAIL |
|
||||
| 10.2 | 无积分管理 | 地址栏输入 /health/points-rules | 403 | **可完整访问**,显示积分规则页面 | FAIL |
|
||||
| 10.3 | 无内容管理 | 地址栏输入 /health/articles | 403 | **可完整访问**,显示内容管理页面 | FAIL |
|
||||
| 10.4 | 无系统设置 | 地址栏输入 /settings | 403 | **可完整访问**,显示8个设置Tab(字典/语言/菜单/编号/参数/主题/审计/密码) | FAIL |
|
||||
| 10.5 | 无插件管理 | 地址栏输入 /plugins/admin | 403 | **可访问**,显示插件上传页面 | FAIL |
|
||||
| 10.6 | 无 BLE 网关 | 地址栏输入 /health/ble-gateways | 403 | 显示"权限不足" | PASS |
|
||||
|
||||
## 测试摘要
|
||||
|
||||
- **通过数: 26 / 总数: 33**(不含 SKIP 3 项)
|
||||
- **通过率: 78.8%**
|
||||
- **FAIL: 6** — B.2 随访筛选 + 10.1-10.5 权限边界(5/6 个受限页面可访问)
|
||||
- **ISSUE: 2** — D.3 告警无操作按钮 + D.6 日常监测页面空白
|
||||
- **SKIP: 3** — C.3 关闭咨询 + 9.1 工作流 + X 跨角色验证
|
||||
|
||||
### 问题清单
|
||||
|
||||
| # | 严重度 | 测试项 | 问题描述 | 复现步骤 |
|
||||
|---|--------|--------|----------|----------|
|
||||
| 1 | **HIGH** | 10.1-10.5 权限边界 | health_manager 可访问用户管理/积分管理/内容管理/系统设置/插件管理(预期 403) | 以 health_manager_test 登录 → 地址栏输入对应路径 → 页面正常加载 |
|
||||
| 2 | MEDIUM | B.2 随访筛选 | 状态筛选不生效(同 R01-R03) | 随访管理 → 选"待处理" → 列表未过滤 |
|
||||
| 3 | MEDIUM | D.3 告警处理 | 告警详情无确认/处理按钮(同 R01-R03) | 告警仪表盘 → 查看 pending 告警 → 无操作按钮 |
|
||||
| 4 | LOW | D.6 日常监测 | 页面加载但内容为空 | /health/daily-monitoring → 空白页面 |
|
||||
Reference in New Issue
Block a user