chore: 清理 .gitignore + 添加 wiki/permissions.md
1. .gitignore: 补充临时调试文件(_*.txt/server_*.txt/tmp_*.txt 等)、 graphify-out/、apps/mp-native/ 的忽略规则 2. wiki/permissions.md: 角色权限体系文档
This commit is contained in:
22
.gitignore
vendored
22
.gitignore
vendored
@@ -82,6 +82,28 @@ tmp/
|
||||
screenshots/
|
||||
server-log.txt
|
||||
snapshot_*.txt
|
||||
_*.txt
|
||||
_server_*.txt
|
||||
tmp_*.txt
|
||||
direct_*.txt
|
||||
server_*.txt
|
||||
server_combined.txt
|
||||
out.txt
|
||||
_wx_login.json
|
||||
.claude/settings.json
|
||||
|
||||
# Trace/debug JSON
|
||||
trace-*.json
|
||||
|
||||
# Graphify knowledge graph (regenerated locally)
|
||||
graphify-out/
|
||||
|
||||
# Native miniprogram (separate project)
|
||||
apps/mp-native/
|
||||
|
||||
# Misc untracked
|
||||
err.txt
|
||||
uploads/g:/hms/.superpowers/
|
||||
.claude/skills/design-handoff/node_modules/
|
||||
.design/config.yml
|
||||
.superpowers/
|
||||
|
||||
416
wiki/permissions.md
Normal file
416
wiki/permissions.md
Normal file
@@ -0,0 +1,416 @@
|
||||
---
|
||||
title: 角色权限体系
|
||||
updated: 2026-05-22
|
||||
status: active
|
||||
tags: [permissions, roles, rbac, frontend, miniprogram]
|
||||
---
|
||||
|
||||
> 2026-05-22 更新:补齐 patient 角色小程序端 manage 权限(15 项),注册 `system.analytics.submit` 幽灵权限,新增 §6.4 医生端小程序权限矩阵。
|
||||
|
||||
# 角色权限体系
|
||||
|
||||
> 从 [[index]] 导航。关联: [[architecture]] [[erp-health]] [[frontend]] [[miniprogram]]
|
||||
|
||||
## 1. 概述
|
||||
|
||||
HMS 采用 **RBAC(基于角色的访问控制)** 模型,包含 7 个系统角色,约 141+ 权限码覆盖 auth / config / workflow / message / plugin / health / ai / copilot / dialysis / system 十大模块。
|
||||
|
||||
权限执行层分两端:
|
||||
- **Web 管理后台**:权限码守卫(`routeConfig.ts` 声明 `permissions: [...]`),后端 handler 层 `require_permission` 强制校验
|
||||
- **微信小程序**:角色码守卫(`isMedicalStaff()` / `isDoctor()` / `isNurse()` / `isHealthManager()`),患者端按角色分流
|
||||
|
||||
### 数据范围(data_scope)
|
||||
|
||||
| 角色 | data_scope | 说明 |
|
||||
|------|-----------|------|
|
||||
| admin | `all` | 全部数据 |
|
||||
| viewer | `all` | 全部数据(只读) |
|
||||
| doctor | `all` | 全部患者数据 |
|
||||
| nurse | `all` | 全部患者数据 |
|
||||
| health_manager | `all` | 全部患者数据 |
|
||||
| operator | `all` | 全部数据 |
|
||||
| patient | `self` | 仅本人数据 |
|
||||
|
||||
---
|
||||
|
||||
## 2. 角色定义
|
||||
|
||||
| 角色码 | 名称 | 定位 | 典型用户 |
|
||||
|--------|------|------|----------|
|
||||
| `admin` | 系统管理员 | 全部权限,系统配置与用户管理 | IT 管理员 |
|
||||
| `viewer` | 查看者 | 只读权限,查看基础数据 | 上级领导、审计 |
|
||||
| `doctor` | 医生 | 患者诊疗、诊断、随访、咨询、透析 | 临床医生 |
|
||||
| `nurse` | 护士 | 患者护理、日常监测、体征录入、设备 | 临床护士 |
|
||||
| `health_manager` | 健康管理师 | 全流程健康管理、告警规则、AI 分析 | 健康管理师 |
|
||||
| `operator` | 运营人员 | 内容管理、积分、媒体、轮播图 | 运营/编辑 |
|
||||
| `patient` | 患者 | 小程序自助服务(仅本人数据) | 患者端用户 |
|
||||
|
||||
---
|
||||
|
||||
## 3. 权限码总表
|
||||
|
||||
### 3.1 基础模块(auth / config / workflow / message / plugin)
|
||||
|
||||
| 模块 | 权限码 | 说明 |
|
||||
|------|--------|------|
|
||||
| **用户管理** | `user.list` `user.create` `user.read` `user.update` `user.delete` | 用户 CRUD |
|
||||
| **角色管理** | `role.list` `role.create` `role.read` `role.update` `role.delete` | 角色 CRUD |
|
||||
| **权限管理** | `permission.list` | 权限列表(只读) |
|
||||
| **组织管理** | `organization.list` `organization.create` `organization.update` `organization.delete` | 组织架构 |
|
||||
| **部门管理** | `department.list` `department.create` `department.update` `department.delete` | 部门 CRUD |
|
||||
| **岗位管理** | `position.list` `position.create` `position.update` `position.delete` | 岗位 CRUD |
|
||||
| **字典管理** | `dictionary.list` `dictionary.create` `dictionary.update` `dictionary.delete` | 数据字典 |
|
||||
| **菜单管理** | `menu.list` `menu.update` | 菜单配置 |
|
||||
| **系统设置** | `setting.read` `setting.update` `setting.delete` | 系统参数 |
|
||||
| **编号规则** | `numbering.list` `numbering.create` `numbering.update` `numbering.delete` `numbering.generate` | 编号序列 |
|
||||
| **主题** | `theme.read` `theme.update` | UI 主题 |
|
||||
| **语言** | `language.list` `language.update` | 国际化 |
|
||||
| **工作流** | `workflow.create` `workflow.list` `workflow.read` `workflow.update` `workflow.publish` `workflow.start` `workflow.approve` `workflow.delegate` | BPMN 流程 |
|
||||
| **消息** | `message.list` `message.send` `message.template.list` `message.template.create` `message.template.manage` | 消息通知 |
|
||||
| **插件** | `plugin.admin` `plugin.list` | WASM 插件管理 |
|
||||
| **租户** | `tenant.manage` | 多租户管理 |
|
||||
|
||||
### 3.2 健康模块(health)
|
||||
|
||||
| 子域 | 权限码 | 说明 |
|
||||
|------|--------|------|
|
||||
| **患者** | `health.patient.list` `health.patient.manage` | 患者档案 |
|
||||
| **健康数据** | `health.health-data.list` `health.health-data.manage` | 体征/化验 |
|
||||
| **预约** | `health.appointment.list` `health.appointment.manage` | 预约排班 |
|
||||
| **随访** | `health.follow-up.list` `health.follow-up.manage` | 随访任务 |
|
||||
| **咨询** | `health.consultation.list` `health.consultation.manage` | 在线咨询 |
|
||||
| **医生** | `health.doctor.list` `health.doctor.manage` | 医生管理 |
|
||||
| **诊断** | `health.diagnosis.list` `health.diagnosis.manage` | 诊断记录 |
|
||||
| **日常监测** | `health.daily-monitoring.list` `health.daily-monitoring.manage` | 每日监测 |
|
||||
| **告警** | `health.alerts.list` `health.alerts.manage` | 告警列表 |
|
||||
| **告警规则** | `health.alert-rules.list` `health.alert-rules.manage` | 告警规则配置 |
|
||||
| **危急值** | `health.critical-alerts.list` `health.critical-alerts.manage` | 危急值告警 |
|
||||
| **危急值阈值** | `health.critical-value-thresholds.list` `health.critical-value-thresholds.manage` | 阈值设置 |
|
||||
| **随访模板** | `health.follow-up-templates.list` `health.follow-up-templates.manage` | 模板管理 |
|
||||
| **知情同意** | `health.consent.list` `health.consent.manage` | 同意管理 |
|
||||
| **用药记录** | `health.medication-records.list` `health.medication-records.manage` | 用药记录 |
|
||||
| **用药提醒** | `health.medication-reminders.list` `health.medication-reminders.manage` | 提醒设置 |
|
||||
| **行动收件箱** | `health.action-inbox.list` `health.action-inbox.manage` `health.action-inbox.team` | 待办任务 |
|
||||
| **仪表盘** | `health.dashboard.manage` | 统计仪表盘 |
|
||||
| **OAuth** | `health.oauth.list` `health.oauth.manage` | 第三方授权 |
|
||||
| **关怀计划** | `health.care-plan.list` `health.care-plan.manage` | 关怀计划 |
|
||||
| **排班** | `health.shifts.list` `health.shifts.manage` | 医护排班 |
|
||||
| **BLE 网关** | `health.ble-gateways.list` `health.ble-gateways.manage` | 蓝牙网关 |
|
||||
| **家庭代理** | `health.family-proxy.list` `health.family-proxy.manage` | 家属代管 |
|
||||
| **媒体库** | `health.media.list` `health.media.manage` | 媒体文件 |
|
||||
| **轮播图** | `health.banners.list` `health.banners.manage` | 首页轮播 |
|
||||
| **标签** | `health.tags.list` `health.tags.manage` | 患者标签 |
|
||||
| **设备** | `health.devices.list` `health.devices.manage` | 设备管理 |
|
||||
| **设备读数** | `health.device-readings.list` `health.device-readings.manage` | 设备数据 |
|
||||
| **透析** | `health.dialysis.list` `health.dialysis.manage` | 透析记录 |
|
||||
| **透析处方** | `health.dialysis-prescription.list` `health.dialysis-prescription.manage` | 透析处方 |
|
||||
| **透析统计** | `health.dialysis.stats` | 透析统计 |
|
||||
| **线下活动** | `health.offline-events.list` `health.offline-events.manage` | 线下活动 |
|
||||
| **文章** | `health.articles.list` `health.articles.manage` `health.articles.review` | 内容管理 |
|
||||
| **积分** | `health.points.list` `health.points.manage` | 积分商城 |
|
||||
| **统计** | `health.stats.list` | 健康统计 |
|
||||
|
||||
### 3.3 AI 模块(ai)
|
||||
|
||||
| 权限码 | 说明 |
|
||||
|--------|------|
|
||||
| `ai.analysis.list` `ai.analysis.manage` | AI 分析 |
|
||||
| `ai.prompt.list` `ai.prompt.manage` | 提示词管理 |
|
||||
| `ai.provider.manage` | AI Provider 配置 |
|
||||
| `ai.suggestion.list` `ai.suggestion.manage` | AI 建议 |
|
||||
| `ai.usage.list` | AI 用量统计 |
|
||||
| `ai.chat.send` | AI 对话 |
|
||||
| `ai.config.read` `ai.config.manage` | AI 配置 |
|
||||
| `ai.knowledge.list` `ai.knowledge.manage` | 知识库 |
|
||||
| `ai.admin.dashboard` `ai.admin.flags` | AI 管理后台 |
|
||||
|
||||
### 3.4 Copilot 模块
|
||||
|
||||
| 权限码 | 说明 |
|
||||
|--------|------|
|
||||
| `copilot.insights.list` `copilot.insights.manage` | Copilot 洞察 |
|
||||
| `copilot.risk.view` | 风险查看 |
|
||||
| `copilot.rules.list` `copilot.rules.manage` | Copilot 规则 |
|
||||
|
||||
### 3.5 透析模块(dialysis)
|
||||
|
||||
| 权限码 | 说明 |
|
||||
|--------|------|
|
||||
| `health.dialysis.list` `health.dialysis.manage` | 透析管理 |
|
||||
| `health.dialysis-prescription.list` `health.dialysis-prescription.manage` | 透析处方 |
|
||||
| `health.dialysis.stats` | 透析统计 |
|
||||
|
||||
---
|
||||
|
||||
## 4. 各角色权限矩阵
|
||||
|
||||
> `+` = 拥有,`-` = 不拥有。admin 拥有全部权限,不再逐一列出。
|
||||
|
||||
### 4.1 医生(doctor)
|
||||
|
||||
| 子域 | list | manage | 特殊 |
|
||||
|------|:----:|:------:|------|
|
||||
| 患者 | + | + | |
|
||||
| 健康数据 | + | - | 仅查看 |
|
||||
| 预约 | + | + | |
|
||||
| 随访 | + | + | |
|
||||
| 咨询 | + | + | |
|
||||
| 医生 | + | + | |
|
||||
| 诊断 | + | + | |
|
||||
| 日常监测 | + | + | |
|
||||
| 告警 | + | + | |
|
||||
| 告警规则 | + | - | 仅查看 |
|
||||
| 危急值 | + | - | 仅查看 |
|
||||
| 知情同意 | + | + | |
|
||||
| 随访模板 | + | + | |
|
||||
| 行动收件箱 | + | + | |
|
||||
| 关怀计划 | + | + | |
|
||||
| 透析 | + | + | |
|
||||
| 透析处方 | + | + | |
|
||||
| 透析统计 | + | | |
|
||||
| AI 分析 | + | - | 仅查看 |
|
||||
| AI 建议 | + | - | 仅查看 |
|
||||
| AI 提示词 | + | - | 仅查看 |
|
||||
| AI 用量 | + | - | 仅查看 |
|
||||
| 消息 | + | | |
|
||||
| 工作流 | + | | `list` + `read` |
|
||||
|
||||
**无权访问:** 文章管理、积分、标签、媒体库、轮播图、AI 管理、设备管理、线下活动、copilot
|
||||
|
||||
### 4.2 护士(nurse)
|
||||
|
||||
| 子域 | list | manage | 特殊 |
|
||||
|------|:----:|:------:|------|
|
||||
| 患者 | + | + | |
|
||||
| 健康数据 | + | - | 仅查看 |
|
||||
| 预约 | + | + | |
|
||||
| 随访 | + | + | |
|
||||
| 咨询 | + | - | 仅查看 |
|
||||
| 诊断 | + | - | 仅查看 |
|
||||
| 日常监测 | + | + | |
|
||||
| 告警 | + | - | 仅查看 |
|
||||
| 危急值 | + | - | 仅查看 |
|
||||
| 知情同意 | + | + | |
|
||||
| 设备 | + | - | 仅查看 |
|
||||
| 设备读数 | + | - | 仅查看 |
|
||||
| 行动收件箱 | + | + | |
|
||||
| 消息 | + | | |
|
||||
|
||||
**无权访问:** 医生管理、告警管理(manage)、告警规则、AI、文章、积分、标签、媒体库、轮播图、透析、copilot
|
||||
|
||||
### 4.3 健康管理师(health_manager)
|
||||
|
||||
| 子域 | list | manage | 特殊 |
|
||||
|------|:----:|:------:|------|
|
||||
| 患者 | + | + | |
|
||||
| 健康数据 | + | + | |
|
||||
| 医生 | + | - | 仅查看 |
|
||||
| 随访 | + | + | |
|
||||
| 咨询 | + | + | |
|
||||
| 诊断 | + | + | |
|
||||
| 日常监测 | + | + | |
|
||||
| 告警 | + | + | |
|
||||
| 告警规则 | + | + | |
|
||||
| 危急值 | + | - | 仅查看 |
|
||||
| 危急值阈值 | + | - | 仅查看 |
|
||||
| 知情同意 | + | + | |
|
||||
| 随访模板 | + | + | |
|
||||
| 标签 | + | + | |
|
||||
| 设备 | + | - | 仅查看 |
|
||||
| 行动收件箱 | + | + | `team` 额外权限 |
|
||||
| 仪表盘 | + | | `dashboard.manage` |
|
||||
| AI 分析 | + | + | |
|
||||
| AI 建议 | + | + | |
|
||||
| AI 提示词 | + | - | 仅查看 |
|
||||
| AI 用量 | + | - | 仅查看 |
|
||||
| 消息 | + | | |
|
||||
| 工作流 | + | | `list` + `read` + `start` |
|
||||
|
||||
**无权访问:** 预约、透析、文章、积分、媒体库、轮播图、线下活动、copilot、OAuth、关怀计划、排班
|
||||
|
||||
### 4.4 运营人员(operator)
|
||||
|
||||
| 子域 | list | manage | 特殊 |
|
||||
|------|:----:|:------:|------|
|
||||
| 患者 | + | - | 仅查看 |
|
||||
| 标签 | + | + | |
|
||||
| 文章 | + | + | `review` 额外权限 |
|
||||
| 积分 | + | + | |
|
||||
| 设备 | + | - | 仅查看 |
|
||||
| 告警 | + | - | 仅查看 |
|
||||
| 媒体库 | + | + | |
|
||||
| 轮播图 | + | + | |
|
||||
| 仪表盘 | + | | `dashboard.manage` |
|
||||
| AI 用量 | + | - | 仅查看 |
|
||||
| 消息 | + | | |
|
||||
|
||||
**无权访问:** 健康数据、预约、随访、咨询、诊断、日常监测、告警规则、危急值、知情同意、AI 分析、透析、copilot
|
||||
|
||||
### 4.5 患者(patient)
|
||||
|
||||
> data_scope = `self`,所有操作仅限本人数据。通过小程序访问(`m20260522_000162` 完成全量配置)。
|
||||
|
||||
| 子域 | list | manage | 说明 |
|
||||
|------|:----:|:------:|------|
|
||||
| 健康数据 | + | + | 录入体征、查看本人体征/化验 |
|
||||
| 患者 | + | + | 查看/更新本人档案、绑定手机 |
|
||||
| 预约 | + | + | 创建/取消本人预约 |
|
||||
| 医生 | + | - | 预约时选择医生 |
|
||||
| 随访 | + | + | 提交随访记录 |
|
||||
| 咨询 | + | + | 创建咨询会话、发送消息 |
|
||||
| 积分 | + | + | 签到、兑换商品 |
|
||||
| 文章 | + | - | 阅读公开文章 |
|
||||
| 告警 | + | - | 查看本人告警 |
|
||||
| 日常监测 | + | + | 创建日常监测记录 |
|
||||
| 设备读数 | + | + | 上传设备数据 |
|
||||
| 设备 | + | - | 查看绑定设备 |
|
||||
| 知情同意 | + | + | 授权/撤回本人同意 |
|
||||
| 用药记录 | + | - | 查看本人用药 |
|
||||
| 用药提醒 | + | + | CRUD 本人提醒 |
|
||||
| 关怀计划 | + | - | 查看本人计划 |
|
||||
| 行动收件箱 | + | - | 查看本人待办 |
|
||||
| 透析 | + | - | 查看本人透析 |
|
||||
| AI 分析 | + | - | 查看本人分析报告 |
|
||||
| AI 建议 | + | - | 查看分析建议 |
|
||||
| AI 对话 | + | - | `ai.chat.send` + 会话 list/manage |
|
||||
| 消息 | + | - | 查看本人消息 |
|
||||
| 埋点 | - | - | `system.analytics.submit`(data_scope=self) |
|
||||
|
||||
### 4.6 查看者(viewer)
|
||||
|
||||
基础模块只读权限(auth / config / workflow / message / plugin 的 `list`/`read`)。无 health / AI / copilot 权限。
|
||||
|
||||
---
|
||||
|
||||
## 5. Web 前端路由权限
|
||||
|
||||
Web 管理后台通过 `routeConfig.ts` 声明每个路由所需权限码。用户登录后,路由守卫检查其角色是否拥有对应权限。
|
||||
|
||||
### 5.1 各角色可见菜单
|
||||
|
||||
#### admin
|
||||
全部菜单可见。
|
||||
|
||||
#### doctor
|
||||
首页、统计仪表盘、患者管理、日常监测、诊断记录、知情同意、咨询管理、随访任务、随访模板、行动收件箱、告警仪表盘、告警管理、AI 分析、AI 用量、AI 对话、消息
|
||||
|
||||
#### nurse
|
||||
首页、统计仪表盘、患者管理、日常监测、诊断记录、知情同意、咨询管理、随访任务、行动收件箱、告警仪表盘、告警管理、消息
|
||||
|
||||
#### health_manager
|
||||
首页、统计仪表盘、患者管理、日常监测、诊断记录、知情同意、咨询管理、标签管理、医生管理、随访任务、随访模板、行动收件箱、实时监测、告警仪表盘、告警管理、告警规则、设备管理、危急值阈值、AI 提示词、AI 分析、AI 知识库、AI 用量、AI 配置、AI 对话、消息
|
||||
|
||||
#### operator
|
||||
首页、统计仪表盘、患者管理(只读)、标签管理、设备管理、告警仪表盘、告警管理(只读)、文章管理、积分规则、积分商品、积分订单、线下活动、媒体库、轮播图、AI 用量、消息
|
||||
|
||||
---
|
||||
|
||||
## 6. 小程序角色控制
|
||||
|
||||
小程序端采用**角色码**(非权限码)做前端控制,后端仍通过权限码校验 API 请求。
|
||||
|
||||
### 6.1 角色判断函数
|
||||
|
||||
```typescript
|
||||
// stores/auth.ts
|
||||
isMedicalStaff() → roles 含 doctor / nurse / admin / health_manager
|
||||
isDoctor() → roles 含 doctor / admin
|
||||
isNurse() → roles 含 nurse / admin
|
||||
isHealthManager() → roles 含 health_manager / admin
|
||||
hasRole(code) → roles 含 code / admin
|
||||
```
|
||||
|
||||
### 6.2 角色与小程序页面映射
|
||||
|
||||
| 角色 | 可访问页面 |
|
||||
|------|-----------|
|
||||
| **patient** | 首页、健康、咨询、商城、我的(5 TabBar)+ 分包页面(预约、随访、告警、积分、文章、设备、AI 对话) |
|
||||
| **doctor / admin** | 首页 → 自动跳转医生端分包(`pkg-doctor-core`)+ 患者管理、咨询、随访、行动收件箱 |
|
||||
| **nurse** | 同 doctor,但部分管理功能降级为只读 |
|
||||
| **health_manager** | 同 doctor,额外可管理告警规则、AI 分析 |
|
||||
|
||||
### 6.3 患者端(patient)API 权限
|
||||
|
||||
患者通过小程序访问以下 API(均需 `patient` 角色且 `data_scope=self`)。完整权限配置见迁移 `m20260522_000162`。
|
||||
|
||||
| 小程序页面 | API 路径 | 所需权限码 | 操作类型 |
|
||||
|-----------|----------|-----------|---------|
|
||||
| 健康总览 | `GET /health/health-data/summary` | `health.health-data.list` | 只读 |
|
||||
| 体征录入 | `POST /health/health-data` | `health.health-data.manage` | 写入 |
|
||||
| 健康趋势 | `GET /health/health-data/trend` | `health.health-data.list` | 只读 |
|
||||
| 我的报告 | `GET /health/patients/{id}/lab-reports` | `health.health-data.list` | 只读 |
|
||||
| AI 解读 | `GET /ai/analyses` | `ai.analysis.list` | 只读 |
|
||||
| 健康档案 | `GET /health/health-records` | `health.health-data.list` | 只读 |
|
||||
| 诊断记录 | `GET /health/diagnoses` | `health.health-data.list` | 只读 |
|
||||
| 我的预约 | `GET /health/appointments` | `health.appointment.list` | 只读 |
|
||||
| 创建预约 | `POST /health/appointments` | `health.appointment.manage` | 写入 |
|
||||
| 医生列表 | `GET /health/doctors` | `health.doctor.list` | 只读 |
|
||||
| 我的随访 | `GET /health/follow-up-tasks` | `health.follow-up.list` | 只读 |
|
||||
| 提交随访 | `POST /health/follow-up-records` | `health.follow-up.manage` | 写入 |
|
||||
| 在线咨询 | `POST /health/consultation-sessions` | `health.consultation.manage` | 写入 |
|
||||
| 咨询消息 | `GET/POST /health/consultation-sessions/{id}/messages` | `health.consultation.list` + `manage` | 读写 |
|
||||
| 告警列表 | `GET /health/alerts` | `health.alerts.list` | 只读 |
|
||||
| 行动收件箱 | `GET /health/action-inbox` | `health.action-inbox.list` | 只读 |
|
||||
| 设备同步 | `POST /health/device-readings` | `health.device-readings.manage` | 写入 |
|
||||
| 药物提醒 | `GET/POST/PUT/DELETE /health/medication-reminders` | `health.medication-reminders.list` + `manage` | 读写 |
|
||||
| 知情同意 | `POST/PUT /health/consents` | `health.consent.list` + `manage` | 读写 |
|
||||
| 积分账户 | `GET /health/points/account` | `health.points.list` | 只读 |
|
||||
| 积分签到 | `POST /health/points/checkin` | `health.points.manage` | 写入 |
|
||||
| 积分兑换 | `POST /health/points/redeem` | `health.points.manage` | 写入 |
|
||||
| 文章列表 | `GET /health/articles` | `health.articles.list` | 只读 |
|
||||
| 消息通知 | `GET /messages` | `message.list` | 只读 |
|
||||
| AI 对话 | `POST /ai/chat/send` | `ai.chat.send` | 写入 |
|
||||
| AI 会话 | `GET/POST /ai/chat/sessions` | `ai.chat.session.list` + `manage` | 读写 |
|
||||
| 埋点上报 | `POST /analytics/batch` | `system.analytics.submit` | 写入 |
|
||||
| 就诊人管理 | `GET/PUT /health/patients/{id}` | `health.patient.list` + `manage` | 读写 |
|
||||
| 日常监测 | `GET/POST /health/daily-monitoring` | `health.daily-monitoring.list` + `manage` | 读写 |
|
||||
|
||||
### 6.4 医生端小程序权限
|
||||
|
||||
医生/护士通过小程序医生端分包(`pkg-doctor-core`)访问以下 API。权限码与 Web 管理后台一致。
|
||||
|
||||
| 小程序页面 | API 路径 | 所需权限码 | 角色要求 |
|
||||
|-----------|----------|-----------|---------|
|
||||
| 医生首页 | `GET /health/doctor/dashboard` | `health.dashboard.manage` | doctor/nurse/hm |
|
||||
| 患者管理 | `GET /health/patients` | `health.patient.list` | doctor/nurse/hm |
|
||||
| 患者详情 | `GET /health/patients/{id}/health-summary` | `health.patient.list` | doctor/nurse/hm |
|
||||
| 咨询列表 | `GET /health/consultation-sessions` | `health.consultation.list` | doctor/nurse/hm |
|
||||
| 咨询回复 | `POST /health/consultation-sessions/{id}/messages` | `health.consultation.manage` | doctor/hm |
|
||||
| 随访管理 | `GET/PUT /health/follow-up-tasks` | `health.follow-up.list` + `manage` | doctor/nurse/hm |
|
||||
| 告警处理 | `POST /health/alerts/{id}/acknowledge` | `health.alerts.manage` | doctor/hm |
|
||||
| 行动收件箱 | `GET /health/action-inbox` | `health.action-inbox.list` | doctor/nurse/hm |
|
||||
| 团队概览 | `GET /health/action-inbox/team` | `health.action-inbox.team` | hm |
|
||||
| 化验报告 | `GET /health/patients/{id}/lab-reports` | `health.health-data.list` | doctor/nurse/hm |
|
||||
| 透析管理 | `GET/POST /health/dialysis-records` | `health.dialysis.list` + `manage` | doctor |
|
||||
| 透析处方 | `GET/POST /health/dialysis-prescriptions` | `health.dialysis-prescription.list` + `manage` | doctor |
|
||||
|
||||
---
|
||||
|
||||
## 7. 权限配置维护
|
||||
|
||||
### 7.1 新增权限码流程
|
||||
|
||||
1. 在对应模块 `module.rs` 的 `PermissionDescriptor` 中声明权限码
|
||||
2. 创建迁移文件 seed 权限到 `permissions` 表
|
||||
3. 迁移中为需要该权限的角色添加 `role_permissions` 记录
|
||||
4. 前端路由声明对应 `permissions` 数组
|
||||
5. 更新本文档
|
||||
|
||||
### 7.2 关键迁移文件
|
||||
|
||||
| 迁移 | 说明 |
|
||||
|------|------|
|
||||
| `seed.rs` | 基础权限(auth/config/workflow/message/plugin) |
|
||||
| `m20260506_000125` | 创建 doctor/nurse/health_manager/operator 角色及初始权限 |
|
||||
| `m20260508_000131` | 权威修复:重新分配 doctor/nurse/operator 权限 |
|
||||
| `m20260510_000133` | 创建 patient 角色(data_scope=self,18 个 .list 权限) |
|
||||
| `m20260510_000137` | 媒体库/轮播图权限 + operator 补充 |
|
||||
| `m20260516_000147` | AI 对话权限(patient + admin) |
|
||||
| `m20260518_000149` | admin 全量权限修复 |
|
||||
| `m20260521_000164` | 菜单体系重组 |
|
||||
| `m20260522_000161` | patient 积分 manage 权限 |
|
||||
| `m20260522_000162` | patient 全量小程序权限(15 manage + 1 list + system.analytics.submit 注册) |
|
||||
|
||||
### 7.3 权限同步机制
|
||||
|
||||
系统启动时自动同步:模块通过 `ErpModule` trait 注册 `PermissionDescriptor`,`sync_module_permissions()` 将新权限码插入 `permissions` 表,admin 角色自动获得所有新权限。
|
||||
Reference in New Issue
Block a user