You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

305 lines
16 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 系统配置
> 模块编码system
> 端侧Web专属
> 关联文档01-模块划分 §3.9 / 02-功能清单-物业公司 §9 / 03-业务流转逻辑-物业公司 §9 / 05-接口规范 §9.2 / 06-项目技术要求 §4.4
## 功能概览
| 项目 | 说明 |
|------|------|
| 菜单名称 | 系统配置 |
| 子菜单 | 蓝牙设备管理、字典管理、微信配置、消息模板、数据补录审核 |
| 功能编号 | PR-S-01 ~ PR-S-05 |
| 权限编码前缀 | device:beacon:* / system:dict:* / system:wechat:* / system:template:* / system:bluetooth-policy:* |
---
## 页面1蓝牙设备管理页
**页面编号**PR-S-01-P01
**端侧归属**Web专属
**页面路径**/system/beacons
### 界面布局
```
┌──────────────────────────────────────────────────────────────────┐
│ [面包屑] 系统配置 > 蓝牙设备管理 │
├──────────────────────────────────────────────────────────────────┤
│ [查询条件区] │
│ Beacon名称[____] 状态[▼] 绑定位置[____] [查询] [重置] │
├──────────────────────────────────────────────────────────────────┤
│ [操作栏] [新增Beacon] │
├──────────────────────────────────────────────────────────────────┤
│ [列表区] │
│ 序号| 名称 | UUID | 绑定位置 | 状态 | 电量 | 最后心跳 │
│ 1 | B-001 | xxxx-xxxx... | 门诊1层 | 在线 | 85% | 10:30 │
│ 2 | B-002 | xxxx-xxxx... | 住院1层 | 离线 | 12% | 08:15 │
├──────────────────────────────────────────────────────────────────┤
│ [分页] 共30条 每页[20▼] < 1 2 > │
└──────────────────────────────────────────────────────────────────┘
```
### 查询条件
| 字段名 | 控件类型 | 必填 | 默认值 | 说明 |
|--------|----------|------|--------|------|
| Beacon名称 | 文本输入 | 否 | — | 模糊匹配 |
| 状态 | 下拉单选 | 否 | 全部 | 在线/离线 |
| 绑定位置 | 文本输入 | 否 | — | 模糊匹配 |
### 列表字段
| 序号 | 字段名 | 列宽 | 支持排序 | 说明 |
|------|--------|------|----------|------|
| 1 | 名称 | 100px | 否 | — |
| 2 | UUID | 180px | 否 | — |
| 3 | 绑定位置 | 150px | 否 | 巡检点位/保洁区域/打卡点 |
| 4 | 绑定模块 | 80px | 否 | 巡检/保洁/考勤 |
| 5 | 状态 | 80px | 是 | 在线(绿)/离线(红) |
| 6 | 电量 | 70px | 是 | <20%=红色低电量 |
| 7 | 最后心跳时间 | 140px | | 超过15分钟=离线 |
| 8 | 操作 | 120px | | 编辑/解绑/删除 |
### 操作按钮
| 按钮 | 权限编码 | 位置 | 显示条件 | 说明 |
|------|----------|------|----------|------|
| 新增Beacon | device:beacon:create | 操作栏 | 始终 | |
| 编辑 | device:beacon:update | 行操作 | 始终 | |
| 解绑 | device:beacon:update | 行操作 | 已绑定 | |
| 删除 | device:beacon:delete | 行操作 | 未绑定时 | 二次确认 |
### 表单字段(新增/编辑弹窗)
| 字段名 | 控件类型 | 必填 | 默认值 | 数据来源 | 校验规则 |
|--------|----------|------|--------|----------|----------|
| Beacon名称 | 文本输入 | | | 自填 | 最大30 |
| UUID | 文本输入 | | | 自填 | UUID格式 |
| 绑定位置 | 级联选择 | | | 区域树 | |
| 绑定模块 | 下拉单选 | | | 固定选项 | 巡检/保洁/考勤 |
| 电量预警阈值(%) | 数字输入 | | 20 | | 0~100 |
### 通知触发
| 触发操作 | 通知对象 | 通知方式 | 消息模板 | 文档来源 |
|----------|----------|----------|----------|----------|
| Beacon离线(>15分钟) | 物业管理员 | 系统内通知 | Beacon离线预警 | 05 §5.2 (BEACON_OFFLINE) / 06 §5.4 |
| Beacon低电量(<20%) | 物业管理员 | 系统内通知 | Beacon低电量预警 | 05 §5.2 (BEACON_LOW_BATTERY) |
### API端点
| 页面操作 | API路径 | 方法 | 说明 |
|----------|---------|------|------|
| 列表查询 | /api/v1/beacons | GET | |
| 新增 | /api/v1/beacons | POST | |
| 编辑 | /api/v1/beacons/{id} | PUT | |
| 解绑 | /api/v1/beacons/{id}/unbind | PUT | |
| 删除 | /api/v1/beacons/{id} | DELETE | |
---
## 页面2字典管理页
**页面编号**PR-S-02-P01
**端侧归属**Web专属
**页面路径**/system/dicts
### 界面布局
```
┌──────────────────────────────────────────────────────────────────┐
│ [面包屑] 系统配置 > 字典管理 │
├──────────────────────────────────────────────────────────────────┤
│ [左侧-字典类型] │ [右侧-字典值] │
│ ┌──────────────┐ │ ┌──────────────────────────────────────┐ │
│ │ 报修类型 │◀── │ 序号 | 字典值 | 排序 | 状态 | 操作 │ │
│ │ 巡检类型 │ │ 1 | 水电 | 1 | 启用 | 编辑 停用│ │
│ │ 保洁类型 │ │ 2 | 木工 | 2 | 启用 | 编辑 停用│ │
│ │ 班组类型 │ │ 3 | 空调 | 3 | 停用 | 编辑 启用│ │
│ │ 班次类型 │ │ │ │
│ │ [新增类型] │ │ [新增字典值] │ │
│ └──────────────┘ │ └──────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
```
### 操作按钮
| 按钮 | 权限编码 | 位置 | 显示条件 | 说明 |
|------|----------|------|----------|------|
| 新增字典类型 | system:dict:create | 左侧 | 始终 | |
| 新增字典值 | system:dict:create | 右侧 | 始终 | |
| 编辑 | system:dict:update | 行操作 | 始终 | |
| 启用/停用 | system:dict:update | 行操作 | 始终 | 被引用时不可停用 |
### API端点
| 页面操作 | API路径 | 方法 | 说明 |
|----------|---------|------|------|
| 字典类型列表 | /api/v1/dict-types | GET | |
| 字典值列表 | /api/v1/dict-types/{typeCode}/values | GET | |
| 新增类型 | /api/v1/dict-types | POST | |
| 新增值 | /api/v1/dict-types/{typeCode}/values | POST | |
---
## 页面3微信配置页
**页面编号**PR-S-03-P01
**端侧归属**Web专属
**页面路径**/system/wechat
### 表单字段
| 字段名 | 控件类型 | 必填 | 默认值 | 数据来源 | 校验规则 |
|--------|----------|------|--------|----------|----------|
| 小程序AppID | 文本输入 | | | 微信公众平台 | |
| 小程序AppSecret | 密码输入 | | | 微信公众平台 | |
| 公众号AppID | 文本输入 | | | 微信公众平台 | |
| 公众号AppSecret | 密码输入 | | | 微信公众平台 | |
| 服务器地址(URL) | 文本输入 | | | 自填 | URL格式 |
### 操作按钮
| 按钮 | 权限编码 | 位置 | 显示条件 | 说明 |
|------|----------|------|----------|------|
| 保存 | system:wechat:update | 底部 | 始终 | |
| 测试连接 | system:wechat:view | 底部 | 始终 | 验证配置是否正确 |
### API端点
| 页面操作 | API路径 | 方法 | 说明 |
|----------|---------|------|------|
| 查询配置 | /api/v1/system/wechat-config | GET | |
| 保存 | /api/v1/system/wechat-config | PUT | |
| 测试连接 | /api/v1/system/wechat-config/test | POST | |
---
## 页面4消息模板管理页
**页面编号**PR-S-04-P01
**端侧归属**Web专属
**页面路径**/system/message-templates
### 列表字段
| 序号 | 字段名 | 列宽 | 支持排序 | 说明 |
|------|--------|------|----------|------|
| 1 | 模板名称 | 150px | | 如:新工单通知 |
| 2 | 模板ID | 150px | | 微信模板消息ID |
| 3 | 适用场景 | 120px | | 工单分配/催单/审批/超时... |
| 4 | 模板变量 | 200px | | {{工单号}}, {{人员姓名}}... |
| 5 | 状态 | 80px | | 启用/停用 |
| 6 | 操作 | 100px | | 编辑 |
### 表单字段(编辑弹窗)
| 字段名 | 控件类型 | 必填 | 默认值 | 数据来源 | 校验规则 |
|--------|----------|------|--------|----------|----------|
| 模板名称 | 文本输入 | | | 自填 | 最大50 |
| 模板ID | 文本输入 | | | 微信后台 | |
| 适用场景 | 下拉单选 | | | 固定选项 | |
| 模板内容 | 多行文本 | | | 微信后台复制 | 最大500 |
| 模板变量说明 | 多行文本 | | | 自填 | |
### API端点
| 页面操作 | API路径 | 方法 | 说明 |
|----------|---------|------|------|
| 列表查询 | /api/v1/message-templates | GET | |
| 编辑 | /api/v1/message-templates/{id} | PUT | |
---
## 页面5蓝牙策略配置页
**页面编号**PR-S-05-P01(含数据补录审核)
**端侧归属**Web专属
**页面路径**/system/bluetooth-policy
### 界面布局
```
┌──────────────────────────────────────────────────────────────────┐
│ [面包屑] 系统配置 > 蓝牙策略配置 │
├──────────────────────────────────────────────────────────────────┤
│ [策略配置] │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ 场景 │ 策略 │ 说明 │ │
│ │ 巡检打卡 │ [▼REQUIRED]│ 必须连接Beacon打卡 │ │
│ │ 巡检拍照 │ [▼OPTIONAL]│ 可自由拍照 │ │
│ │ 保洁打卡 │ [▼REQUIRED]│ 必须连接Beacon打卡 │ │
│ │ 保洁拍照 │ [▼OPTIONAL]│ 可自由拍照 │ │
│ │ 考勤打卡 │ [▼REQUIRED]│ 必须连接Beacon打卡 │ │
│ └────────────────────────────────────────────────────────────┘ │
├──────────────────────────────────────────────────────────────────┤
│ [保存] [提交审核] │
└──────────────────────────────────────────────────────────────────┘
```
### 策略配置说明
| 场景 | 配置项 | 强制蓝牙(REQUIRED) | 非强制(OPTIONAL) | 文档来源 |
|------|--------|-------------------|------------------|----------|
| 巡检打卡 | inspection_check_in | 必须连接Beacon打卡,失败进补录 | 可手动打卡 | 06 §4.4 |
| 巡检拍照 | inspection_photo | 必须在蓝牙连接下拍照 | 可自由拍照 | 06 §4.4 |
| 保洁打卡 | cleaning_check_in | 必须连接Beacon打卡,失败进补录 | 可手动打卡 | 06 §4.4 |
| 保洁拍照 | cleaning_photo | 必须在蓝牙连接下拍照 | 可自由拍照 | 06 §4.4 |
| 考勤打卡 | attendance_check | 必须连接Beacon打卡,失败提交异常申诉 | 可手动打卡 | 06 §4.4 |
### 操作按钮
| 按钮 | 权限编码 | 位置 | 显示条件 | 说明 |
|------|----------|------|----------|------|
| 保存 | system:bluetooth-policy:update | 底部 | 始终 | 保存草稿 |
| 提交审核 | system:bluetooth-policy:approve | 底部 | 始终 | 提交医院账号审核 |
### 通知触发
| 触发操作 | 通知对象 | 通知方式 | 消息模板 | 文档来源 |
|----------|----------|----------|----------|----------|
| 策略提交审核 | 医院账号 | Web提醒 | 蓝牙策略变更审核 | 06 §4.4 |
| 审核通过 | 物业管理员 | 系统内通知 | 蓝牙策略已生效 | 06 §4.4 |
| 审核拒绝 | 物业管理员 | 系统内通知 | 蓝牙策略审核被拒绝 | 06 §4.4 |
### 审核流程
```
物业公司配置策略 → 提交审核 → 医院账号审核
┌──审核通过──┐ ┌──审核拒绝──┐
策略生效 维持原配置
通知物业 通知物业
```
### API端点
| 页面操作 | API路径 | 方法 | 说明 |
|----------|---------|------|------|
| 查询策略 | /api/v1/system/bluetooth-policy | GET | |
| 保存 | /api/v1/system/bluetooth-policy | PUT | |
| 提交审核 | /api/v1/system/bluetooth-policy/submit | POST | |
---
## 需求追溯
| 功能点编号 | 功能名称 | 文档来源 | 后续服务 | 关联功能 |
|------------|----------|----------|----------|----------|
| PR-S-01 | 蓝牙设备管理 | 02-物业公司 §9 / 03-物业公司 §9.1 | Beacon→绑定位置→打卡 | 巡检区域管理 / 保洁区域管理 / 考勤打卡点 |
| PR-S-02 | 字典管理 | 02-物业公司 §9 / 03-物业公司 §9.2 | 字典→各模块下拉选项 | 报修类型管理 / 巡检类型 / 保洁类型 |
| PR-S-03 | 微信配置 | 02-物业公司 §9 | 配置→小程序登录+推送 | 小程序端(登录/通知) |
| PR-S-04 | 消息模板 | 02-物业公司 §9 / 03-物业公司 §9.3 | 模板→微信推送消息 | 通知机制 |
| PR-S-05 | 数据补录审核 | 02-物业公司 §9 | 审核→补录数据生效 | 巡检/保洁/考勤补录 |
## 业务规则
1. **Beacon心跳检测**:每5分钟上报心跳,超过15分钟标记OFFLINE(来源:06 §5.4
2. **Beacon电量预警**:电量<20%时系统内通知预警(来源:06 §5.4 / 05 §5.2
3. **字典租户隔离**:字典数据仅对本物业公司(租户)可见(来源:03-物业公司 §9.2
4. **蓝牙策略审核**:物业公司提交配置→医院账号审核通过后生效,审核拒绝则维持原配置(来源:06 §4.4
5. **蓝牙打卡判定**:不判断距离,只要成功连接蓝牙设备即可打卡,RSSI > -70dBm来源06 §5.4
6. **消息模板变量**支持自定义模板变量工单号、人员姓名、时间等来源03-物业公司 §9.3