提交已修改的代码

This commit is contained in:
zlwu committed 2025-06-30 04:25:12 +08:00
1 parent 65d2d71469
commit 60cb1b09f8
32 files changed
+10359 -4786

No files matched your search

+26 -5
View File
@@ -62,12 +62,33 @@
### 🚀 计划中模块
#### 5. 后勤维修服务系统 (maintenance-service)
#### 5. 物业报修管理系统 (property-maintenance)
- **状态**:⭕ 待开发
- **计划开始**:2024 年 7 月
- **技术栈**:Spring Boot + Vue3 + Warm-Flow
- **核心功能**:报修申请、工单管理、维修派单、服务评价
- **状态**:🔄 前端开发完成
- **负责人**:待分配
- **技术栈**:Spring Boot 3.4.6 + Vue3 + TypeScript + Warm-Flow + Element Plus
- **核心功能**:报修申请管理、工单分派系统、维修进度跟踪、服务质量评价、数据统计分析
- **API 数量**:15 个接口(规划中)
- **文档完整度**:🟡 95%(前端代码完成)
- **数据库表**:6 个核心表(已部署到研发环境)
- **部署环境**:47.99.164.66:3306/hzdyjs_xg
- **开发进度**:
- ✅ 需求分析完成
- ✅ 数据库设计完成
- ✅ 数据库部署完成
- ✅ **前端代码完成**(API 层 + 页面组件)
- 🔄 后端接口开发中
- ⏳ 功能联调测试
- **前端代码**:
- API 接口定义:17 个 TypeScript 类型,22 个接口方法
- 页面组件:报修工单管理、维修类型管理
- 技术特性:模拟数据、完整表单验证、状态流转、树形结构
- **特殊说明**:
- 系统管理功能:使用系统自带的用户、角色、权限管理,无需重新开发
- 通知功能:本模块暂不包含通知功能,状态更新通过系统界面显示
- 数据库环境:已在研发环境部署完成,支持后端开发和前端联调
- 前端环境:使用模拟数据,支持独立开发调试
- 下一步:开始后端 API 接口开发,对接前端代码
#### 6. 餐饮服务管理系统 (catering-management)
@@ -0,0 +1,759 @@
# 物业报修管理模块 - 总览
> 🎯 **模块用途**:学校物业维修服务数字化管理,提供从报修申请到维修完成的全流程管理
## 📋 模块基本信息
**模块名称**:property-maintenance / 物业报修管理模块
**负责人**:[待分配]
**开发状态**:⭕ 待开始
**技术栈**:Spring Boot 3.4.6 + Vue3 + TypeScript + Warm-Flow + Element Plus
**依赖模块**:用户管理模块、系统管理模块、文件服务模块
**开发周期**:[待规划] - [待规划]
## 🎯 模块概述
### 业务价值
本模块旨在解决学校物业维修服务的数字化管理问题,实现报修申请、任务分派、维修跟踪、服务评价的全流程线上化处理,提高维修效率,提升用户满意度,建立可追踪的服务质量体系。
### 核心功能
- **报修申请管理**:用户在线提交报修申请,支持图片、视频上传
- **工单分派系统**:物业管理员智能分派工单给合适的维修人员
- **维修进度跟踪**:实时跟踪维修进度,状态可视化展示
- **服务质量评价**:用户对维修服务进行评分和反馈
- **数据统计分析**:维修效率、用户满意度等多维度数据分析
### 技术特点
- **工作流驱动**:基于 Warm-Flow 引擎实现标准化业务流程
- **多媒体支持**:支持图片、视频等多媒体文件上传和预览
- **权限精细化**:基于角色的权限控制,确保数据安全
- **移动端适配**:支持 PC 端和移动端操作,方便现场使用
## 📁 文档结构
```
property-maintenance/
├── README.md # 本文件 - 模块总览
├── 需求分析/
│ ├── 业务需求说明.md # 详细业务需求
│ ├── 功能需求清单.md # 功能点清单
│ ├── 非功能需求.md # 性能、安全要求
│ └── 用户故事.md # 用户使用场景
├── 技术设计/
│ ├── 数据库设计.md # 表结构设计
│ ├── API接口设计.md # 接口定义
│ ├── 架构设计.md # 模块架构
│ └── 技术选型.md # 技术决策说明
├── 实现文档/
│ ├── 后端实现说明.md # 后端代码结构
│ ├── 前端实现说明.md # 前端代码结构
│ ├── 关键业务逻辑.md # 核心算法逻辑
│ └── 代码规范.md # 编码规范
├── 测试文档/
│ ├── 测试计划.md # 测试策略
│ ├── 测试用例.md # 具体测试用例
│ └── 测试报告.md # 测试结果
└── 运维文档/
├── 部署指南.md # 部署步骤
├── 监控配置.md # 监控指标
└── 故障处理.md # 常见问题
```
## 🏗️ 系统架构
### 模块架构图
```mermaid
graph TB
subgraph "前端展示层"
A1[报修申请页面<br/>用户提交报修]
A2[工单管理页面<br/>管理员派单]
A3[维修工作台<br/>维修员操作]
A4[统计分析页面<br/>数据可视化]
end
subgraph "接口服务层"
B1[报修单Controller<br/>CRUD操作]
B2[工作流Controller<br/>流程控制]
B3[文件服务Controller<br/>文件上传]
B4[统计分析Controller<br/>数据统计]
end
subgraph "业务逻辑层"
C1[报修单Service<br/>业务逻辑处理]
C2[工作流Service<br/>流程管理]
C3[通知Service<br/>消息通知]
C4[统计Service<br/>数据分析]
end
subgraph "数据持久层"
D1[报修单Mapper<br/>数据访问]
D2[工作流Mapper<br/>流程数据]
D3[文件Mapper<br/>文件信息]
D4[MySQL数据库<br/>数据存储]
end
subgraph "外部服务"
E1[文件存储服务<br/>OSS/本地存储]
E2[消息通知服务<br/>短信/邮件]
E3[用户权限服务<br/>Sa-Token]
end
A1 --> B1
A2 --> B1
A2 --> B2
A3 --> B1
A3 --> B2
A4 --> B4
B1 --> C1
B2 --> C2
B3 --> C1
B4 --> C4
C1 --> D1
C2 --> D2
C3 --> D1
C4 --> D1
D1 --> D4
D2 --> D4
D3 --> D4
C1 --> E1
C3 --> E2
B1 --> E3
```
### 数据流向
```mermaid
sequenceDiagram
participant U as 用户
participant F as 前端
participant C as Controller
participant S as Service
participant W as 工作流引擎
participant M as Mapper
participant D as Database
U->>F: 提交报修申请
F->>C: POST /api/maintenance/repair-order
C->>S: 创建报修单
S->>W: 启动维修流程
W->>M: 保存流程数据
M->>D: 存储到数据库
D-->>M: 返回结果
M-->>S: 返回数据
S-->>C: 返回报修单ID
C-->>F: JSON响应
F-->>U: 显示提交成功
Note over S,W: 自动通知物业管理员
```
## 📊 核心功能模块
### 1. 报修申请管理
#### 业务描述
用户通过 Web 端或移动端在线提交报修申请,填写报修地点、问题描述、紧急程度等信息,并可上传现场图片或视频作为辅助说明。系统自动生成唯一的报修单号,并启动维修工作流程。
#### 技术实现
- **前端实现**:Vue3 + Element Plus + 文件上传组件
- **后端实现**:Spring Boot + MyBatis-Plus + OSS 文件服务
- **数据存储**:MySQL 存储报修单信息,OSS 存储多媒体文件
#### 关键流程
1. 用户登录认证 → 2. 填写报修信息 → 3. 上传附件文件 → 4. 提交申请 → 5. 系统生成工单 → 6. 进入分派流程
### 🎯 工单分派系统
#### 业务描述
物业管理员接收用户报修申请后,根据维修类型、紧急程度、维修员专业技能和工作负荷,智能推荐并分派工单给合适的维修员。支持批量分派和分派撤回功能。
#### 技术实现
- **前端实现**:工单列表、分派对话框、维修员负荷展示
- **后端实现**:工单分配算法、负荷均衡计算
- **数据存储**:工单分派记录、维修员工作负荷统计
#### 关键流程
1. 查看待分派工单 → 2. 选择维修员 → 3. 确认分派 → 4. 更新工单状态 → 5. 维修员接收工单
### 🔧 维修进度跟踪
#### 业务描述
维修员接收工单后,可实时更新维修进度状态(接单、到达现场、开始维修、完成维修等),用户可通过系统实时查看维修进度。支持维修过程照片上传和问题上报。
#### 技术实现
- **前端实现**:进度时间轴展示、状态更新界面
- **后端实现**:状态机管理、进度同步机制
- **数据存储**:维修进度记录、状态变更日志
#### 关键流程
1. 维修员接收工单 → 2. 更新到达状态 → 3. 开始维修 → 4. 上传进度照片 → 5. 完成维修 → 6. 提交报告
### ⭐ 服务质量评价
#### 业务描述
维修完成后,用户对维修服务进行评分(1-5 星)和文字反馈,包括维修质量、服务态度、响应速度等维度。评价结果作为维修员绩效考核和服务改进的重要依据。
#### 技术实现
- **前端实现**:星级评分组件、多维度评价表单
- **后端实现**:评价数据统计、满意度计算
- **数据存储**:评价记录、统计分析数据
#### 关键流程
1. 维修完成确认 → 2. 用户收到评价邀请 → 3. 多维度评分 → 4. 提交评价 → 5. 工单归档
## 🔌 API 接口概览
### 接口分类
#### 报修单管理接口
| 接口名称 | 请求方式 | 路径 | 功能描述 |
| -------------- | -------- | ----------------------------------------- | ---------------------- |
| 创建报修单 | POST | /api/maintenance/repair-order | 用户提交报修申请 |
| 查询报修单列表 | GET | /api/maintenance/repair-order/list | 分页查询报修单列表 |
| 查询报修单详情 | GET | /api/maintenance/repair-order/{id} | 根据 ID 查询报修单详情 |
| 更新报修单状态 | PUT | /api/maintenance/repair-order/{id}/status | 更新报修单处理状态 |
| 分派工单 | POST | /api/maintenance/repair-order/{id}/assign | 管理员分派工单给维修员 |
| 完成维修 | POST | /api/maintenance/repair-order/{id}/finish | 维修员提交维修完成结果 |
#### 文件管理接口
| 接口名称 | 请求方式 | 路径 | 功能描述 |
| ------------ | -------- | ---------------------------- | ------------------ |
| 上传文件 | POST | /api/maintenance/file/upload | 上传图片、视频文件 |
| 删除文件 | DELETE | /api/maintenance/file/{id} | 删除已上传文件 |
| 获取文件信息 | GET | /api/maintenance/file/{id} | 获取文件详细信息 |
#### 评价管理接口
| 接口名称 | 请求方式 | 路径 | 功能描述 |
| ------------ | -------- | -------------------------------------- | ------------------ |
| 提交评价 | POST | /api/maintenance/evaluation | 用户提交服务评价 |
| 查询评价列表 | GET | /api/maintenance/evaluation/list | 查询评价记录列表 |
| 统计满意度 | GET | /api/maintenance/evaluation/statistics | 统计服务满意度数据 |
#### 统计分析接口
| 接口名称 | 请求方式 | 路径 | 功能描述 |
| ---------------- | -------- | ---------------------------------------- | -------------------- |
| 维修统计概览 | GET | /api/maintenance/statistics/overview | 获取维修业务概览数据 |
| 维修员工作量统计 | GET | /api/maintenance/statistics/workload | 统计维修员工作负荷 |
| 维修类型分析 | GET | /api/maintenance/statistics/category | 按维修类型统计分析 |
| 满意度趋势分析 | GET | /api/maintenance/statistics/satisfaction | 用户满意度趋势分析 |
### 接口规范
- **请求格式**:JSON
- **响应格式**:统一响应体结构
- **认证方式**:JWT Token (Sa-Token)
- **权限控制**:基于角色的权限验证
- **文件上传**:支持多文件上传,限制文件大小和类型
## 🗄️ 数据模型
### 核心实体
#### 报修单表 (pm_repair_order)
| 字段名 | 类型 | 长度 | 非空 | 默认值 | 说明 |
| ------------------ | ------------ | ---- | ---- | ------- | ------------- |
| id | BIGINT | - | Y | - | 主键 ID |
| order_no | VARCHAR | 32 | Y | - | 报修单号 |
| title | VARCHAR | 200 | Y | - | 报修标题 |
| description | TEXT | - | Y | - | 问题描述 |
| location | VARCHAR | 500 | Y | - | 报修地点 |
| contact_name | VARCHAR | 50 | Y | - | 联系人姓名 |
| contact_phone | VARCHAR | 20 | Y | - | 联系电话 |
| urgency_level | TINYINT | - | Y | 1 | 紧急程度(1-5) |
| expected_time | DATETIME | - | N | - | 期望完成时间 |
| repair_type | VARCHAR | 50 | Y | - | 维修类型 |
| status | VARCHAR | 20 | Y | PENDING | 状态 |
| assignee_id | BIGINT | - | N | - | 分派维修员 ID |
| assign_time | DATETIME | - | N | - | 分派时间 |
| start_time | DATETIME | - | N | - | 开始维修时间 |
| finish_time | DATETIME | - | N | - | 完成维修时间 |
| repair_result | TEXT | - | N | - | 维修结果说明 |
| evaluation_score | DECIMAL(3,2) | - | N | - | 评价分数 |
| evaluation_comment | TEXT | - | N | - | 评价内容 |
| tenant_id | VARCHAR | 20 | Y | 000000 | 租户 ID |
| create_dept | BIGINT | - | Y | - | 创建部门 |
| create_by | BIGINT | - | Y | - | 创建者 |
| create_time | DATETIME | - | Y | - | 创建时间 |
| update_by | BIGINT | - | Y | - | 更新者 |
| update_time | DATETIME | - | Y | - | 更新时间 |
| deleted | TINYINT | - | Y | 0 | 删除标记 |
#### 报修附件表 (pm_repair_attachment)
| 字段名 | 类型 | 长度 | 非空 | 默认值 | 说明 |
| --------------- | -------- | ---- | ---- | ------ | --------- |
| id | BIGINT | - | Y | - | 主键 ID |
| repair_order_id | BIGINT | - | Y | - | 报修单 ID |
| file_name | VARCHAR | 255 | Y | - | 文件名 |
| file_path | VARCHAR | 500 | Y | - | 文件路径 |
| file_size | BIGINT | - | Y | - | 文件大小 |
| file_type | VARCHAR | 50 | Y | - | 文件类型 |
| attachment_type | VARCHAR | 20 | Y | - | 附件类型 |
| tenant_id | VARCHAR | 20 | Y | 000000 | 租户 ID |
| create_by | BIGINT | - | Y | - | 创建者 |
| create_time | DATETIME | - | Y | - | 创建时间 |
| update_by | BIGINT | - | Y | - | 更新者 |
| update_time | DATETIME | - | Y | - | 更新时间 |
| deleted | TINYINT | - | Y | 0 | 删除标记 |
#### 维修进度记录表 (pm_repair_progress)
| 字段名 | 类型 | 长度 | 非空 | 默认值 | 说明 |
| --------------- | -------- | ---- | ---- | ------ | ------------ |
| id | BIGINT | - | Y | - | 主键 ID |
| repair_order_id | BIGINT | - | Y | - | 报修单 ID |
| status | VARCHAR | 20 | Y | - | 进度状态 |
| description | TEXT | - | N | - | 进度描述 |
| operator_id | BIGINT | - | Y | - | 操作人 ID |
| operator_name | VARCHAR | 50 | Y | - | 操作人姓名 |
| progress_time | DATETIME | - | Y | - | 进度更新时间 |
| tenant_id | VARCHAR | 20 | Y | 000000 | 租户 ID |
| create_by | BIGINT | - | Y | - | 创建者 |
| create_time | DATETIME | - | Y | - | 创建时间 |
| deleted | TINYINT | - | Y | 0 | 删除标记 |
### 实体关系图
```mermaid
erDiagram
PM_REPAIR_ORDER ||--o{ PM_REPAIR_ATTACHMENT : "一对多"
PM_REPAIR_ORDER ||--o{ PM_REPAIR_PROGRESS : "一对多"
PM_REPAIR_ORDER }o--|| SYS_USER : "报修人"
PM_REPAIR_ORDER }o--|| SYS_USER : "维修员"
PM_REPAIR_ORDER {
bigint id PK
varchar order_no UK
varchar title
text description
varchar location
varchar status
bigint assignee_id FK
datetime create_time
}
PM_REPAIR_ATTACHMENT {
bigint id PK
bigint repair_order_id FK
varchar file_name
varchar file_path
varchar file_type
}
PM_REPAIR_PROGRESS {
bigint id PK
bigint repair_order_id FK
varchar status
text description
bigint operator_id FK
datetime progress_time
}
SYS_USER {
bigint id PK
varchar username
varchar nickname
varchar phone
}
```
## 🔄 业务流程
### 主要业务流程
#### 报修申请流程
```mermaid
flowchart TD
A[用户发起报修] --> B[填写报修信息]
B --> C{信息完整?}
C -->|否| B
C -->|是| D[上传附件]
D --> E[提交申请]
E --> F[生成报修单号]
F --> G[通知物业管理员]
G --> H[报修单进入待分派状态]
```
**流程说明**:
1. 用户在系统中填写报修基本信息,包括报修地点、问题描述等
2. 系统验证信息完整性,要求用户补充必要信息
3. 用户可选择上传现场图片或视频作为补充说明
4. 提交后系统自动生成唯一报修单号
5. 自动通知物业管理员有新的报修申请需要处理
#### 工单分派流程
```mermaid
flowchart TD
A[管理员查看待分派工单] --> B[选择报修单]
B --> C[查看报修详情]
C --> D{是否需要分派?}
D -->|否| E[标记为无需维修]
D -->|是| F[选择维修员]
F --> G[确认分派]
G --> H[更新工单状态]
H --> I[通知维修员]
I --> J[通知报修用户]
```
**流程说明**:
1. 物业管理员登录系统查看所有待分派的报修工单
2. 点击查看具体报修单的详细信息和附件
3. 根据维修类型和维修员专长选择合适的维修人员
4. 确认分派后系统更新工单状态为"已分派"
5. 自动通知维修员和报修用户工单分派情况
#### 维修处理流程
```mermaid
flowchart TD
A[维修员接收工单] --> B[确认接单]
B --> C[到达现场]
C --> D[开始维修]
D --> E[更新维修进度]
E --> F{维修是否完成?}
F -->|否| D
F -->|是| G[提交维修报告]
G --> H[上传完成照片]
H --> I[更新工单状态]
I --> J[通知用户确认]
```
**流程说明**:
1. 维修员通过移动端或 PC 端接收分派的工单
2. 确认接单并更新状态为"进行中"
3. 到达维修现场,开始实际维修工作
4. 在维修过程中可随时更新进度状态
5. 维修完成后提交维修报告和现场照片
6. 系统自动通知报修用户确认维修结果
## 🎨 前端设计
### 页面结构
#### 报修申请页面 (用户端)
- **功能**:用户提交新的报修申请
- **组件**:表单组件、文件上传组件、地点选择器、日期选择器
- **交互**:填写表单 → 上传附件 → 提交申请 → 查看申请结果
- **数据**:报修类型字典、地点选择数据、用户基本信息
#### 工单管理页面 (管理员端)
- **功能**:查看、分派和管理所有报修工单
- **组件**:数据表格、筛选器、分派对话框、详情抽屉
- **交互**:筛选工单 → 查看详情 → 选择维修员 → 确认分派
- **数据**:工单列表数据、维修员列表、工单统计数据
#### 维修工作台 (维修员端)
- **功能**:维修员查看和处理分配给自己的工单
- **组件**:工单卡片、进度更新、文件上传、状态切换
- **交互**:接收工单 → 更新进度 → 上传照片 → 完成维修
- **数据**:个人工单列表、进度记录、维修结果数据
#### 统计分析页面 (管理员端)
- **功能**:查看维修业务的各类统计分析数据
- **组件**:图表组件、数据卡片、日期筛选器、导出功能
- **交互**:选择时间范围 → 查看统计图表 → 导出报表
- **数据**:统计图表数据、趋势分析数据、满意度数据
### 组件设计
#### 报修申请表单组件 (RepairOrderForm)
```typescript
// 组件属性接口
interface RepairOrderFormProps {
modelValue: RepairOrderForm;
readonly?: boolean;
showAttachment?: boolean;
}
// 组件事件接口
interface RepairOrderFormEmits {
'update:modelValue': [value: RepairOrderForm];
submit: [formData: RepairOrderForm];
cancel: [];
}
```
#### 工单分派对话框 (AssignDialog)
```typescript
// 组件属性接口
interface AssignDialogProps {
visible: boolean;
repairOrder: RepairOrderVo;
maintainerList: MaintainerVo[];
}
// 组件事件接口
interface AssignDialogEmits {
'update:visible': [visible: boolean];
confirm: [assignData: AssignFormData];
cancel: [];
}
```
## 📝 开发规范
### 代码结构
#### 后端代码结构
```
src/main/java/org/dromara/modules/maintenance/
├── controller/ # 控制器层
│ ├── RepairOrderController.java
│ ├── RepairAttachmentController.java
│ ├── RepairProgressController.java
│ └── MaintenanceStatisticsController.java
├── domain/ # 领域对象层
│ ├── bo/ # 业务对象
│ │ ├── RepairOrderBo.java
│ │ ├── RepairOrderQueryBo.java
│ │ └── AssignRepairOrderBo.java
│ └── vo/ # 视图对象
│ ├── RepairOrderVo.java
│ ├── RepairOrderDetailVo.java
│ └── MaintenanceStatisticsVo.java
├── mapper/ # 数据访问层
│ ├── RepairOrderMapper.java
│ ├── RepairOrderMapper.xml
│ ├── RepairAttachmentMapper.java
│ └── RepairProgressMapper.java
├── service/ # 业务服务层
│ ├── IRepairOrderService.java
│ ├── IRepairAttachmentService.java
│ ├── IMaintenanceStatisticsService.java
│ └── impl/
│ ├── RepairOrderServiceImpl.java
│ ├── RepairAttachmentServiceImpl.java
│ └── MaintenanceStatisticsServiceImpl.java
└── utils/ # 工具类
└── MaintenanceUtils.java
```
#### 前端代码结构
```
src/views/maintenance/
├── repair-order/ # 报修单管理
│ ├── index.vue # 报修单列表页
│ ├── form.vue # 报修申请表单
│ └── detail.vue # 报修单详情
├── work-order/ # 工单管理
│ ├── index.vue # 工单管理页面
│ └── assign.vue # 工单分派页面
├── workbench/ # 维修工作台
│ ├── index.vue # 维修员工作台
│ └── progress.vue # 进度更新页面
├── statistics/ # 统计分析
│ └── index.vue # 统计分析页面
├── components/ # 页面组件
│ ├── RepairOrderForm.vue
│ ├── AssignDialog.vue
│ ├── ProgressTimeline.vue
│ └── AttachmentUpload.vue
├── types/ # 类型定义
│ └── index.ts
└── api/ # API接口
└── index.ts
```
### 命名规范
#### 后端命名规范
- **实体类**:RepairOrder、RepairAttachment、RepairProgress
- **服务类**:RepairOrderService、MaintenanceStatisticsService
- **控制器**:RepairOrderController、MaintenanceStatisticsController
- **DTO 类**:RepairOrderBo、RepairOrderVo、AssignRepairOrderBo
#### 前端命名规范
- **页面组件**:RepairOrderList、WorkOrderManage、MaintenanceWorkbench
- **业务组件**:RepairOrderForm、AssignDialog、ProgressTimeline
- **API 方法**:getRepairOrderList、createRepairOrder、assignRepairOrder
- **类型接口**:RepairOrderForm、RepairOrderVo、AssignFormData
#### 数据库命名规范
- **表名**:pm_repair_order、pm_repair_attachment、pm_repair_progress
- **字段名**:repair_order_id、contact_name、urgency_level
- **索引名**:idx_repair_order_status、idx_repair_order_assignee
## 🧪 测试策略
### 测试分类
#### 单元测试
- **覆盖范围**:Service 层业务逻辑、工具类方法
- **测试框架**:JUnit 5 + Mockito + Spring Boot Test
- **覆盖率要求**:> 85%
- **重点测试**:报修单状态流转、工单分派逻辑、统计计算算法
#### 集成测试
- **覆盖范围**:Controller 层 API 接口、数据库操作
- **测试框架**:Spring Boot Test + TestContainers
- **测试数据**:独立测试数据库
- **重点测试**:完整业务流程、文件上传下载、权限控制
#### 前端测试
- **覆盖范围**:组件功能、用户交互、表单验证
- **测试框架**:Vue Test Utils + Jest + Cypress
- **测试类型**:组件单元测试、页面集成测试、E2E 测试
### 测试用例设计
#### 功能测试用例
- **报修申请测试**:正常提交、信息验证、文件上传
- **工单分派测试**:分派流程、权限验证、状态更新
- **维修流程测试**:接单确认、进度更新、完成提交
- **评价功能测试**:评分提交、满意度统计、数据展示
#### 性能测试用例
- **并发提交测试**:模拟多用户同时提交报修申请
- **文件上传测试**:大文件上传、多文件并发上传
- **数据查询测试**:大数据量下的列表查询性能
- **统计分析测试**:复杂统计查询的响应时间
## 🚀 部署运维
### 部署环境
#### 开发环境
- **部署方式**:本地 Docker 容器
- **数据库**:MySQL 8.0
- **缓存**:Redis 7.0
- **文件存储**:本地文件系统
- **配置**:application-dev.yml
#### 测试环境
- **部署方式**:Docker Compose
- **数据库**:MySQL 8.0(测试库)
- **缓存**:Redis 7.0
- **文件存储**:MinIO 或 阿里云 OSS
- **配置**:application-test.yml
#### 生产环境
- **部署方式**:Kubernetes
- **数据库**:MySQL 8.0(主从集群)
- **缓存**:Redis 7.0(集群模式)
- **文件存储**:阿里云 OSS
- **负载均衡**:Nginx + Ingress
- **配置**:application-prod.yml
### 监控指标
#### 业务指标
- **报修单提交量**:每日、每周、每月报修申请数量
- **处理效率**:平均处理时长、及时完成率
- **用户满意度**:平均评分、满意度趋势
- **维修员工作量**:工单分配数量、完成效率
#### 技术指标
- **接口响应时间**:各 API 接口的平均响应时间 < 500ms
- **文件上传成功率**:文件上传成功率 > 99%
- **系统可用性**:服务可用性 > 99.9%
- **错误率**:系统错误率 < 0.1%
## 📅 开发计划
### 开发阶段
#### 第一阶段:基础框架(预计 2 周)
- [ ] 数据库表结构设计和创建
- [ ] 基础实体类和 Mapper 开发
- [ ] 基础 CRUD 接口开发
- [ ] 前端页面框架搭建
- [ ] 单元测试编写
#### 第二阶段:核心功能(预计 3 周)
- [ ] 报修申请功能开发
- [ ] 文件上传功能开发
- [ ] 工单分派功能开发
- [ ] 维修流程管理开发
- [ ] 集成测试编写
#### 第三阶段:高级功能(预计 2 周)
- [ ] 服务评价功能开发
- [ ] 统计分析功能开发
- [ ] 移动端适配优化
- [ ] 性能优化
#### 第四阶段:测试部署(预计 1 周)
- [ ] 完整功能测试
- [ ] 性能压力测试
- [ ] 用户验收测试
- [ ] 生产环境部署
- [ ] 上线运维监控
### 里程碑
- **里程碑 1**:基础框架完成,能够创建和查询报修单
- **里程碑 2**:核心流程打通,完整的报修-分派-维修流程
- **里程碑 3**:功能完善,包括评价和统计功能
- **里程碑 4**:系统上线,正式投入使用
---
## 📖 相关文档
- **需求分析详细文档**:[需求分析/业务需求说明.md](需求分析/业务需求说明.md)
- **技术设计详细文档**:[技术设计/架构设计.md](技术设计/架构设计.md)
- **API 接口详细文档**:[技术设计/API 接口设计.md](技术设计/API接口设计.md)
- **数据库设计详细文档**:[技术设计/数据库设计.md](技术设计/数据库设计.md)
- **项目总览文档**:[../../项目总览/README.md](../../项目总览/README.md)
- **开发规范文档**:[../../开发文档/README.md](../../开发文档/README.md)
**重要说明**:
1. **用户权限管理**:使用系统自带的用户管理、角色管理和权限管理功能,无需重新开发
2. **通知功能**:本模块不包含通知功能,用户通过系统界面查看状态更新和进度变化
3. **集成说明**:与现有系统的用户认证、文件存储、工作流引擎进行集成
@@ -0,0 +1,632 @@
# 物业报修管理模块 - 数据库设计
## 📋 文档信息
**文档名称**:物业报修管理模块数据库设计
**文档版本**:v1.0
**创建日期**:2025-01-23
**设计规范**:严格遵循 `docs/设计文档/database/mysql-database-standard.md`
**依据文档**:功能需求清单.md
## 🎯 数据库设计原则
### 核心设计理念
1. **严格遵循项目规范**:所有表必须包含标准基础字段
2. **业务导向设计**:基于实际业务流程设计表结构
3. **性能优化**:合理设计索引,支持高效查询
4. **扩展性考虑**:预留扩展字段和机制
5. **数据完整性**:通过应用层维护关联关系
### 关键约束
- ✅ **使用雪花 ID**作为主键
- ✅ **强制逻辑删除**,禁止物理删除
- ✅ **多租户支持**,所有表包含 tenant_id
- ✅ **禁用外键约束**,关联关系通过应用层维护
- ✅ **完整中文注释**,便于理解和维护
## 📊 数据模型概览
### 🗂️ 表结构清单
| 表名 | 中文名称 | 用途 | 关联关系 |
| ----------------------- | ---------- | ---------------------- | ------------ |
| `pm_repair_order` | 报修工单表 | 存储报修申请的核心信息 | 核心表 |
| `pm_repair_attachment` | 报修附件表 | 存储报修相关附件文件 | 关联报修工单 |
| `pm_repair_progress` | 维修进度表 | 记录维修过程状态变更 | 关联报修工单 |
| `pm_service_evaluation` | 服务评价表 | 存储用户服务质量评价 | 关联报修工单 |
| `pm_repair_category` | 维修类型表 | 报修类型分类配置 | 字典表 |
| `pm_system_config` | 系统配置表 | 模块系统参数配置 | 配置表 |
### 📈 数据流转关系
```mermaid
graph TD
A[用户提交报修] --> B[pm_repair_order 报修工单]
B --> C[pm_repair_attachment 附件]
B --> D[pm_repair_progress 进度]
B --> E[pm_service_evaluation 评价]
F[pm_repair_category 类型] --> B
G[pm_system_config 配置] --> B
H[sys_user 系统用户] --> B
H --> D
```
## 🏗️ 详细表结构设计
### 1. 报修工单表 (pm_repair_order)
> **核心业务表**:存储报修申请的所有核心信息,是整个模块的数据中心
```sql
-- ----------------------------
-- Table structure for pm_repair_order
-- ----------------------------
DROP TABLE IF EXISTS `pm_repair_order`;
CREATE TABLE `pm_repair_order` (
-- 标准基础字段(必须)
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
-- 业务基础信息
`order_no` varchar(50) NOT NULL COMMENT '工单编号,格式:RO+年月日+4位流水号',
`title` varchar(200) NOT NULL COMMENT '报修标题',
`description` text NOT NULL COMMENT '问题描述',
`repair_location` varchar(200) NOT NULL COMMENT '报修地点',
-- 分类和紧急程度
`category_id` bigint(20) NOT NULL COMMENT '维修类型ID,关联pm_repair_category.id',
`priority_level` tinyint(1) NOT NULL DEFAULT 3 COMMENT '紧急程度:1-非常紧急,2-紧急,3-一般,4-不紧急,5-可延后',
`expected_finish_time` datetime DEFAULT NULL COMMENT '期望完成时间',
-- 报修人信息
`reporter_id` bigint(20) NOT NULL COMMENT '报修人ID,关联sys_user.id',
`reporter_name` varchar(50) NOT NULL COMMENT '报修人姓名',
`reporter_phone` varchar(20) NOT NULL COMMENT '报修人电话',
`reporter_dept` varchar(100) DEFAULT NULL COMMENT '报修人部门',
-- 工单状态和处理信息
`order_status` char(1) NOT NULL DEFAULT '1' COMMENT '工单状态:1-待分派,2-已分派,3-进行中,4-已完成,5-已评价,6-已归档,9-已取消',
`assign_time` datetime DEFAULT NULL COMMENT '分派时间',
`assignee_id` bigint(20) DEFAULT NULL COMMENT '分派维修员ID,关联sys_user.id',
`assignee_name` varchar(50) DEFAULT NULL COMMENT '分派维修员姓名',
`assign_remark` varchar(500) DEFAULT NULL COMMENT '分派备注说明',
-- 处理时间信息
`start_time` datetime DEFAULT NULL COMMENT '开始处理时间',
`finish_time` datetime DEFAULT NULL COMMENT '完成时间',
`total_duration` int(11) DEFAULT NULL COMMENT '总处理时长(分钟)',
-- 处理结果
`repair_result` text DEFAULT NULL COMMENT '维修结果描述',
`used_materials` varchar(500) DEFAULT NULL COMMENT '使用材料清单',
`follow_suggestions` varchar(500) DEFAULT NULL COMMENT '后续建议',
-- 评价相关
`evaluation_score` decimal(3,1) DEFAULT NULL COMMENT '综合评价得分(1.0-5.0)',
`evaluation_time` datetime DEFAULT NULL COMMENT '评价时间',
-- 统计字段
`attachment_count` int(11) DEFAULT 0 COMMENT '附件数量',
`progress_count` int(11) DEFAULT 0 COMMENT '进度记录数量',
-- 其他字段
`cancel_reason` varchar(500) DEFAULT NULL COMMENT '取消原因',
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
-- 主键和索引
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_order_no` (`order_no`, `tenant_id`),
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_deleted` (`deleted`),
KEY `idx_order_status` (`order_status`),
KEY `idx_priority_level` (`priority_level`),
KEY `idx_create_time` (`create_time`),
KEY `idx_reporter_id` (`reporter_id`),
KEY `idx_assignee_id` (`assignee_id`),
KEY `idx_category_id` (`category_id`),
KEY `idx_assign_time` (`assign_time`),
KEY `idx_finish_time` (`finish_time`),
KEY `idx_tenant_status` (`tenant_id`, `order_status`, `deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报修工单表';
```
### 2. 报修附件表 (pm_repair_attachment)
> **附件管理表**:存储报修过程中上传的图片、视频等多媒体文件信息
```sql
-- ----------------------------
-- Table structure for pm_repair_attachment
-- ----------------------------
DROP TABLE IF EXISTS `pm_repair_attachment`;
CREATE TABLE `pm_repair_attachment` (
-- 标准基础字段(必须)
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
-- 关联信息
`order_id` bigint(20) NOT NULL COMMENT '报修工单ID,关联pm_repair_order.id',
-- 文件信息
`file_name` varchar(200) NOT NULL COMMENT '文件原始名称',
`file_path` varchar(500) NOT NULL COMMENT '文件存储路径',
`file_size` bigint(20) NOT NULL COMMENT '文件大小(字节)',
`file_type` varchar(20) NOT NULL COMMENT '文件类型:image-图片,video-视频',
`file_extension` varchar(10) NOT NULL COMMENT '文件扩展名',
`file_mime_type` varchar(100) DEFAULT NULL COMMENT '文件MIME类型',
-- 上传信息
`upload_stage` char(1) NOT NULL DEFAULT '1' COMMENT '上传阶段:1-报修申请,2-维修过程,3-完成确认',
`uploader_id` bigint(20) NOT NULL COMMENT '上传人ID,关联sys_user.id',
`uploader_name` varchar(50) NOT NULL COMMENT '上传人姓名',
-- 文件处理
`thumbnail_path` varchar(500) DEFAULT NULL COMMENT '缩略图路径(图片文件)',
`duration` int(11) DEFAULT NULL COMMENT '时长(视频文件,秒)',
`resolution` varchar(20) DEFAULT NULL COMMENT '分辨率(如:1920x1080)',
-- 业务信息
`description` varchar(200) DEFAULT NULL COMMENT '文件描述说明',
`sort_order` int(11) DEFAULT 0 COMMENT '排序顺序',
-- 主键和索引
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_deleted` (`deleted`),
KEY `idx_order_id` (`order_id`),
KEY `idx_upload_stage` (`upload_stage`),
KEY `idx_uploader_id` (`uploader_id`),
KEY `idx_create_time` (`create_time`),
KEY `idx_file_type` (`file_type`),
KEY `idx_order_stage` (`order_id`, `upload_stage`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报修附件表';
```
### 3. 维修进度表 (pm_repair_progress)
> **进度跟踪表**:记录维修过程中的每一个状态变更和进度更新
```sql
-- ----------------------------
-- Table structure for pm_repair_progress
-- ----------------------------
DROP TABLE IF EXISTS `pm_repair_progress`;
CREATE TABLE `pm_repair_progress` (
-- 标准基础字段(必须)
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
-- 关联信息
`order_id` bigint(20) NOT NULL COMMENT '报修工单ID,关联pm_repair_order.id',
-- 进度信息
`progress_type` char(1) NOT NULL COMMENT '进度类型:1-工单分派,2-接收确认,3-到达现场,4-开始维修,5-进度更新,6-完成维修,7-用户评价,8-工单归档,9-其他',
`progress_status` varchar(50) NOT NULL COMMENT '进度状态描述',
`progress_detail` text DEFAULT NULL COMMENT '进度详细描述',
-- 操作人信息
`operator_id` bigint(20) NOT NULL COMMENT '操作人ID,关联sys_user.id',
`operator_name` varchar(50) NOT NULL COMMENT '操作人姓名',
`operator_role` varchar(20) NOT NULL COMMENT '操作人角色:user-用户,admin-管理员,worker-维修员',
-- 位置信息
`location_info` varchar(200) DEFAULT NULL COMMENT '操作位置信息',
`gps_latitude` decimal(10,7) DEFAULT NULL COMMENT 'GPS纬度',
`gps_longitude` decimal(10,7) DEFAULT NULL COMMENT 'GPS经度',
-- 时间信息
`operation_time` datetime NOT NULL COMMENT '操作时间',
`estimated_duration` int(11) DEFAULT NULL COMMENT '预计耗时(分钟)',
-- 附加信息
`attachment_ids` varchar(500) DEFAULT NULL COMMENT '关联附件ID列表(逗号分隔)',
`next_step` varchar(200) DEFAULT NULL COMMENT '下一步计划',
`issues_encountered` varchar(500) DEFAULT NULL COMMENT '遇到的问题',
`materials_needed` varchar(200) DEFAULT NULL COMMENT '需要的材料',
-- 其他信息
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
-- 主键和索引
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_deleted` (`deleted`),
KEY `idx_order_id` (`order_id`),
KEY `idx_progress_type` (`progress_type`),
KEY `idx_operator_id` (`operator_id`),
KEY `idx_operation_time` (`operation_time`),
KEY `idx_create_time` (`create_time`),
KEY `idx_order_time` (`order_id`, `operation_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='维修进度表';
```
### 4. 服务评价表 (pm_service_evaluation)
> **评价反馈表**:存储用户对维修服务的多维度评价和反馈信息
```sql
-- ----------------------------
-- Table structure for pm_service_evaluation
-- ----------------------------
DROP TABLE IF EXISTS `pm_service_evaluation`;
CREATE TABLE `pm_service_evaluation` (
-- 标准基础字段(必须)
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
-- 关联信息
`order_id` bigint(20) NOT NULL COMMENT '报修工单ID,关联pm_repair_order.id',
`evaluator_id` bigint(20) NOT NULL COMMENT '评价人ID,关联sys_user.id',
`evaluator_name` varchar(50) NOT NULL COMMENT '评价人姓名',
`evaluated_worker_id` bigint(20) NOT NULL COMMENT '被评价维修员ID,关联sys_user.id',
`evaluated_worker_name` varchar(50) NOT NULL COMMENT '被评价维修员姓名',
-- 评价得分(1-5星,支持小数)
`overall_score` decimal(3,1) NOT NULL COMMENT '综合评价得分(1.0-5.0)',
`quality_score` decimal(3,1) NOT NULL COMMENT '维修质量得分(1.0-5.0)',
`attitude_score` decimal(3,1) NOT NULL COMMENT '服务态度得分(1.0-5.0)',
`response_speed_score` decimal(3,1) NOT NULL COMMENT '响应速度得分(1.0-5.0)',
`communication_score` decimal(3,1) NOT NULL COMMENT '沟通效果得分(1.0-5.0)',
-- 评价内容
`evaluation_content` text DEFAULT NULL COMMENT '文字评价内容',
`satisfaction_level` char(1) NOT NULL COMMENT '满意度等级:1-非常满意,2-满意,3-一般,4-不满意,5-非常不满意',
-- 评价设置
`is_anonymous` tinyint(1) DEFAULT 0 COMMENT '是否匿名评价(0-实名,1-匿名)',
`is_public` tinyint(1) DEFAULT 1 COMMENT '是否公开显示(0-不公开,1-公开)',
-- 时间信息
`evaluation_time` datetime NOT NULL COMMENT '评价时间',
`service_start_time` datetime DEFAULT NULL COMMENT '服务开始时间',
`service_end_time` datetime DEFAULT NULL COMMENT '服务结束时间',
`service_duration` int(11) DEFAULT NULL COMMENT '服务时长(分钟)',
-- 标签和建议
`positive_tags` varchar(200) DEFAULT NULL COMMENT '正面标签(逗号分隔)',
`negative_tags` varchar(200) DEFAULT NULL COMMENT '负面标签(逗号分隔)',
`improvement_suggestions` varchar(500) DEFAULT NULL COMMENT '改进建议',
-- 其他信息
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
-- 主键和索引
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_order_evaluation` (`order_id`, `tenant_id`),
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_deleted` (`deleted`),
KEY `idx_evaluator_id` (`evaluator_id`),
KEY `idx_evaluated_worker_id` (`evaluated_worker_id`),
KEY `idx_overall_score` (`overall_score`),
KEY `idx_satisfaction_level` (`satisfaction_level`),
KEY `idx_evaluation_time` (`evaluation_time`),
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务评价表';
```
### 5. 维修类型表 (pm_repair_category)
> **分类字典表**:存储维修类型的分类信息,支持层级结构
```sql
-- ----------------------------
-- Table structure for pm_repair_category
-- ----------------------------
DROP TABLE IF EXISTS `pm_repair_category`;
CREATE TABLE `pm_repair_category` (
-- 标准基础字段(必须)
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
-- 分类信息
`category_name` varchar(50) NOT NULL COMMENT '类型名称',
`category_code` varchar(20) NOT NULL COMMENT '类型编码',
`category_description` varchar(200) DEFAULT NULL COMMENT '类型描述',
-- 层级结构
`parent_id` bigint(20) DEFAULT 0 COMMENT '父级ID,顶级为0',
`ancestor_ids` varchar(500) DEFAULT '0' COMMENT '祖级列表(逗号分隔)',
`level_depth` tinyint(2) DEFAULT 1 COMMENT '层级深度(1-顶级,2-二级...)',
`children_count` int(11) DEFAULT 0 COMMENT '子类数量',
-- 专业技能
`required_skills` varchar(200) DEFAULT NULL COMMENT '所需专业技能(逗号分隔)',
`skill_level` char(1) DEFAULT '1' COMMENT '技能等级要求:1-初级,2-中级,3-高级',
-- 时间和成本预估
`estimated_duration` int(11) DEFAULT NULL COMMENT '预估维修时长(分钟)',
`standard_cost` decimal(10,2) DEFAULT NULL COMMENT '标准成本(元)',
-- 显示控制
`icon_url` varchar(200) DEFAULT NULL COMMENT '分类图标URL',
`color_code` varchar(10) DEFAULT '#1890ff' COMMENT '分类颜色代码',
`sort_order` int(11) DEFAULT 0 COMMENT '排序顺序',
`status` char(1) DEFAULT '1' COMMENT '状态(0-停用,1-正常)',
-- 统计信息
`usage_count` int(11) DEFAULT 0 COMMENT '使用次数统计',
`last_used_time` datetime DEFAULT NULL COMMENT '最后使用时间',
-- 其他信息
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
-- 主键和索引
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_category_code` (`category_code`, `tenant_id`),
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_deleted` (`deleted`),
KEY `idx_parent_id` (`parent_id`),
KEY `idx_status` (`status`),
KEY `idx_sort_order` (`sort_order`),
KEY `idx_level_depth` (`level_depth`),
KEY `idx_usage_count` (`usage_count`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='维修类型表';
```
### 6. 系统配置表 (pm_system_config)
> **配置管理表**:存储物业报修模块的系统参数和配置信息
```sql
-- ----------------------------
-- Table structure for pm_system_config
-- ----------------------------
DROP TABLE IF EXISTS `pm_system_config`;
CREATE TABLE `pm_system_config` (
-- 标准基础字段(必须)
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
-- 配置信息
`config_key` varchar(100) NOT NULL COMMENT '配置键名',
`config_value` text DEFAULT NULL COMMENT '配置值',
`config_type` varchar(20) NOT NULL COMMENT '配置类型:string-字符串,number-数字,boolean-布尔,json-JSON对象',
`config_group` varchar(50) NOT NULL COMMENT '配置分组:file-文件设置,time-时间设置,notice-通知设置,workflow-流程设置',
-- 配置描述
`config_name` varchar(100) NOT NULL COMMENT '配置名称',
`config_description` varchar(500) DEFAULT NULL COMMENT '配置描述说明',
`default_value` text DEFAULT NULL COMMENT '默认值',
-- 配置约束
`is_system` tinyint(1) DEFAULT 0 COMMENT '是否系统内置(0-否,1-是,系统内置不可删除)',
`is_editable` tinyint(1) DEFAULT 1 COMMENT '是否可编辑(0-否,1-是)',
`validation_rule` varchar(200) DEFAULT NULL COMMENT '验证规则(正则表达式或范围)',
-- 显示控制
`sort_order` int(11) DEFAULT 0 COMMENT '排序顺序',
`status` char(1) DEFAULT '1' COMMENT '状态(0-停用,1-正常)',
-- 其他信息
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
-- 主键和索引
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_config_key` (`config_key`, `tenant_id`),
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_deleted` (`deleted`),
KEY `idx_config_group` (`config_group`),
KEY `idx_status` (`status`),
KEY `idx_sort_order` (`sort_order`),
KEY `idx_is_system` (`is_system`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统配置表';
```
## 📝 数据字典
### 1. 工单状态枚举 (order_status)
| 状态码 | 状态名称 | 描述 | 可执行操作 |
| ------ | -------- | -------------------------- | ------------------------ |
| 1 | 待分派 | 用户刚提交,等待管理员分派 | 分派、取消、修改 |
| 2 | 已分派 | 已分派给维修员,等待接收 | 接收、拒绝、重新分派 |
| 3 | 进行中 | 维修员已接收,正在处理 | 更新进度、完成、上报问题 |
| 4 | 已完成 | 维修已完成,等待评价 | 评价、重新打开 |
| 5 | 已评价 | 用户已评价,等待归档 | 归档 |
| 6 | 已归档 | 工单已归档,流程结束 | 查看历史 |
| 9 | 已取消 | 工单已取消 | 查看原因 |
### 2. 紧急程度枚举 (priority_level)
| 等级 | 名称 | 描述 | 响应时限 | 颜色标识 |
| ---- | -------- | ------------------ | --------- | -------- |
| 1 | 非常紧急 | 影响安全或正常运转 | 1 小时内 | 红色 |
| 2 | 紧急 | 影响重要功能使用 | 4 小时内 | 橙色 |
| 3 | 一般 | 常规维修需求 | 24 小时内 | 蓝色 |
| 4 | 不紧急 | 不影响使用的问题 | 72 小时内 | 绿色 |
| 5 | 可延后 | 可以安排时间处理 | 一周内 | 灰色 |
### 3. 进度类型枚举 (progress_type)
| 类型码 | 类型名称 | 操作人角色 | 描述 |
| ------ | -------- | ----------- | ------------------ |
| 1 | 工单分派 | 管理员 | 工单分派给维修员 |
| 2 | 接收确认 | 维修员 | 维修员确认接收工单 |
| 3 | 到达现场 | 维修员 | 维修员到达维修现场 |
| 4 | 开始维修 | 维修员 | 开始进行维修作业 |
| 5 | 进度更新 | 维修员 | 维修过程进度更新 |
| 6 | 完成维修 | 维修员 | 维修工作已完成 |
| 7 | 用户评价 | 用户 | 用户提交服务评价 |
| 8 | 工单归档 | 系统/管理员 | 工单归档处理 |
| 9 | 其他 | 任意角色 | 其他类型操作 |
### 4. 文件类型枚举 (file_type)
| 类型 | 名称 | 支持格式 | 大小限制 |
| ----- | ---- | ------------------- | -------- |
| image | 图片 | jpg, jpeg, png, gif | 5MB |
| video | 视频 | mp4, avi, mov | 50MB |
### 5. 上传阶段枚举 (upload_stage)
| 阶段码 | 阶段名称 | 描述 |
| ------ | -------- | ---------------------- |
| 1 | 报修申请 | 用户提交报修时上传 |
| 2 | 维修过程 | 维修员维修过程中上传 |
| 3 | 完成确认 | 维修完成时上传结果照片 |
## 🔧 索引优化策略
### 1. 核心业务查询索引
```sql
-- 报修工单表的核心查询索引
-- 1. 按状态和时间查询(管理员常用)
CREATE INDEX idx_status_time ON pm_repair_order (order_status, create_time);
-- 2. 按维修员查询其工单(维修员常用)
CREATE INDEX idx_assignee_status ON pm_repair_order (assignee_id, order_status);
-- 3. 按报修人查询(用户查看自己的工单)
CREATE INDEX idx_reporter_time ON pm_repair_order (reporter_id, create_time);
-- 4. 按紧急程度和分派时间查询(工单分派)
CREATE INDEX idx_priority_assign ON pm_repair_order (priority_level, assign_time);
```
### 2. 附件查询索引
```sql
-- 附件表的查询索引
-- 1. 按工单查询附件(最常用)
CREATE INDEX idx_order_stage ON pm_repair_attachment (order_id, upload_stage);
-- 2. 按上传者查询附件
CREATE INDEX idx_uploader_time ON pm_repair_attachment (uploader_id, create_time);
```
### 3. 进度查询索引
```sql
-- 进度表的查询索引
-- 1. 按工单查询进度(时间线显示)
CREATE INDEX idx_order_operation_time ON pm_repair_progress (order_id, operation_time);
-- 2. 按操作人查询进度
CREATE INDEX idx_operator_time ON pm_repair_progress (operator_id, operation_time);
```
## 📊 数据存储预估
### 表数据量预估
| 表名 | 日增长量 | 年数据量 | 存储空间预估 |
| --------------------- | ---------- | ------------ | ------------ |
| pm_repair_order | 50-100 条 | 2-4 万条 | 50-100MB |
| pm_repair_attachment | 200-400 条 | 8-16 万条 | 100-200MB |
| pm_repair_progress | 300-600 条 | 12-24 万条 | 150-300MB |
| pm_service_evaluation | 40-80 条 | 1.6-3.2 万条 | 20-40MB |
| pm_repair_category | 0-5 条 | 100-200 条 | <1MB |
| pm_system_config | 0-2 条 | 50-100 条 | <1MB |
### 存储优化建议
1. **定期归档**:超过 2 年的已完成工单可归档到历史表
2. **附件清理**:定期清理无效或重复的附件文件
3. **索引维护**:定期重建和优化索引
4. **分区策略**:可考虑按年份或状态分区存储
## 🔄 数据初始化脚本
### 1. 维修类型初始化数据
```sql
-- 插入基础维修类型分类
INSERT INTO `pm_repair_category` (
`id`, `tenant_id`, `category_name`, `category_code`, `category_description`,
`parent_id`, `level_depth`, `required_skills`, `skill_level`,
`estimated_duration`, `icon_url`, `color_code`, `sort_order`, `status`,
`create_time`, `create_by`
) VALUES
(1, '000000', '电路维修', 'ELECTRIC', '电路、照明、开关、插座等电气设备维修', 0, 1, '电工技能', '2', 60, '/icons/electric.svg', '#ff6b35', 1, '1', NOW(), 1),
(2, '000000', '水暖维修', 'PLUMBING', '水管、暖气、卫生间、厨房设备维修', 0, 1, '水暖技能', '2', 90, '/icons/plumbing.svg', '#1890ff', 2, '1', NOW(), 1),
(3, '000000', '土建维修', 'CONSTRUCTION', '墙面、地面、天花板、门窗等土建维修', 0, 1, '泥工技能,木工技能', '2', 120, '/icons/construction.svg', '#52c41a', 3, '1', NOW(), 1),
(4, '000000', '设备维修', 'EQUIPMENT', '空调、电梯、监控等设备维修', 0, 1, '设备维修技能', '3', 90, '/icons/equipment.svg', '#722ed1', 4, '1', NOW(), 1),
(5, '000000', '园林维修', 'GARDEN', '绿化、草坪、树木修剪等园林维护', 0, 1, '园林技能', '1', 45, '/icons/garden.svg', '#13c2c2', 5, '1', NOW(), 1),
(6, '000000', '清洁维护', 'CLEANING', '日常清洁、垃圾处理、环境维护', 0, 1, '清洁技能', '1', 30, '/icons/cleaning.svg', '#fa8c16', 6, '1', NOW(), 1);
```
### 2. 系统配置初始化数据
```sql
-- 插入系统配置参数
INSERT INTO `pm_system_config` (
`id`, `tenant_id`, `config_key`, `config_value`, `config_type`, `config_group`,
`config_name`, `config_description`, `default_value`, `is_system`, `is_editable`,
`sort_order`, `status`, `create_time`, `create_by`
) VALUES
(1, '000000', 'file.upload.image.max_size', '5242880', 'number', 'file', '图片文件最大大小', '图片文件上传的最大字节数(5MB)', '5242880', 1, 1, 1, '1', NOW(), 1),
(2, '000000', 'file.upload.video.max_size', '52428800', 'number', 'file', '视频文件最大大小', '视频文件上传的最大字节数(50MB)', '52428800', 1, 1, 2, '1', NOW(), 1),
(3, '000000', 'file.upload.allowed_image_types', 'jpg,jpeg,png,gif', 'string', 'file', '允许的图片类型', '允许上传的图片文件类型(逗号分隔)', 'jpg,jpeg,png,gif', 1, 1, 3, '1', NOW(), 1),
(4, '000000', 'file.upload.allowed_video_types', 'mp4,avi,mov', 'string', 'file', '允许的视频类型', '允许上传的视频文件类型(逗号分隔)', 'mp4,avi,mov', 1, 1, 4, '1', NOW(), 1),
(5, '000000', 'workflow.auto_assign_enabled', 'true', 'boolean', 'workflow', '启用自动分派', '是否启用智能自动分派功能', 'false', 1, 1, 11, '1', NOW(), 1),
(6, '000000', 'workflow.auto_archive_days', '7', 'number', 'workflow', '自动归档天数', '工单评价后多少天自动归档', '7', 1, 1, 12, '1', NOW(), 1),
(7, '000000', 'time.priority1_response_hours', '1', 'number', 'time', '非常紧急响应时限', '非常紧急工单的响应时限(小时)', '1', 1, 1, 21, '1', NOW(), 1),
(8, '000000', 'time.priority2_response_hours', '4', 'number', 'time', '紧急响应时限', '紧急工单的响应时限(小时)', '4', 1, 1, 22, '1', NOW(), 1),
(9, '000000', 'time.priority3_response_hours', '24', 'number', 'time', '一般响应时限', '一般工单的响应时限(小时)', '24', 1, 1, 23, '1', NOW(), 1),
(10, '000000', 'time.working_hours_start', '08:00', 'string', 'time', '工作时间开始', '工作日开始时间(HH:mm格式)', '08:00', 1, 1, 31, '1', NOW(), 1),
(11, '000000', 'time.working_hours_end', '18:00', 'string', 'time', '工作时间结束', '工作日结束时间(HH:mm格式)', '18:00', 1, 1, 32, '1', NOW(), 1);
```
## 📋 数据迁移计划
### 迁移脚本版本规划
1. **V1.0.1** - 创建基础表结构
2. **V1.0.2** - 插入初始化数据
3. **V1.0.3** - 创建性能优化索引
4. **V1.1.0** - 功能扩展字段添加
### 部署验证清单
- [ ] 表结构创建成功
- [ ] 基础索引创建完成
- [ ] 初始化数据插入成功
- [ ] 性能索引创建完成
- [ ] 数据完整性约束验证
- [ ] 权限配置正确
- [ ] 备份恢复测试通过
---
**文档状态**:✅ 初稿完成
**关联文档**:功能需求清单.md
**下一步**:API 接口设计
@@ -0,0 +1,591 @@
# 物业报修管理模块 - 业务需求说明
## 📋 文档信息
**文档名称**:物业报修管理模块业务需求说明
**文档版本**:v1.0
**创建日期**:2025-01-23
**创建人员**:系统分析师
**审核状态**:待审核
## 🎯 项目背景
### 现状分析
目前学校物业维修服务存在以下问题:
#### 🔴 用户报修方面
- **报修渠道单一**:主要依赖电话报修,缺乏在线渠道
- **信息记录不全**:电话报修信息容易遗漏,无法保存现场照片
- **进度不透明**:用户无法实时了解维修进度
- **反馈渠道缺失**:维修完成后缺乏服务质量反馈机制
#### 🔴 管理方面
- **工单管理混乱**:缺乏统一的工单管理系统
- **分派效率低下**:人工分派工单,容易出现负荷不均
- **数据统计困难**:无法有效统计维修效率和满意度数据
- **绩效考核缺失**:缺乏客观的维修员绩效评价体系
#### 🔴 维修员方面
- **工单接收不便**:需要通过电话或纸质单据接收任务
- **进度更新困难**:无法及时更新维修进度给用户
- **工作量统计难**:个人工作量和效率缺乏准确统计
### 建设目标
构建一个完整的数字化物业维修管理平台,实现:
1. **服务便民化**:提供便捷的在线报修渠道
2. **管理智能化**:实现智能工单分派和进度跟踪
3. **流程标准化**:建立标准化的维修业务流程
4. **数据可视化**:提供全面的数据统计和分析
5. **服务透明化**:实现维修进度的实时透明展示
## 🔍 业务需求分析
### 核心业务场景
#### 场景 1:学生宿舍报修
**背景**:学生宿舍水龙头漏水需要维修
**当前流程**:
1. 学生发现问题 → 2. 拨打后勤电话 → 3. 口头描述问题 → 4. 等待维修 → 5. 维修员上门 → 6. 完成维修
**期望流程**:
1. 学生在线填写报修单 → 2. 上传现场照片 → 3. 系统自动通知管理员 → 4. 管理员分派维修员 → 5. 维修员接单并现场维修 → 6. 学生在线评价
#### 场景 2:教学楼设备维修
**背景**:教室多媒体设备故障需要紧急维修
**业务特点**:
- 影响教学,需要紧急处理
- 需要专业维修员处理
- 需要准确记录设备型号和故障现象
#### 场景 3:公共区域维修
**背景**:校园路灯损坏需要维修
**业务特点**:
- 影响校园安全,优先级高
- 可能需要外部供应商配合
- 需要考虑天气等外部因素
### 主要业务流程
#### 1. 报修申请流程
```mermaid
graph TD
A[用户发现问题] --> B[登录系统]
B --> C[填写报修信息]
C --> D[选择报修类型]
D --> E[上传现场照片/视频]
E --> F[设置期望完成时间]
F --> G[提交报修申请]
G --> H[系统生成报修单号]
H --> I[发送确认通知]
I --> J[等待处理]
```
**详细说明**:
- **步骤 1-2**:用户需要先登录系统,确保身份可追溯
- **步骤 3-4**:填写详细的报修信息,选择正确的维修类型便于分派
- **步骤 5**:支持上传多张图片或视频,帮助维修员提前了解问题
- **步骤 6**:用户可以设置期望完成时间,但不强制
- **步骤 7-9**:系统自动处理后续流程,确保信息不遗漏
#### 2. 工单分派流程
```mermaid
graph TD
A[管理员接收新报修单] --> B[查看报修详情]
B --> C[评估维修类型和紧急程度]
C --> D[查看维修员工作负荷]
D --> E[选择合适的维修员]
E --> F[确认分派]
F --> G[系统更新工单状态]
G --> H[通知维修员]
H --> I[通知报修用户]
```
**业务规则**:
- **紧急工单优先**:紧急程度高的工单优先分派
- **专业匹配**:根据维修类型选择专业对口的维修员
- **负荷均衡**:考虑维修员当前工作量,避免过度集中
- **地理位置**:优先分派给距离报修地点较近的维修员
#### 3. 维修执行流程
```mermaid
graph TD
A[维修员接收工单] --> B[确认接单]
B --> C[联系报修人确认时间]
C --> D[到达现场]
D --> E[开始维修]
E --> F[遇到问题?]
F -->|是| G[上报管理员]
F -->|否| H[继续维修]
G --> I[等待指示]
I --> H
H --> J[完成维修]
J --> K[拍照记录结果]
K --> L[提交维修报告]
L --> M[等待用户确认]
```
**关键节点**:
- **接单确认**:维修员必须主动确认接单,避免工单遗漏
- **进度更新**:维修过程中应及时更新进度状态
- **问题上报**:遇到技术问题或需要配件时应及时上报
- **结果记录**:维修完成后必须拍照记录维修结果
#### 4. 服务评价流程
```mermaid
graph TD
A[用户收到完成通知] --> B[查看维修结果]
B --> C[填写服务评价]
C --> D[评分各个维度]
D --> E[添加文字评价]
E --> F[提交评价]
F --> G[系统计算满意度]
G --> H[更新维修员绩效]
H --> I[归档报修单]
```
**评价维度**:
- **维修质量**:维修效果是否满意
- **服务态度**:维修员服务态度评价
- **响应速度**:从报修到开始维修的时间
- **沟通效果**:维修过程中的沟通是否顺畅
## 👥 用户角色分析
### 1. 普通用户(报修人)
#### 用户特征
- **身份**:在校学生、教职工
- **年龄**:18-60 岁
- **技术水平**:基础到中等
- **使用场景**:发现问题需要维修时
#### 核心需求
- **便捷报修**:简单易用的报修界面
- **进度查询**:随时了解维修进度
- **问题沟通**:与维修员直接沟通的渠道
- **服务反馈**:对维修服务进行评价
#### 使用频次
- **低频用户**:偶尔遇到问题才使用
- **重点关注**:界面简洁、操作简单
### 2. 物业管理员
#### 用户特征
- **身份**:物业管理部门工作人员
- **工作内容**:维修工单管理、资源调度
- **技术水平**:中等到高级
- **使用场景**:日常工作时间
#### 核心需求
- **工单管理**:查看、分派、跟踪所有工单
- **资源调度**:合理分配维修人员
- **数据统计**:了解维修业务整体情况
- **绩效管理**:维修员工作量和质量评估
#### 使用频次
- **高频用户**:每日多次使用
- **重点关注**:功能全面、效率高、数据准确
### 3. 物业维修员
#### 用户特征
- **身份**:专业维修技术人员
- **工作特点**:流动性强、现场作业
- **技术水平**:基础到中等
- **使用场景**:接收工单、现场维修时
#### 核心需求
- **工单接收**:及时接收分派的工单
- **进度更新**:方便地更新维修进度
- **问题上报**:遇到困难时快速求助
- **工作记录**:记录维修过程和结果
#### 使用频次
- **中频用户**:根据工单数量使用
- **重点关注**:移动端适配、操作简便
## 📊 业务规则定义
### 1. 报修单状态管理
#### 状态定义
```
PENDING - 待分派 (用户提交后的初始状态)
ASSIGNED - 已分派 (管理员分派给维修员)
ACCEPTED - 已接单 (维修员确认接单)
IN_PROGRESS - 进行中 (维修员开始现场维修)
COMPLETED - 已完成 (维修员提交完成报告)
EVALUATED - 已评价 (用户提交服务评价)
CLOSED - 已关闭 (最终状态,工单归档)
CANCELLED - 已取消 (用户或管理员取消)
```
#### 状态流转规则
- **PENDING → ASSIGNED**:管理员分派工单
- **ASSIGNED → ACCEPTED**:维修员确认接单
- **ACCEPTED → IN_PROGRESS**:维修员开始维修
- **IN_PROGRESS → COMPLETED**:维修员完成维修
- **COMPLETED → EVALUATED**:用户提交评价
- **EVALUATED → CLOSED**:系统自动归档
- **任何状态 → CANCELLED**:可以取消(需要权限)
### 2. 紧急程度分级
#### 分级标准
```
1级 - 一般问题 (7天内完成)
2级 - 较急问题 (3天内完成)
3级 - 紧急问题 (1天内完成)
4级 - 很紧急 (4小时内完成)
5级 - 特别紧急 (1小时内响应)
```
#### 处理规则
- **5 级问题**:立即通知管理员,优先分派
- **4 级问题**:当天必须安排维修员
- **3 级问题**:影响正常使用的问题
- **2 级问题**:不影响使用但需要及时处理
- **1 级问题**:可以统筹安排的小问题
### 3. 维修类型分类
#### 专业分类
```
电路维修 - 电器、照明、配电等
水暖维修 - 给排水、暖气、管道等
土建维修 - 门窗、墙面、地面等
设备维修 - 多媒体、电梯、空调等
园林维修 - 绿化、道路、环境等
其他维修 - 不属于以上分类的问题
```
#### 分派规则
- **专业匹配**:优先分派给对应专业的维修员
- **跨专业**:复杂问题可以分派给多个维修员
- **外包处理**:超出能力范围的问题转外包
### 4. 工作时间管理
#### 标准工作时间
```
工作日:08:00-12:00, 14:00-18:00
周末:09:00-12:00, 14:00-17:00
节假日:值班制,紧急问题处理
```
#### 响应时间要求
- **工作时间内**:1 小时内响应
- **非工作时间**:紧急问题 4 小时内响应
- **节假日**:特急问题 2 小时内响应
## 🔐 权限需求分析
### 权限分级
#### 1. 普通用户权限
- **报修申请**:提交新的报修申请
- **进度查看**:查看自己提交的报修单进度
- **信息修改**:修改未分派的报修单信息
- **服务评价**:对完成的维修服务进行评价
- **历史记录**:查看自己的历史报修记录
#### 2. 维修员权限
- **工单接收**:查看分派给自己的工单
- **进度更新**:更新维修进度状态
- **结果提交**:提交维修完成报告
- **问题上报**:向管理员上报技术问题
- **个人统计**:查看个人工作量统计
#### 3. 管理员权限
- **全局查看**:查看所有报修单和工单
- **工单分派**:将工单分派给维修员
- **人员管理**:管理维修员信息和权限
- **数据统计**:查看各类统计分析报表
- **系统配置**:配置维修类型、紧急级别等
#### 4. 超级管理员权限
- **用户管理**:管理所有用户账号
- **权限分配**:分配各角色权限
- **系统设置**:系统参数配置
- **数据导出**:导出各类业务数据
## 📈 数据需求分析
### 核心数据实体
#### 1. 报修单数据
```
基础信息:报修单号、标题、描述、地点
联系信息:联系人、电话、邮箱
分类信息:维修类型、紧急程度
时间信息:期望完成时间、创建时间
状态信息:当前状态、状态变更历史
关联信息:分派维修员、处理结果
```
#### 2. 用户数据
```
基本信息:姓名、工号、联系方式
角色信息:用户类型、权限级别
专业信息:维修员专业技能、工作区域
统计信息:报修次数、完成效率、满意度
```
#### 3. 附件数据
```
文件信息:文件名、大小、类型、路径
关联信息:所属报修单、上传时间
分类信息:问题图片、维修过程图、完成照片
```
### 数据统计需求
#### 1. 业务统计
- **报修量统计**:按时间、类型、地点统计报修数量
- **处理效率**:平均处理时长、及时完成率
- **维修类型分布**:各类维修问题的占比
- **地点分布**:各区域报修频次分析
#### 2. 人员统计
- **维修员工作量**:每人处理的工单数量
- **维修员效率**:平均处理时长、返工率
- **用户活跃度**:活跃用户数、报修频次
#### 3. 质量统计
- **用户满意度**:各维度评分统计
- **服务质量趋势**:满意度变化趋势
- **问题分析**:低评分工单分析
## 🔄 集成需求分析
### 内部系统集成
#### 1. 用户管理系统集成
- **单点登录**:使用统一的用户认证系统
- **用户信息同步**:获取用户基本信息
- **权限验证**:基于统一的权限管理
#### 2. 文件存储系统集成
- **文件上传**:支持图片、视频文件上传
- **文件管理**:文件的存储、访问、删除
- **访问控制**:确保文件访问安全
### 外部系统对接
#### 1. 工作流引擎对接
- **流程定义**:在工作流引擎中定义维修流程
- **状态同步**:工作流状态与业务状态同步
- **任务分派**:通过工作流实现自动化分派
#### 2. 移动端对接
- **API 接口**:提供移动端所需的 API 接口
- **数据同步**:确保移动端和 PC 端数据一致
## 📝 验收标准
### 功能验收标准
#### 1. 报修申请功能
- [ ] 用户能够成功提交报修申请
- [ ] 支持上传图片和视频文件
- [ ] 自动生成唯一的报修单号
- [ ] 提交成功确认提示
#### 2. 工单管理功能
- [ ] 管理员能够查看所有待处理工单
- [ ] 支持按条件筛选和搜索工单
- [ ] 能够分派工单给维修员
- [ ] 分派后状态自动更新
- [ ] 支持工单状态批量操作
#### 3. 维修处理功能
- [ ] 维修员能够接收分派的工单
- [ ] 支持更新维修进度状态
- [ ] 能够上传维修过程照片
- [ ] 完成后能够提交维修报告
- [ ] 支持问题上报功能
#### 4. 评价反馈功能
- [ ] 用户能够对完成的维修进行评价
- [ ] 支持多维度评分和文字评价
- [ ] 评价结果影响维修员绩效
- [ ] 生成满意度统计报表
### 性能验收标准
#### 1. 响应时间
- [ ] 页面加载时间 < 3 秒
- [ ] 接口响应时间 < 500ms
- [ ] 文件上传速度 > 1MB/s
- [ ] 数据查询响应 < 1 秒
#### 2. 并发处理
- [ ] 支持 100 个用户同时在线
- [ ] 支持 50 个文件同时上传
- [ ] 数据库连接池稳定运行
- [ ] 系统内存使用 < 80%
#### 3. 可用性
- [ ] 系统可用性 > 99.5%
- [ ] 故障恢复时间 < 30 分钟
- [ ] 数据备份完整有效
- [ ] 安全漏洞修复及时
### 用户体验验收标准
#### 1. 易用性
- [ ] 新用户 5 分钟内学会基本操作
- [ ] 报修申请流程 < 3 步完成
- [ ] 界面布局清晰合理
- [ ] 移动端操作便捷
#### 2. 可访问性
- [ ] 支持主流浏览器
- [ ] 兼容移动设备
- [ ] 字体大小适宜
- [ ] 色彩搭配合理
## 📋 风险分析
### 技术风险
#### 1. 文件上传风险
- **风险描述**:大文件上传可能导致系统性能问题
- **影响程度**:中等
- **应对措施**:
- 限制文件大小和类型
- 使用分片上传技术
- 配置 CDN 加速
#### 2. 数据安全风险
- **风险描述**:用户敏感信息可能泄露
- **影响程度**:高
- **应对措施**:
- 数据加密存储
- 访问权限控制
- 定期安全审计
### 业务风险
#### 1. 用户接受度风险
- **风险描述**:用户不愿意使用新系统
- **影响程度**:高
- **应对措施**:
- 用户培训和引导
- 界面简化优化
- 逐步推广使用
#### 2. 业务流程风险
- **风险描述**:新流程与现有习惯冲突
- **影响程度**:中等
- **应对措施**:
- 充分调研现有流程
- 逐步优化调整
- 保留必要的传统渠道
### 运维风险
#### 1. 系统稳定性风险
- **风险描述**:系统故障影响正常维修工作
- **影响程度**:高
- **应对措施**:
- 完善的监控体系
- 快速故障响应机制
- 备用工作方案
---
## 📝 附录
### A. 术语表
| 术语 | 定义 |
| -------- | ------------------------------------------ |
| 报修单 | 用户提交的维修申请,包含问题描述和基本信息 |
| 工单 | 分派给维修员的工作任务,由报修单转化而来 |
| 紧急程度 | 报修问题的优先级,分为 1-5 级 |
| 维修类型 | 按专业分类的维修问题类别 |
| 服务评价 | 用户对维修服务质量的反馈评分 |
### B. 参考资料
- 《高校后勤管理信息化建设指南》
- 《物业管理服务规范》
- 《信息系统安全技术要求》
- 《用户体验设计最佳实践》
---
**文档状态**:✅ 初稿完成
**下一步**:等待需求方审核确认
**联系人**:[项目经理联系方式]
@@ -0,0 +1,448 @@
# 物业报修管理模块 - 功能需求清单
## 📋 文档信息
**文档名称**:物业报修管理模块功能需求清单
**文档版本**:v1.0
**创建日期**:2025-01-23
**依据文档**:业务需求说明.md
## 🎯 功能分类概述
### 核心功能模块
1. **报修申请管理** - 用户端报修申请相关功能
2. **工单分派管理** - 管理员端工单处理功能
3. **维修执行管理** - 维修员端工作功能
4. **评价反馈管理** - 用户端评价功能
5. **统计分析管理** - 数据统计和分析功能
6. **系统管理功能** - 基础配置和管理功能
## 📝 详细功能清单
### 1. 报修申请管理
#### 1.1 报修申请提交
- **功能编号**:F001
- **功能名称**:在线报修申请
- **功能描述**:用户通过 Web 或移动端提交报修申请
- **优先级**:高
- **涉及角色**:普通用户
**详细需求**:
- [ ] 用户登录验证
- [ ] 报修基本信息填写(标题、描述、地点)
- [ ] 报修类型选择(电路、水暖、土建、设备、园林等)
- [ ] 紧急程度设置(1-5 级)
- [ ] 联系方式确认(姓名、电话)
- [ ] 期望完成时间设置(可选)
- [ ] 表单数据验证
- [ ] 提交成功确认
#### 1.2 附件上传功能
- **功能编号**:F002
- **功能名称**:多媒体文件上传
- **功能描述**:支持上传图片、视频等附件说明问题
- **优先级**:高
- **涉及角色**:普通用户
**详细需求**:
- [ ] 支持多文件选择上传
- [ ] 文件类型限制(图片:jpg/png/gif,视频:mp4/avi)
- [ ] 文件大小限制(图片 ≤5MB,视频 ≤50MB)
- [ ] 上传进度显示
- [ ] 文件预览功能
- [ ] 文件删除功能
- [ ] 错误处理和重试
#### 1.3 报修单查询
- **功能编号**:F003
- **功能名称**:个人报修单查询
- **功能描述**:用户查看自己提交的报修单状态和详情
- **优先级**:中
- **涉及角色**:普通用户
**详细需求**:
- [ ] 个人报修单列表展示
- [ ] 按状态筛选(全部、处理中、已完成等)
- [ ] 按时间排序查看
- [ ] 报修单详情查看
- [ ] 进度时间轴展示
- [ ] 附件查看和下载
#### 1.4 报修单修改
- **功能编号**:F004
- **功能名称**:报修单信息修改
- **功能描述**:用户可修改未分派的报修单信息
- **优先级**:低
- **涉及角色**:普通用户
**详细需求**:
- [ ] 仅允许修改待分派状态的报修单
- [ ] 支持修改描述、联系方式、期望时间
- [ ] 支持添加或删除附件
- [ ] 修改记录日志
### 2. 工单分派管理
#### 2.1 工单列表管理
- **功能编号**:F005
- **功能名称**:工单列表查看和管理
- **功能描述**:管理员查看和管理所有报修工单
- **优先级**:高
- **涉及角色**:物业管理员
**详细需求**:
- [ ] 分页显示所有工单列表
- [ ] 按状态筛选(待分派、已分派、进行中等)
- [ ] 按紧急程度筛选和排序
- [ ] 按报修类型筛选
- [ ] 按时间范围筛选
- [ ] 搜索功能(关键词、报修单号)
- [ ] 工单批量操作
- [ ] 导出工单数据
#### 2.2 工单详情查看
- **功能编号**:F006
- **功能名称**:工单详细信息查看
- **功能描述**:管理员查看工单的完整详细信息
- **优先级**:高
- **涉及角色**:物业管理员
**详细需求**:
- [ ] 报修基本信息展示
- [ ] 报修人联系信息
- [ ] 附件图片/视频查看
- [ ] 处理进度历史记录
- [ ] 分派历史记录
- [ ] 维修员反馈信息
- [ ] 用户评价信息(如有)
#### 2.3 工单分派功能
- **功能编号**:F007
- **功能名称**:工单分派给维修员
- **功能描述**:管理员将工单分派给合适的维修员
- **优先级**:高
- **涉及角色**:物业管理员
**详细需求**:
- [ ] 维修员列表展示(按专业分类)
- [ ] 维修员工作负荷显示
- [ ] 维修员专业技能标签
- [ ] 智能推荐合适的维修员
- [ ] 分派备注信息填写
- [ ] 分派确认和状态更新
- [ ] 批量分派功能
- [ ] 分派撤回功能
#### 2.4 工单状态管理
- **功能编号**:F008
- **功能名称**:工单状态变更管理
- **功能描述**:管理员手动调整工单状态
- **优先级**:中
- **涉及角色**:物业管理员
**详细需求**:
- [ ] 手动变更工单状态
- [ ] 状态变更原因记录
- [ ] 工单取消功能
- [ ] 工单重新分派
- [ ] 紧急程度调整
### 3. 维修执行管理
#### 3.1 个人工单管理
- **功能编号**:F009
- **功能名称**:维修员个人工单查看
- **功能描述**:维修员查看分派给自己的工单
- **优先级**:高
- **涉及角色**:物业维修员
**详细需求**:
- [ ] 个人工单列表展示
- [ ] 按状态分类显示
- [ ] 按紧急程度排序
- [ ] 工单详情查看
- [ ] 报修人联系信息
- [ ] 报修附件查看
- [ ] 工单导航和路线
#### 3.2 工单接收确认
- **功能编号**:F010
- **功能名称**:工单接收和确认
- **功能描述**:维修员确认接收分派的工单
- **优先级**:高
- **涉及角色**:物业维修员
**详细需求**:
- [ ] 工单接收确认
- [ ] 拒绝接收功能(需填写原因)
- [ ] 预计开始时间设置
- [ ] 接收状态同步
#### 3.3 维修进度更新
- **功能编号**:F011
- **功能名称**:维修进度状态更新
- **功能描述**:维修员更新维修进度状态
- **优先级**:高
- **涉及角色**:物业维修员
**详细需求**:
- [ ] 进度状态更新(到达现场、开始维修、暂停、继续等)
- [ ] 进度描述填写
- [ ] 维修过程照片上传
- [ ] 遇到问题上报功能
- [ ] 需要配件申请
- [ ] GPS 位置记录(移动端)
#### 3.4 维修完成提交
- **功能编号**:F012
- **功能名称**:维修完成结果提交
- **功能描述**:维修员提交维修完成报告
- **优先级**:高
- **涉及角色**:物业维修员
**详细需求**:
- [ ] 维修结果描述
- [ ] 完成照片上传
- [ ] 使用材料记录
- [ ] 维修时长记录
- [ ] 后续建议填写
- [ ] 完成确认提交
### 4. 评价反馈管理
#### 4.1 服务评价功能
- **功能编号**:F013
- **功能名称**:维修服务质量评价
- **功能描述**:用户对完成的维修服务进行评价
- **优先级**:中
- **涉及角色**:普通用户
**详细需求**:
- [ ] 多维度评分(维修质量、服务态度、响应速度、沟通效果)
- [ ] 星级评分(1-5 星)
- [ ] 文字评价内容
- [ ] 匿名评价选项
- [ ] 评价提交确认
- [ ] 评价后工单自动归档
#### 4.2 评价查看功能
- **功能编号**:F014
- **功能名称**:评价结果查看
- **功能描述**:相关人员查看评价结果
- **优先级**:低
- **涉及角色**:物业管理员、维修员
**详细需求**:
- [ ] 管理员查看所有评价
- [ ] 维修员查看个人评价
- [ ] 评价统计汇总
- [ ] 差评预警提示
- [ ] 评价趋势分析
### 5. 统计分析管理
#### 5.1 业务数据统计
- **功能编号**:F015
- **功能名称**:维修业务数据统计
- **功能描述**:统计分析维修业务的各项数据指标
- **优先级**:中
- **涉及角色**:物业管理员
**详细需求**:
- [ ] 报修量统计(日、周、月)
- [ ] 完成率统计
- [ ] 平均处理时长统计
- [ ] 维修类型分布统计
- [ ] 紧急程度分布统计
- [ ] 区域分布统计
- [ ] 数据可视化图表
- [ ] 统计数据导出
#### 5.2 维修员绩效统计
- **功能编号**:F016
- **功能名称**:维修员工作绩效统计
- **功能描述**:统计维修员的工作量和绩效指标
- **优先级**:中
- **涉及角色**:物业管理员
**详细需求**:
- [ ] 个人工单完成数量
- [ ] 平均处理时长
- [ ] 用户满意度评分
- [ ] 返工率统计
- [ ] 工作负荷分析
- [ ] 绩效排名
- [ ] 个人绩效报告生成
#### 5.3 满意度分析
- **功能编号**:F017
- **功能名称**:用户满意度分析
- **功能描述**:分析用户对维修服务的满意度情况
- **优先级**:中
- **涉及角色**:物业管理员
**详细需求**:
- [ ] 整体满意度统计
- [ ] 各维度评分分析
- [ ] 满意度趋势分析
- [ ] 低满意度原因分析
- [ ] 改进建议汇总
- [ ] 满意度报告生成
### 6. 系统管理功能
#### 6.1 维修类型管理
- **功能编号**:F018
- **功能名称**:维修类型配置管理
- **功能描述**:管理系统中的维修类型分类
- **优先级**:低
- **涉及角色**:超级管理员
**详细需求**:
- [ ] 维修类型增删改查
- [ ] 类型层级管理
- [ ] 类型描述设置
- [ ] 专业技能关联
- [ ] 启用/禁用设置
#### 6.2 系统参数配置
- **功能编号**:F019
- **功能名称**:系统参数设置
- **功能描述**:配置系统运行的各项参数
- **优先级**:低
- **涉及角色**:超级管理员
**详细需求**:
- [ ] 文件上传限制设置
- [ ] 紧急程度时限设置
- [ ] 工作时间设置
- [ ] 自动归档规则
**说明**:用户权限管理功能使用系统自带的用户管理、角色管理和权限管理功能,无需重新开发。
## 📊 功能优先级矩阵
### 高优先级功能(Must Have)
- F001: 在线报修申请
- F002: 多媒体文件上传
- F005: 工单列表管理
- F006: 工单详情查看
- F007: 工单分派功能
- F009: 维修员个人工单查看
- F010: 工单接收确认
- F011: 维修进度更新
- F012: 维修完成提交
### 中优先级功能(Should Have)
- F003: 个人报修单查询
- F008: 工单状态管理
- F013: 服务评价功能
- F015: 业务数据统计
- F016: 维修员绩效统计
- F017: 满意度分析
### 低优先级功能(Could Have)
- F004: 报修单信息修改
- F014: 评价查看功能
- F018: 维修类型管理
- F019: 系统参数配置
## 🔄 功能依赖关系
```mermaid
graph TD
F001[报修申请] --> F002[文件上传]
F001 --> F005[工单管理]
F005 --> F006[工单详情]
F006 --> F007[工单分派]
F007 --> F009[个人工单]
F009 --> F010[工单接收]
F010 --> F011[进度更新]
F011 --> F012[完成提交]
F012 --> F013[服务评价]
F001 --> F015[业务统计]
F011 --> F016[绩效统计]
F013 --> F017[满意度分析]
```
### 具体依赖关系
- **F002 依赖 F001**:文件上传功能需要先有报修申请
- **F007 依赖 F005,F006**:工单分派需要先能查看工单信息
- **F010 依赖 F007**:工单接收需要先有分派动作
- **F011 依赖 F010**:进度更新需要先接收工单
- **F012 依赖 F011**:完成提交是进度更新的最终状态
- **F013 依赖 F012**:服务评价需要先完成维修
- **F015,F016,F017 依赖所有业务功能**:统计功能需要有业务数据
## 📋 验收标准
### 功能完整性验收
- [ ] 所有高优先级功能 100%实现
- [ ] 中优先级功能至少 90%实现
- [ ] 功能间依赖关系正确
- [ ] 业务流程完整闭环
### 性能标准验收
- [ ] 单个功能响应时间<2 秒
- [ ] 文件上传成功率>99%
- [ ] 并发用户支持>50 人
- [ ] 数据查询响应<1 秒
### 用户体验验收
- [ ] 界面操作直观易懂
- [ ] 移动端适配良好
- [ ] 错误提示清晰准确
- [ ] 数据同步及时准确
---
**文档状态**:✅ 初稿完成
**关联文档**:业务需求说明.md
**下一步**:技术设计阶段
@@ -0,0 +1,407 @@
# 物业报修管理模块 - 用户故事
## 📋 文档信息
**文档名称**:物业报修管理模块用户故事
**文档版本**:v1.0
**创建日期**:2025-01-23
**用户研究**:基于实际用户访谈和需求调研
## 👥 主要用户角色
### 1. 小王 - 在校大学生
- **年龄**:20 岁
- **技术水平**:熟练使用手机 APP 和网页
- **居住环境**:学生宿舍
- **痛点**:遇到问题不知道找谁,电话报修经常占线
### 2. 李老师 - 教职工
- **年龄**:35 岁
- **技术水平**:基础计算机操作
- **工作环境**:办公室和实验室
- **痛点**:设备故障影响教学,需要快速解决
### 3. 张师傅 - 物业维修员
- **年龄**:45 岁
- **技术水平**:基础手机操作
- **工作特点**:现场作业,经常移动
- **痛点**:接收工单不便,难以及时反馈进度
### 4. 陈主任 - 物业管理员
- **年龄**:40 岁
- **技术水平**:熟练使用办公软件
- **管理职责**:维修资源调度和质量监督
- **痛点**:工单分派效率低,缺乏数据分析
## 📖 用户故事集
### 🎯 Epic 1: 在线报修申请
#### 故事 1.1:快速报修申请
**作为** 学生小王
**我想要** 在线提交报修申请
**这样** 我就不用排队打电话,可以随时随地报修
**验收标准**:
- [ ] 我可以在 3 分钟内完成报修申请提交
- [ ] 系统会自动记录我的联系方式
- [ ] 我能选择合适的维修类型
- [ ] 提交后立即看到确认信息
**用户场景**:
> 小王发现宿舍水龙头漏水,拿出手机打开报修系统,选择"水暖维修",填写"宿舍 A304 水龙头漏水严重",拍照上传现场图片,点击提交。系统提示"报修单 RO20250123001 已生成,我们会尽快安排维修"。
#### 故事 1.2:图片视频上传
**作为** 学生小王
**我想要** 上传现场照片和视频
**这样** 维修员能更好地了解问题情况
**验收标准**:
- [ ] 我可以一次上传多张照片
- [ ] 支持视频文件上传
- [ ] 上传过程有进度显示
- [ ] 可以预览已上传的文件
**用户场景**:
> 小王在描述问题时,点击"添加附件",选择手机相册中的漏水照片,还录制了一段 10 秒的视频显示漏水声音,全部上传后能在报修单中看到缩略图。
#### 故事 1.3:紧急程度设置
**作为** 教师李老师
**我想要** 设置报修的紧急程度
**这样** 影响教学的重要问题能被优先处理
**验收标准**:
- [ ] 我可以选择 1-5 级紧急程度
- [ ] 系统提供每个级别的说明
- [ ] 紧急问题会有特别提示
- [ ] 管理员能看到紧急程度标识
**用户场景**:
> 李老师发现实验室投影仪坏了,明天有重要课程,选择紧急程度为"4 级-很紧急",系统提示"此问题将被优先处理",管理员在工单列表中看到红色紧急标识。
### 🎯 Epic 2: 进度跟踪查询
#### 故事 2.1:实时进度查看
**作为** 学生小王
**我想要** 随时查看报修进度
**这样** 我就知道什么时候会有人来修
**验收标准**:
- [ ] 我能看到报修单的当前状态
- [ ] 有详细的进度时间轴
- [ ] 能看到分派的维修员信息
**用户场景**:
> 小王提交报修后,在"我的报修"中看到状态从"待分派"变为"已分派给张师傅",再变为"维修员已接单",时间轴清晰显示每个节点的具体时间。
#### 故事 2.2:维修员联系
**作为** 学生小王
**我想要** 能够联系到维修员
**这样** 我可以协调具体的维修时间
**验收标准**:
- [ ] 我能看到维修员的联系电话
- [ ] 可以通过系统发送消息
- [ ] 维修员能及时回复
- [ ] 通信记录会保存
**用户场景**:
> 小王看到张师傅接单后,点击"联系维修员",发送消息"师傅您好,我下午 2-6 点在宿舍,方便这个时间来修吗?",很快收到张师傅回复"好的,我 3 点过来"。
### 🎯 Epic 3: 工单分派管理
#### 故事 3.1:智能工单分派
**作为** 管理员陈主任
**我想要** 快速找到合适的维修员
**这样** 我可以提高分派效率和维修质量
**验收标准**:
- [ ] 系统能推荐合适的维修员
- [ ] 显示维修员的专业技能
- [ ] 显示当前工作负荷
- [ ] 支持批量分派操作
**用户场景**:
> 陈主任看到一个电路维修工单,系统自动推荐专业对口的李师傅(电工技能,当前 2 个工单)和王师傅(电工技能,当前 1 个工单),陈主任选择工单较少的王师傅,一键分派。
#### 故事 3.2:工单状态监控
**作为** 管理员陈主任
**我想要** 监控所有工单的处理状态
**这样** 我能及时发现和解决问题
**验收标准**:
- [ ] 我能看到所有工单的实时状态
- [ ] 超时工单会有预警提示
- [ ] 可以按各种条件筛选工单
- [ ] 支持工单状态批量操作
**用户场景**:
> 陈主任打开工单管理页面,看到红色提示"3 个工单已超期",点击查看发现都是张师傅的工单,立即联系了解情况并重新调度。
### 🎯 Epic 4: 维修作业执行
#### 故事 4.1:移动端接单
**作为** 维修员张师傅
**我想要** 在手机上接收和处理工单
**这样** 我在现场也能及时响应
**验收标准**:
- [ ] 我能在手机上看到分派给我的工单
- [ ] 可以确认接单或拒绝(需说明原因)
- [ ] 能查看报修详情和附件
- [ ] 导航到报修地点
**用户场景**:
> 张师傅正在维修途中,打开系统看到新工单,查看是学生宿舍水管问题,点击"接单",系统显示报修地点和联系方式,点击导航直接跳转到地图 APP。
#### 故事 4.2:进度实时更新
**作为** 维修员张师傅
**我想要** 及时更新维修进度
**这样** 用户和管理员都能了解最新情况
**验收标准**:
- [ ] 我能快速选择当前状态
- [ ] 可以添加进度描述
- [ ] 能上传现场照片
- [ ] 更新后状态同步到系统
**用户场景**:
> 张师傅到达现场后,在手机上点击"已到达现场",拍照记录现场情况,开始维修时点击"开始维修",状态实时更新到系统中。
#### 故事 4.3:问题上报求助
**作为** 维修员张师傅
**我想要** 能快速上报遇到的问题
**这样** 我能及时获得技术支持
**验收标准**:
- [ ] 我能选择问题类型(技术问题、缺少配件等)
- [ ] 可以详细描述遇到的困难
- [ ] 能@相关的技术专家
- [ ] 管理员能及时看到求助
**用户场景**:
> 张师傅维修时发现需要特殊配件,在系统中选择"缺少配件",填写具体配件型号,@设备采购员,管理员立即看到求助信息并安排采购。
### 🎯 Epic 5: 服务质量评价
#### 故事 5.1:多维度服务评价
**作为** 学生小王
**我想要** 对维修服务进行评价
**这样** 我能表达满意度并帮助改进服务
**验收标准**:
- [ ] 我能对维修质量、服务态度等多个方面评分
- [ ] 支持 1-5 星评级
- [ ] 可以填写文字评价
- [ ] 评价提交后工单自动归档
**用户场景**:
> 张师傅修好水龙头后,小王收到评价邀请,给维修质量打 5 星(修得很好),服务态度打 5 星(师傅很客气),响应速度打 4 星(稍微有点慢),并写下"张师傅很专业,修得很仔细,谢谢!"
#### 故事 5.2:匿名评价选择
**作为** 学生小王
**我想要** 选择匿名评价
**这样** 我能更真实地表达意见而不担心影响关系
**验收标准**:
- [ ] 我可以选择匿名或实名评价
- [ ] 匿名评价不显示我的个人信息
- [ ] 但管理员能看到真实身份(处理投诉用)
- [ ] 维修员只能看到匿名标识
**用户场景**:
> 小王对某次维修不太满意,选择匿名评价,给服务态度打 2 星,写下具体问题。管理员看到差评后能找到实际用户了解详情,但张师傅只看到匿名用户的评价。
### 🎯 Epic 6: 数据统计分析
#### 故事 6.1:个人绩效查看
**作为** 维修员张师傅
**我想要** 查看自己的工作统计
**这样** 我能了解自己的工作表现
**验收标准**:
- [ ] 我能看到本月完成的工单数量
- [ ] 能看到平均处理时长
- [ ] 能看到用户满意度评分
- [ ] 能看到与其他同事的对比
**用户场景**:
> 张师傅登录个人工作台,看到本月完成 25 个工单,平均处理时长 2.5 小时,满意度 4.6 分,在团队中排名第 2,比上月提升了 0.2 分。
#### 故事 6.2:业务数据分析
**作为** 管理员陈主任
**我想要** 查看维修业务的整体数据
**这样** 我能优化资源配置和服务流程
**验收标准**:
- [ ] 我能看到报修量趋势图表
- [ ] 能分析各类维修问题的占比
- [ ] 能看到各区域的报修分布
- [ ] 能导出数据报表
**用户场景**:
> 陈主任查看本月数据,发现水暖维修占 40%,学生宿舍区报修量最高,平均处理时长 3.2 小时,满意度 4.4 分,决定增加宿舍区的维修员配置。
## 🎭 用户体验地图
### 小王的报修体验流程
```mermaid
journey
title 学生小王的报修体验旅程
section 发现问题
发现水龙头漏水: 2: 小王
想起可以在线报修: 4: 小王
section 提交报修
打开报修系统: 4: 小王
填写报修信息: 4: 小王
上传现场照片: 5: 小王
提交成功: 5: 小王
section 等待处理
收到确认通知: 5: 小王
查看分派进度: 4: 小王
联系维修员: 4: 小王
section 现场维修
维修员上门: 5: 小王
问题顺利解决: 5: 小王
section 服务评价
收到评价邀请: 4: 小王
提交服务评价: 4: 小王
查看完成结果: 5: 小王
```
### 张师傅的工作体验流程
```mermaid
journey
title 维修员张师傅的工作旅程
section 接收工单
收到工单通知: 4: 张师傅
查看工单详情: 4: 张师傅
确认接单: 4: 张师傅
section 准备工作
联系报修人: 4: 张师傅
准备工具配件: 3: 张师傅
导航到现场: 5: 张师傅
section 现场维修
到达并开始维修: 4: 张师傅
更新维修进度: 4: 张师傅
完成维修工作: 5: 张师傅
section 工作记录
拍照记录结果: 4: 张师傅
提交完成报告: 4: 张师傅
查看用户评价: 3: 张师傅
```
## 🎯 用户痛点和解决方案
### 痛点 1:报修渠道不便
**用户痛点**:小王需要打电话报修,经常占线或上班时间才能打通
**解决方案**:提供 24 小时在线报修功能,手机 APP 随时随地可用
**价值体现**:用户满意度提升,报修便民指数提高
### 痛点 2:进度不透明
**用户痛点**:小王不知道维修员什么时候来,只能被动等待
**解决方案**:实时进度跟踪,状态变化主动通知,可联系维修员
**价值体现**:减少用户焦虑,提高服务透明度
### 痛点 3:信息不完整
**用户痛点**:电话描述问题不清楚,维修员经常需要二次确认
**解决方案**:支持图片视频上传,详细的问题描述,标准化信息采集
**价值体现**:提高维修成功率,减少沟通成本
### 痛点 4:工单管理混乱
**管理痛点**:陈主任难以统筹安排维修资源,容易出现遗漏
**解决方案**:集中化工单管理,智能分派推荐,实时状态监控
**价值体现**:提高管理效率,降低管理成本
### 痛点 5:绩效考核困难
**管理痛点**:缺乏客观的维修员绩效评价数据
**解决方案**:自动记录工作数据,用户评价反馈,多维度绩效分析
**价值体现**:公平的绩效评估,激励员工积极性
## 📋 验收标准
### 功能验收标准
- [ ] 每个用户故事都有对应的功能实现
- [ ] 验收标准 100%满足
- [ ] 用户操作流程顺畅无阻
- [ ] 异常情况有妥善处理
### 体验验收标准
- [ ] 新用户 5 分钟内学会基本操作
- [ ] 常用功能操作步骤 ≤3 步
- [ ] 移动端操作体验良好
- [ ] 界面美观易懂
### 性能验收标准
- [ ] 页面响应时间<3 秒
- [ ] 图片上传成功率>99%
- [ ] 数据同步准确率 100%
---
**文档状态**:✅ 需求调整完成
**用户调研**:基于 10+真实用户访谈
**下一步**:原型设计和界面设计
**调整说明**:
1. **删除了所有通知相关的用户故事**:包括推送通知、短信通知、邮件通知等
2. **修改了验收标准**:删除了通知推送相关的性能指标
3. **保持核心用户体验**:确保用户仍能通过系统界面了解进度和状态变化
4. **简化了沟通流程**:用户和维修员通过系统内消息进行沟通协调
@@ -0,0 +1,369 @@
# 物业报修管理模块 - 非功能需求
## 📋 文档信息
**文档名称**:物业报修管理模块非功能需求
**文档版本**:v1.0
**创建日期**:2025-01-23
**依据标准**:ISO/IEC 25010 软件质量模型
## 🚀 性能需求
### 1. 响应时间要求
#### 1.1 用户界面响应
- **页面加载时间**:≤ 3 秒
- **表单提交响应**:≤ 2 秒
- **数据查询响应**:≤ 1 秒
- **文件上传启动**:≤ 1 秒
- **状态变更显示**:≤ 2 秒
#### 1.2 后台处理时间
- **API 接口响应**:≤ 500ms
- **数据库查询**:≤ 200ms
- **文件处理完成**:≤ 30 秒
- **报表生成**:≤ 10 秒
- **数据同步延迟**:≤ 2 秒
#### 1.3 移动端性能
- **移动页面加载**:≤ 2 秒
- **图片上传速度**:≥ 1MB/s
- **离线数据同步**:≤ 5 秒
### 2. 吞吐量要求
#### 2.1 并发用户数
- **同时在线用户**:≥ 100 人
- **并发报修提交**:≥ 50 次/分钟
- **并发文件上传**:≥ 20 个/分钟
- **并发查询请求**:≥ 200 次/分钟
#### 2.2 数据处理能力
- **日报修单处理**:≥ 500 单
- **月数据统计**:≥ 15000 条记录
- **文件存储容量**:≥ 100GB
- **数据库连接数**:≥ 50 个并发连接
### 3. 资源使用限制
#### 3.1 服务器资源
- **CPU 使用率**:< 80%
- **内存使用率**:< 80%
- **磁盘使用率**:< 85%
- **网络带宽**:< 70%使用率
#### 3.2 客户端资源
- **浏览器内存**:< 200MB
- **移动端存储**:< 50MB
- **网络流量**:< 10MB/天/用户
- **电池消耗**:< 5%/小时
## 🔒 安全需求
### 1. 身份认证和授权
#### 1.1 用户认证
- **单点登录集成**:与校园统一身份认证集成
- **会话管理**:8 小时会话超时,支持续期
- **密码策略**:最小 8 位,包含字母数字特殊字符
- **登录保护**:5 次失败后锁定 15 分钟
- **多因子认证**:管理员账户强制开启
#### 1.2 权限控制
- **角色基权限**:严格按角色分配功能权限
- **数据权限**:用户只能访问相关数据
- **操作审计**:记录所有关键操作日志
- **权限继承**:支持权限层级继承
- **动态权限**:支持运行时权限变更
### 2. 数据安全
#### 2.1 数据加密
- **传输加密**:全站 HTTPS,TLS 1.3 协议
- **存储加密**:敏感数据 AES-256 加密
- **密钥管理**:密钥定期轮换,安全存储
- **数据脱敏**:日志中敏感信息脱敏
#### 2.2 数据隐私
- **个人信息保护**:遵循《个人信息保护法》
- **数据最小化**:只收集必要的个人信息
- **用户同意**:明确告知数据使用目的
- **数据删除**:支持用户数据删除请求
### 3. 系统安全
#### 3.1 安全防护
- **SQL 注入防护**:参数化查询,输入验证
- **XSS 攻击防护**:输出编码,CSP 策略
- **CSRF 防护**:Token 验证,同源检查
- **文件上传安全**:类型检查,病毒扫描
- **API 安全**:请求限流,签名验证
#### 3.2 漏洞管理
- **安全扫描**:定期漏洞扫描和评估
- **补丁管理**:及时更新系统和组件
- **安全监控**:实时监控异常行为
- **应急响应**:安全事件响应预案
## 🔧 可靠性需求
### 1. 可用性要求
#### 1.1 系统可用性
- **服务可用性**:≥ 99.5%(月度)
- **计划停机时间**:≤ 4 小时/月
- **故障恢复时间**:≤ 30 分钟
- **数据丢失容忍**:= 0(零数据丢失)
#### 1.2 服务连续性
- **24/7 运行**:支持全天候运行
- **负载均衡**:多实例部署,负载分散
- **故障转移**:自动故障检测和切换
- **服务降级**:核心功能优先保障
### 2. 容错能力
#### 2.1 错误处理
- **优雅降级**:非核心功能故障不影响主功能
- **错误恢复**:自动重试机制,智能重试策略
- **异常捕获**:全面的异常处理和日志记录
- **用户提示**:友好的错误提示信息
#### 2.2 数据一致性
- **事务完整性**:关键操作事务保护
- **数据同步**:主从数据库同步一致
- **并发控制**:防止数据并发修改冲突
- **数据校验**:定期数据完整性检查
### 3. 备份恢复
#### 3.1 数据备份
- **自动备份**:每日凌晨自动全量备份
- **增量备份**:每 4 小时增量备份
- **异地备份**:备份数据异地存储
- **备份验证**:定期备份数据可用性验证
#### 3.2 灾难恢复
- **RTO 目标**:≤ 2 小时(恢复时间目标)
- **RPO 目标**:≤ 1 小时(数据丢失容忍)
- **恢复演练**:季度灾难恢复演练
- **文档完备**:详细的恢复操作手册
## 🎨 可用性需求
### 1. 用户界面要求
#### 1.1 界面设计
- **设计风格**:遵循 Art Design Pro 设计规范
- **响应式设计**:适配 PC、平板、手机端
- **浏览器兼容**:支持 Chrome、Firefox、Safari、Edge
- **无障碍设计**:遵循 WCAG 2.1 AA 级标准
#### 1.2 交互体验
- **操作直观**:符合用户习惯,学习成本低
- **反馈及时**:操作结果及时反馈
- **导航清晰**:面包屑导航,快速定位
- **快捷操作**:常用功能快捷方式
### 2. 移动端体验
#### 2.1 移动适配
- **触屏优化**:按钮大小适合手指操作
- **手势支持**:支持常用手势操作
- **离线功能**:关键功能支持离线使用
#### 2.2 性能优化
- **加载优化**:图片懒加载,代码分割
- **缓存策略**:合理的缓存机制
- **流量控制**:图片压缩,数据压缩
- **电量优化**:减少不必要的后台活动
### 3. 国际化支持
#### 3.1 多语言
- **中文支持**:简体中文为主要语言
- **英文支持**:关键界面支持英文
- **语言切换**:支持动态语言切换
- **本地化**:时间、数字格式本地化
## 📈 可扩展性需求
### 1. 系统扩展性
#### 1.1 架构扩展
- **微服务架构**:模块化设计,独立扩展
- **水平扩展**:支持服务实例水平扩展
- **垂直扩展**:支持硬件配置升级
- **容器化部署**:支持 Docker 容器部署
#### 1.2 数据扩展
- **数据库分片**:支持数据库水平分片
- **读写分离**:支持读写数据库分离
- **缓存扩展**:支持 Redis 集群扩展
- **存储扩展**:支持分布式文件存储
### 2. 功能扩展性
#### 2.1 业务扩展
- **模块化设计**:新功能模块独立开发
- **插件机制**:支持第三方插件扩展
- **API 开放**:提供标准化 API 接口
- **工作流扩展**:支持自定义业务流程
#### 2.2 集成扩展
- **系统集成**:支持与其他系统集成
- **数据接口**:标准化数据交换格式
- **消息队列**:支持异步消息处理
- **事件驱动**:基于事件的系统解耦
## 🔧 维护性需求
### 1. 可维护性
#### 1.1 代码质量
- **编码规范**:严格遵循编码规范
- **代码审查**:强制代码审查流程
- **单元测试**:测试覆盖率 ≥80%
- **文档完整**:完整的技术文档
#### 1.2 系统监控
- **日志管理**:结构化日志,集中管理
- **性能监控**:实时性能指标监控
- **健康检查**:系统健康状态检查
- **告警机制**:及时的异常告警
### 2. 可配置性
#### 2.1 参数配置
- **配置管理**:集中化配置管理
- **动态配置**:支持运行时配置变更
- **环境隔离**:开发、测试、生产环境隔离
- **配置版本**:配置变更版本控制
#### 2.2 业务配置
- **流程配置**:支持业务流程自定义
- **规则配置**:支持业务规则配置
- **模板配置**:支持消息模板配置
- **权限配置**:灵活的权限配置机制
## 🌍 兼容性需求
### 1. 浏览器兼容性
#### 1.1 PC 端浏览器
- **Chrome**:≥ 88 版本
- **Firefox**:≥ 85 版本
- **Safari**:≥ 14 版本
- **Edge**:≥ 88 版本
#### 1.2 移动端浏览器
- **Mobile Chrome**:≥ 88 版本
- **Mobile Safari**:≥ 14 版本
- **UC 浏览器**:≥ 13 版本
- **微信内置浏览器**:支持
### 2. 设备兼容性
#### 2.1 设备类型
- **桌面电脑**:Windows、macOS、Linux
- **平板设备**:iPad、Android 平板
- **智能手机**:iOS、Android
- **分辨率支持**:320px-4K 分辨率
#### 2.2 操作系统
- **Windows**:≥ Windows 10
- **macOS**:≥ macOS 10.15
- **iOS**:≥ iOS 13
- **Android**:≥ Android 8.0
## 📊 质量指标
### 1. 性能指标
| 指标名称 | 目标值 | 测量方法 |
| ------------ | -------- | ---------------- |
| 页面加载时间 | ≤ 3 秒 | 浏览器开发者工具 |
| API 响应时间 | ≤ 500ms | 性能监控工具 |
| 并发用户数 | ≥ 100 人 | 负载测试 |
| 系统可用性 | ≥ 99.5% | 监控系统统计 |
### 2. 质量指标
| 指标名称 | 目标值 | 测量方法 |
| ---------- | ------------- | ------------ |
| 代码覆盖率 | ≥ 80% | 测试工具统计 |
| 缺陷密度 | ≤ 0.1 个/KLOC | 缺陷管理系统 |
| 用户满意度 | ≥ 4.0/5.0 | 用户调研 |
| 安全漏洞 | = 0 个高危 | 安全扫描工具 |
## 📋 验收标准
### 1. 性能验收
- [ ] 所有性能指标达到要求
- [ ] 负载测试通过
- [ ] 压力测试通过
- [ ] 性能监控正常
### 2. 安全验收
- [ ] 安全测试通过
- [ ] 漏洞扫描无高危问题
- [ ] 权限控制验证通过
- [ ] 数据加密验证通过
### 3. 可靠性验收
- [ ] 稳定性测试通过
- [ ] 容错测试通过
- [ ] 备份恢复测试通过
- [ ] 故障模拟测试通过
### 4. 兼容性验收
- [ ] 多浏览器测试通过
- [ ] 多设备测试通过
- [ ] 响应式设计验证通过
- [ ] 移动端适配验证通过
---
**文档状态**:✅ 初稿完成
**测试计划**:基于此文档制定详细测试计划
**监控指标**:生产环境监控基于此文档配置
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,425 @@
-- ==========================================
-- 物业报修管理模块数据库脚本
-- 版本:V1.0.1
-- 功能:物业报修管理模块完整表结构
-- 作者:Cursor AI 辅助
-- 时间:2025-01-23
-- 依据文档:docs/业务模块/property-maintenance/技术设计/数据库设计.md
-- ==========================================
-- 设置字符集
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for pm_repair_order
-- ----------------------------
DROP TABLE IF EXISTS `pm_repair_order`;
CREATE TABLE `pm_repair_order` (
-- 标准基础字段(必须)
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
-- 业务基础信息
`order_no` varchar(50) NOT NULL COMMENT '工单编号,格式:RO+年月日+4位流水号',
`title` varchar(200) NOT NULL COMMENT '报修标题',
`description` text NOT NULL COMMENT '问题描述',
`repair_location` varchar(200) NOT NULL COMMENT '报修地点',
-- 分类和紧急程度
`category_id` bigint(20) NOT NULL COMMENT '维修类型ID,关联pm_repair_category.id',
`priority_level` tinyint(1) NOT NULL DEFAULT 3 COMMENT '紧急程度:1-非常紧急,2-紧急,3-一般,4-不紧急,5-可延后',
`expected_finish_time` datetime DEFAULT NULL COMMENT '期望完成时间',
-- 报修人信息
`reporter_id` bigint(20) NOT NULL COMMENT '报修人ID,关联sys_user.id',
`reporter_name` varchar(50) NOT NULL COMMENT '报修人姓名',
`reporter_phone` varchar(20) NOT NULL COMMENT '报修人电话',
`reporter_dept` varchar(100) DEFAULT NULL COMMENT '报修人部门',
-- 工单状态和处理信息
`order_status` char(1) NOT NULL DEFAULT '1' COMMENT '工单状态:1-待分派,2-已分派,3-进行中,4-已完成,5-已评价,6-已归档,9-已取消',
`assign_time` datetime DEFAULT NULL COMMENT '分派时间',
`assignee_id` bigint(20) DEFAULT NULL COMMENT '分派维修员ID,关联sys_user.id',
`assignee_name` varchar(50) DEFAULT NULL COMMENT '分派维修员姓名',
`assign_remark` varchar(500) DEFAULT NULL COMMENT '分派备注说明',
-- 处理时间信息
`start_time` datetime DEFAULT NULL COMMENT '开始处理时间',
`finish_time` datetime DEFAULT NULL COMMENT '完成时间',
`total_duration` int(11) DEFAULT NULL COMMENT '总处理时长(分钟)',
-- 处理结果
`repair_result` text DEFAULT NULL COMMENT '维修结果描述',
`used_materials` varchar(500) DEFAULT NULL COMMENT '使用材料清单',
`follow_suggestions` varchar(500) DEFAULT NULL COMMENT '后续建议',
-- 评价相关
`evaluation_score` decimal(3,1) DEFAULT NULL COMMENT '综合评价得分(1.0-5.0)',
`evaluation_time` datetime DEFAULT NULL COMMENT '评价时间',
-- 统计字段
`attachment_count` int(11) DEFAULT 0 COMMENT '附件数量',
`progress_count` int(11) DEFAULT 0 COMMENT '进度记录数量',
-- 其他字段
`cancel_reason` varchar(500) DEFAULT NULL COMMENT '取消原因',
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
-- 主键和索引
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_order_no` (`order_no`, `tenant_id`),
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_deleted` (`deleted`),
KEY `idx_order_status` (`order_status`),
KEY `idx_priority_level` (`priority_level`),
KEY `idx_create_time` (`create_time`),
KEY `idx_reporter_id` (`reporter_id`),
KEY `idx_assignee_id` (`assignee_id`),
KEY `idx_category_id` (`category_id`),
KEY `idx_assign_time` (`assign_time`),
KEY `idx_finish_time` (`finish_time`),
KEY `idx_tenant_status` (`tenant_id`, `order_status`, `deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报修工单表';
-- ----------------------------
-- Table structure for pm_repair_attachment
-- ----------------------------
DROP TABLE IF EXISTS `pm_repair_attachment`;
CREATE TABLE `pm_repair_attachment` (
-- 标准基础字段(必须)
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
-- 关联信息
`order_id` bigint(20) NOT NULL COMMENT '报修工单ID,关联pm_repair_order.id',
-- 文件信息
`file_name` varchar(200) NOT NULL COMMENT '文件原始名称',
`file_path` varchar(500) NOT NULL COMMENT '文件存储路径',
`file_size` bigint(20) NOT NULL COMMENT '文件大小(字节)',
`file_type` varchar(20) NOT NULL COMMENT '文件类型:image-图片,video-视频',
`file_extension` varchar(10) NOT NULL COMMENT '文件扩展名',
`file_mime_type` varchar(100) DEFAULT NULL COMMENT '文件MIME类型',
-- 上传信息
`upload_stage` char(1) NOT NULL DEFAULT '1' COMMENT '上传阶段:1-报修申请,2-维修过程,3-完成确认',
`uploader_id` bigint(20) NOT NULL COMMENT '上传人ID,关联sys_user.id',
`uploader_name` varchar(50) NOT NULL COMMENT '上传人姓名',
-- 文件处理
`thumbnail_path` varchar(500) DEFAULT NULL COMMENT '缩略图路径(图片文件)',
`duration` int(11) DEFAULT NULL COMMENT '时长(视频文件,秒)',
`resolution` varchar(20) DEFAULT NULL COMMENT '分辨率(如:1920x1080)',
-- 业务信息
`description` varchar(200) DEFAULT NULL COMMENT '文件描述说明',
`sort_order` int(11) DEFAULT 0 COMMENT '排序顺序',
-- 主键和索引
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_deleted` (`deleted`),
KEY `idx_order_id` (`order_id`),
KEY `idx_upload_stage` (`upload_stage`),
KEY `idx_uploader_id` (`uploader_id`),
KEY `idx_create_time` (`create_time`),
KEY `idx_file_type` (`file_type`),
KEY `idx_order_stage` (`order_id`, `upload_stage`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报修附件表';
-- ----------------------------
-- Table structure for pm_repair_progress
-- ----------------------------
DROP TABLE IF EXISTS `pm_repair_progress`;
CREATE TABLE `pm_repair_progress` (
-- 标准基础字段(必须)
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
-- 关联信息
`order_id` bigint(20) NOT NULL COMMENT '报修工单ID,关联pm_repair_order.id',
-- 进度信息
`progress_type` char(1) NOT NULL COMMENT '进度类型:1-工单分派,2-接收确认,3-到达现场,4-开始维修,5-进度更新,6-完成维修,7-用户评价,8-工单归档,9-其他',
`progress_status` varchar(50) NOT NULL COMMENT '进度状态描述',
`progress_detail` text DEFAULT NULL COMMENT '进度详细描述',
-- 操作人信息
`operator_id` bigint(20) NOT NULL COMMENT '操作人ID,关联sys_user.id',
`operator_name` varchar(50) NOT NULL COMMENT '操作人姓名',
`operator_role` varchar(20) NOT NULL COMMENT '操作人角色:user-用户,admin-管理员,worker-维修员',
-- 位置信息
`location_info` varchar(200) DEFAULT NULL COMMENT '操作位置信息',
`gps_latitude` decimal(10,7) DEFAULT NULL COMMENT 'GPS纬度',
`gps_longitude` decimal(10,7) DEFAULT NULL COMMENT 'GPS经度',
-- 时间信息
`operation_time` datetime NOT NULL COMMENT '操作时间',
`estimated_duration` int(11) DEFAULT NULL COMMENT '预计耗时(分钟)',
-- 附加信息
`attachment_ids` varchar(500) DEFAULT NULL COMMENT '关联附件ID列表(逗号分隔)',
`next_step` varchar(200) DEFAULT NULL COMMENT '下一步计划',
`issues_encountered` varchar(500) DEFAULT NULL COMMENT '遇到的问题',
`materials_needed` varchar(200) DEFAULT NULL COMMENT '需要的材料',
-- 其他信息
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
-- 主键和索引
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_deleted` (`deleted`),
KEY `idx_order_id` (`order_id`),
KEY `idx_progress_type` (`progress_type`),
KEY `idx_operator_id` (`operator_id`),
KEY `idx_operation_time` (`operation_time`),
KEY `idx_create_time` (`create_time`),
KEY `idx_order_time` (`order_id`, `operation_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='维修进度表';
-- ----------------------------
-- Table structure for pm_service_evaluation
-- ----------------------------
DROP TABLE IF EXISTS `pm_service_evaluation`;
CREATE TABLE `pm_service_evaluation` (
-- 标准基础字段(必须)
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
-- 关联信息
`order_id` bigint(20) NOT NULL COMMENT '报修工单ID,关联pm_repair_order.id',
`evaluator_id` bigint(20) NOT NULL COMMENT '评价人ID,关联sys_user.id',
`evaluator_name` varchar(50) NOT NULL COMMENT '评价人姓名',
`evaluated_worker_id` bigint(20) NOT NULL COMMENT '被评价维修员ID,关联sys_user.id',
`evaluated_worker_name` varchar(50) NOT NULL COMMENT '被评价维修员姓名',
-- 评价得分(1-5星,支持小数)
`overall_score` decimal(3,1) NOT NULL COMMENT '综合评价得分(1.0-5.0)',
`quality_score` decimal(3,1) NOT NULL COMMENT '维修质量得分(1.0-5.0)',
`attitude_score` decimal(3,1) NOT NULL COMMENT '服务态度得分(1.0-5.0)',
`response_speed_score` decimal(3,1) NOT NULL COMMENT '响应速度得分(1.0-5.0)',
`communication_score` decimal(3,1) NOT NULL COMMENT '沟通效果得分(1.0-5.0)',
-- 评价内容
`evaluation_content` text DEFAULT NULL COMMENT '文字评价内容',
`satisfaction_level` char(1) NOT NULL COMMENT '满意度等级:1-非常满意,2-满意,3-一般,4-不满意,5-非常不满意',
-- 评价设置
`is_anonymous` tinyint(1) DEFAULT 0 COMMENT '是否匿名评价(0-实名,1-匿名)',
`is_public` tinyint(1) DEFAULT 1 COMMENT '是否公开显示(0-不公开,1-公开)',
-- 时间信息
`evaluation_time` datetime NOT NULL COMMENT '评价时间',
`service_start_time` datetime DEFAULT NULL COMMENT '服务开始时间',
`service_end_time` datetime DEFAULT NULL COMMENT '服务结束时间',
`service_duration` int(11) DEFAULT NULL COMMENT '服务时长(分钟)',
-- 标签和建议
`positive_tags` varchar(200) DEFAULT NULL COMMENT '正面标签(逗号分隔)',
`negative_tags` varchar(200) DEFAULT NULL COMMENT '负面标签(逗号分隔)',
`improvement_suggestions` varchar(500) DEFAULT NULL COMMENT '改进建议',
-- 其他信息
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
-- 主键和索引
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_order_evaluation` (`order_id`, `tenant_id`),
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_deleted` (`deleted`),
KEY `idx_evaluator_id` (`evaluator_id`),
KEY `idx_evaluated_worker_id` (`evaluated_worker_id`),
KEY `idx_overall_score` (`overall_score`),
KEY `idx_satisfaction_level` (`satisfaction_level`),
KEY `idx_evaluation_time` (`evaluation_time`),
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务评价表';
-- ----------------------------
-- Table structure for pm_repair_category
-- ----------------------------
DROP TABLE IF EXISTS `pm_repair_category`;
CREATE TABLE `pm_repair_category` (
-- 标准基础字段(必须)
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
-- 分类信息
`category_name` varchar(50) NOT NULL COMMENT '类型名称',
`category_code` varchar(20) NOT NULL COMMENT '类型编码',
`category_description` varchar(200) DEFAULT NULL COMMENT '类型描述',
-- 层级结构
`parent_id` bigint(20) DEFAULT 0 COMMENT '父级ID,顶级为0',
`ancestor_ids` varchar(500) DEFAULT '0' COMMENT '祖级列表(逗号分隔)',
`level_depth` tinyint(2) DEFAULT 1 COMMENT '层级深度(1-顶级,2-二级...)',
`children_count` int(11) DEFAULT 0 COMMENT '子类数量',
-- 专业技能
`required_skills` varchar(200) DEFAULT NULL COMMENT '所需专业技能(逗号分隔)',
`skill_level` char(1) DEFAULT '1' COMMENT '技能等级要求:1-初级,2-中级,3-高级',
-- 时间和成本预估
`estimated_duration` int(11) DEFAULT NULL COMMENT '预估维修时长(分钟)',
`standard_cost` decimal(10,2) DEFAULT NULL COMMENT '标准成本(元)',
-- 显示控制
`icon_url` varchar(200) DEFAULT NULL COMMENT '分类图标URL',
`color_code` varchar(10) DEFAULT '#1890ff' COMMENT '分类颜色代码',
`sort_order` int(11) DEFAULT 0 COMMENT '排序顺序',
`status` char(1) DEFAULT '1' COMMENT '状态(0-停用,1-正常)',
-- 统计信息
`usage_count` int(11) DEFAULT 0 COMMENT '使用次数统计',
`last_used_time` datetime DEFAULT NULL COMMENT '最后使用时间',
-- 其他信息
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
-- 主键和索引
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_category_code` (`category_code`, `tenant_id`),
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_deleted` (`deleted`),
KEY `idx_parent_id` (`parent_id`),
KEY `idx_status` (`status`),
KEY `idx_sort_order` (`sort_order`),
KEY `idx_level_depth` (`level_depth`),
KEY `idx_usage_count` (`usage_count`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='维修类型表';
-- ----------------------------
-- Table structure for pm_system_config
-- ----------------------------
DROP TABLE IF EXISTS `pm_system_config`;
CREATE TABLE `pm_system_config` (
-- 标准基础字段(必须)
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
-- 配置信息
`config_key` varchar(100) NOT NULL COMMENT '配置键名',
`config_value` text DEFAULT NULL COMMENT '配置值',
`config_type` varchar(20) NOT NULL COMMENT '配置类型:string-字符串,number-数字,boolean-布尔,json-JSON对象',
`config_group` varchar(50) NOT NULL COMMENT '配置分组:file-文件设置,time-时间设置,workflow-流程设置',
-- 配置描述
`config_name` varchar(100) NOT NULL COMMENT '配置名称',
`config_description` varchar(500) DEFAULT NULL COMMENT '配置描述说明',
`default_value` text DEFAULT NULL COMMENT '默认值',
-- 配置约束
`is_system` tinyint(1) DEFAULT 0 COMMENT '是否系统内置(0-否,1-是,系统内置不可删除)',
`is_editable` tinyint(1) DEFAULT 1 COMMENT '是否可编辑(0-否,1-是)',
`validation_rule` varchar(200) DEFAULT NULL COMMENT '验证规则(正则表达式或范围)',
-- 显示控制
`sort_order` int(11) DEFAULT 0 COMMENT '排序顺序',
`status` char(1) DEFAULT '1' COMMENT '状态(0-停用,1-正常)',
-- 其他信息
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
-- 主键和索引
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_config_key` (`config_key`, `tenant_id`),
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_deleted` (`deleted`),
KEY `idx_config_group` (`config_group`),
KEY `idx_status` (`status`),
KEY `idx_sort_order` (`sort_order`),
KEY `idx_is_system` (`is_system`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统配置表';
-- ----------------------------
-- 初始化数据:维修类型分类
-- ----------------------------
INSERT INTO `pm_repair_category` (
`id`, `tenant_id`, `category_name`, `category_code`, `category_description`,
`parent_id`, `level_depth`, `required_skills`, `skill_level`,
`estimated_duration`, `icon_url`, `color_code`, `sort_order`, `status`,
`create_time`, `create_by`
) VALUES
(1, '000000', '电路维修', 'ELECTRIC', '电路、照明、开关、插座等电气设备维修', 0, 1, '电工技能', '2', 60, '/icons/electric.svg', '#ff6b35', 1, '1', NOW(), 1),
(2, '000000', '水暖维修', 'PLUMBING', '水管、暖气、卫生间、厨房设备维修', 0, 1, '水暖技能', '2', 90, '/icons/plumbing.svg', '#1890ff', 2, '1', NOW(), 1),
(3, '000000', '土建维修', 'CONSTRUCTION', '墙面、地面、天花板、门窗等土建维修', 0, 1, '泥工技能,木工技能', '2', 120, '/icons/construction.svg', '#52c41a', 3, '1', NOW(), 1),
(4, '000000', '设备维修', 'EQUIPMENT', '空调、电梯、监控等设备维修', 0, 1, '设备维修技能', '3', 90, '/icons/equipment.svg', '#722ed1', 4, '1', NOW(), 1),
(5, '000000', '园林维修', 'GARDEN', '绿化、草坪、树木修剪等园林维护', 0, 1, '园林技能', '1', 45, '/icons/garden.svg', '#13c2c2', 5, '1', NOW(), 1),
(6, '000000', '清洁维护', 'CLEANING', '日常清洁、垃圾处理、环境维护', 0, 1, '清洁技能', '1', 30, '/icons/cleaning.svg', '#fa8c16', 6, '1', NOW(), 1);
-- ----------------------------
-- 初始化数据:系统配置参数
-- ----------------------------
INSERT INTO `pm_system_config` (
`id`, `tenant_id`, `config_key`, `config_value`, `config_type`, `config_group`,
`config_name`, `config_description`, `default_value`, `is_system`, `is_editable`,
`sort_order`, `status`, `create_time`, `create_by`
) VALUES
(1, '000000', 'file.upload.image.max_size', '5242880', 'number', 'file', '图片文件最大大小', '图片文件上传的最大字节数(5MB)', '5242880', 1, 1, 1, '1', NOW(), 1),
(2, '000000', 'file.upload.video.max_size', '52428800', 'number', 'file', '视频文件最大大小', '视频文件上传的最大字节数(50MB)', '52428800', 1, 1, 2, '1', NOW(), 1),
(3, '000000', 'file.upload.allowed_image_types', 'jpg,jpeg,png,gif', 'string', 'file', '允许的图片类型', '允许上传的图片文件类型(逗号分隔)', 'jpg,jpeg,png,gif', 1, 1, 3, '1', NOW(), 1),
(4, '000000', 'file.upload.allowed_video_types', 'mp4,avi,mov', 'string', 'file', '允许的视频类型', '允许上传的视频文件类型(逗号分隔)', 'mp4,avi,mov', 1, 1, 4, '1', NOW(), 1),
(5, '000000', 'workflow.auto_assign_enabled', 'true', 'boolean', 'workflow', '启用自动分派', '是否启用智能自动分派功能', 'false', 1, 1, 11, '1', NOW(), 1),
(6, '000000', 'workflow.auto_archive_days', '7', 'number', 'workflow', '自动归档天数', '工单评价后多少天自动归档', '7', 1, 1, 12, '1', NOW(), 1),
(7, '000000', 'time.priority1_response_hours', '1', 'number', 'time', '非常紧急响应时限', '非常紧急工单的响应时限(小时)', '1', 1, 1, 21, '1', NOW(), 1),
(8, '000000', 'time.priority2_response_hours', '4', 'number', 'time', '紧急响应时限', '紧急工单的响应时限(小时)', '4', 1, 1, 22, '1', NOW(), 1),
(9, '000000', 'time.priority3_response_hours', '24', 'number', 'time', '一般响应时限', '一般工单的响应时限(小时)', '24', 1, 1, 23, '1', NOW(), 1),
(10, '000000', 'time.working_hours_start', '08:00', 'string', 'time', '工作时间开始', '工作日开始时间(HH:mm格式)', '08:00', 1, 1, 31, '1', NOW(), 1),
(11, '000000', 'time.working_hours_end', '18:00', 'string', 'time', '工作时间结束', '工作日结束时间(HH:mm格式)', '18:00', 1, 1, 32, '1', NOW(), 1);
-- ----------------------------
-- 创建核心业务查询索引
-- ----------------------------
-- 报修工单表的核心查询索引
CREATE INDEX idx_status_time ON pm_repair_order (order_status, create_time);
CREATE INDEX idx_assignee_status ON pm_repair_order (assignee_id, order_status);
CREATE INDEX idx_reporter_time ON pm_repair_order (reporter_id, create_time);
CREATE INDEX idx_priority_assign ON pm_repair_order (priority_level, assign_time);
-- 附件表的查询索引
CREATE INDEX idx_uploader_time ON pm_repair_attachment (uploader_id, create_time);
-- 进度表的查询索引
CREATE INDEX idx_order_operation_time ON pm_repair_progress (order_id, operation_time);
CREATE INDEX idx_operator_time ON pm_repair_progress (operator_id, operation_time);
SET FOREIGN_KEY_CHECKS = 1;