Merge remote-tracking branch 'origin/feature/issue-48'
# Conflicts: # frontend/src/router/index.ts # wm-production/pom.xml
This commit is contained in:
@@ -0,0 +1,271 @@
|
||||
# 增强版远传集抄功能开发文档
|
||||
|
||||
## 功能概述
|
||||
|
||||
本功能为 Issue #58 "[集抄] 远传集抄(批量抄表 + 大表监控 DN80+)" 的实现,提供了完整的远传集抄解决方案。
|
||||
|
||||
## 核心功能
|
||||
|
||||
### 1. 批量远传抄表(按区域)
|
||||
- **多区域支持**: 可以同时处理多个区域的抄表任务
|
||||
- **读数校验**: 自动检测异常读数(递减、零读数、异常增量)
|
||||
- **批量报告**: 生成详细的抄表结果报告
|
||||
- **异常统计**: 统计各类异常读数的数量和原因
|
||||
|
||||
### 2. 读数校验机制
|
||||
根据水表管径设置合理的最大月增量,超出范围标记为异常:
|
||||
- DN15-DN50: 10-150 立方米
|
||||
- DN65-DN80: 300-500 立方米
|
||||
- DN100-DN150: 800-1500 立方米
|
||||
- DN200+: 默认 2000 立方米
|
||||
|
||||
### 3. 大表专项监控(DN80+)
|
||||
- **实时监控**: 监控所有 DN80 及以上管径水表
|
||||
- **异常预警**: 检测突增、离线、零流量等异常情况
|
||||
- **预警分级**: 按严重程度分级(LOW/MEDIUM/HIGH/CRITICAL)
|
||||
- **状态追踪**: 记录预警的处理状态
|
||||
|
||||
### 4. 异常预警系统
|
||||
- **突增预警**: 月用量超过标准值2倍
|
||||
- **设备离线**: IoT 设备无法连接
|
||||
- **零流量预警**: 月用量为零
|
||||
- **异常递减**: 读数数值递减
|
||||
|
||||
## 技术实现
|
||||
|
||||
### 数据库表结构
|
||||
|
||||
#### 主要表结构
|
||||
1. **rev_batch_report**: 批量抄表报告
|
||||
2. **rev_reading_exception**: 抄表异常记录
|
||||
3. **rev_large_meter_monitor**: 大表监控记录
|
||||
4. **rev_remote_reading_task**: 远传抄表任务
|
||||
5. **rev_alert_record**: 预警记录
|
||||
|
||||
#### 视图
|
||||
- **v_reading_statistics**: 抄表统计视图
|
||||
- **v_large_meter_statistics**: 大表监控统计视图
|
||||
|
||||
### 核心服务类
|
||||
|
||||
#### EnhancedRemoteReadingService
|
||||
主要业务逻辑实现:
|
||||
- `enhancedBatchRead()`: 批量抄表主方法
|
||||
- `readSingleMeter()`: 单表抄表与校验
|
||||
- `validateReading()`: 读数校验逻辑
|
||||
- `largeMeterEnhancedMonitor()`: 大表监控
|
||||
- `checkLargeMeterAlerts()`: 大表预警检查
|
||||
|
||||
#### EnhancedMeterWorkController
|
||||
REST API 接口:
|
||||
- `/revenue/enhanced/reading/batch/multi-area`: 多区域批量抄表
|
||||
- `/revenue/enhanced/reading/batch/{area}`: 单区域批量抄表
|
||||
- `/revenue/enhanced/meter/large/enhanced`: 大表监控查询
|
||||
- `/revenue/enhanced/reading/report/{reportId}`: 报表查询
|
||||
|
||||
## API 接口
|
||||
|
||||
### 批量抄表接口
|
||||
|
||||
#### 多区域批量抄表
|
||||
```http
|
||||
POST /revenue/enhanced/reading/batch/multi-area
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"areas": ["区域A", "区域B", "区域C"],
|
||||
"generateReport": true,
|
||||
"validateOnly": false
|
||||
}
|
||||
```
|
||||
|
||||
#### 单区域批量抄表
|
||||
```http
|
||||
POST /revenue/enhanced/reading/batch/{area}
|
||||
Content-Type: application/json
|
||||
```
|
||||
|
||||
### 大表监控接口
|
||||
|
||||
```http
|
||||
GET /revenue/enhanced/meter/large/enhanced
|
||||
```
|
||||
|
||||
## 响应格式
|
||||
|
||||
### 批量抄表响应
|
||||
```json
|
||||
{
|
||||
"areas": ["区域A"],
|
||||
"totalCount": 150,
|
||||
"successCount": 145,
|
||||
"failedCount": 5,
|
||||
"abnormalCount": 8,
|
||||
"period": "2026-06",
|
||||
"reportId": "BATCH_READ_2026-06_1678901234567",
|
||||
"generatedAt": "2026-06-15T08:30:00",
|
||||
"area_区域A": {
|
||||
"totalCount": 150,
|
||||
"successCount": 145,
|
||||
"failedCount": 5,
|
||||
"abnormalCount": 8,
|
||||
"abnormalReasons": {
|
||||
"读数递减": 2,
|
||||
"零读数": 3,
|
||||
"增量异常": 3
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 大表监控响应
|
||||
```json
|
||||
{
|
||||
"totalCount": 25,
|
||||
"monitors": [
|
||||
{
|
||||
"meterNo": "M001",
|
||||
"caliber": "DN80",
|
||||
"customerName": "客户A",
|
||||
"area": "区域A",
|
||||
"deviceSn": "DEV001",
|
||||
"deviceStatus": "online",
|
||||
"currentReading": 1250.50,
|
||||
"lastReadingDate": "2026-06-01",
|
||||
"consumption": 150.30
|
||||
}
|
||||
],
|
||||
"alarms": [
|
||||
{
|
||||
"meterNo": "M001",
|
||||
"title": "突增预警",
|
||||
"type": "MONITORING_HIGH_CONSUMPTION",
|
||||
"description": "月用量150.30异常高,建议检查水表状态",
|
||||
"severity": "HIGH",
|
||||
"status": "PENDING",
|
||||
"createdAt": "2026-06-15T08:30:00"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## 数据流
|
||||
|
||||
### 批量抄表流程
|
||||
1. 接收批量抄表请求
|
||||
2. 按区域获取水表列表
|
||||
3. 对每个水表执行抄表操作
|
||||
4. 进行读数校验
|
||||
5. 保存抄表记录
|
||||
6. 统计抄表结果
|
||||
7. 生成抄表报告
|
||||
8. 返回结果
|
||||
|
||||
### 大表监控流程
|
||||
1. 查询所有 DN80+ 水表
|
||||
2. 获取最新抄表数据
|
||||
3. 执行监控规则检查
|
||||
4. 生成预警记录
|
||||
5. 返回监控结果
|
||||
|
||||
## 配置说明
|
||||
|
||||
### 最大增量配置
|
||||
不同管径对应的最大合理月增量:
|
||||
|
||||
| 管径 | 最大月增量(立方米) | 适用场景 |
|
||||
|------|-------------------|----------|
|
||||
| DN15 | 10 | 小用户住宅 |
|
||||
| DN20 | 20 | 小用户住宅 |
|
||||
| DN25 | 30 | 小用户住宅 |
|
||||
| DN32 | 50 | 小商业用户 |
|
||||
| DN40 | 80 | 中等商业 |
|
||||
| DN50 | 150 | 大商业 |
|
||||
| DN65 | 300 | 工业用户 |
|
||||
| DN80 | 500 | 工业大户 |
|
||||
| DN100 | 800 | 大工业用户 |
|
||||
| DN150 | 1500 | 超大用户 |
|
||||
| DN200+ | 2000 | 特大型用户 |
|
||||
|
||||
### 预警规则配置
|
||||
1. **突增预警**: 实际用量 > 标准值 × 2
|
||||
2. **设备离线**: IoT 设备状态为 offline
|
||||
3. **零流量预警**: 月用量 = 0
|
||||
4. **异常递减**: 当前读数 < 上次读数
|
||||
|
||||
## 测试策略
|
||||
|
||||
### 单元测试
|
||||
- 批量抄表逻辑测试
|
||||
- 读数校验算法测试
|
||||
- 大表监控功能测试
|
||||
- 预警规则测试
|
||||
|
||||
### 集成测试
|
||||
- 数据库操作测试
|
||||
- API 接口测试
|
||||
- 事务处理测试
|
||||
|
||||
### 性能测试
|
||||
- 大批量抄表性能
|
||||
- 并发访问测试
|
||||
- 数据库查询优化
|
||||
|
||||
## 部署说明
|
||||
|
||||
### 依赖组件
|
||||
- Spring Boot 3.3.5
|
||||
- PostgreSQL 数据库
|
||||
- 消息队列(Kafka)
|
||||
- IoT 设备连接服务
|
||||
|
||||
### 环境配置
|
||||
- 数据库连接配置
|
||||
- IoT 设备接入配置
|
||||
- 消息队列配置
|
||||
- 监控预警配置
|
||||
|
||||
## 监控与维护
|
||||
|
||||
### 关键指标
|
||||
- 抄表成功率
|
||||
- 异常读数比例
|
||||
- 大表监控覆盖率
|
||||
- 预警响应时间
|
||||
|
||||
### 日志记录
|
||||
- 抄表操作日志
|
||||
- 异常事件日志
|
||||
- 预警处理日志
|
||||
- 系统性能日志
|
||||
|
||||
## 问题排查
|
||||
|
||||
### 常见问题
|
||||
1. **抄表失败**: 检查 IoT 设备连接状态
|
||||
2. **读数异常**: 验证水表状态和管径配置
|
||||
3. **监控预警**: 确认预警规则配置
|
||||
4. **性能问题**: 检查数据库索引和查询优化
|
||||
|
||||
### 调试工具
|
||||
- 数据库查询日志
|
||||
- 应用性能监控(APM)
|
||||
- IoT 设备状态监控
|
||||
- 预警处理状态追踪
|
||||
|
||||
## 版本历史
|
||||
|
||||
### v1.0.0 (当前版本)
|
||||
- 实现基础批量抄表功能
|
||||
- 实现读数校验机制
|
||||
- 实现大表监控功能
|
||||
- 实现异常预警系统
|
||||
- 完整的 API 接口
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [数据库表结构设计](../sql/enhanced_reading_tables.sql)
|
||||
- [API 接口文档](../docs/api-reference.md)
|
||||
- [部署运维手册](../docs/deployment-guide.md)
|
||||
- [故障排查指南](../docs/troubleshooting.md)
|
||||
|
||||
@@ -0,0 +1,139 @@
|
||||
# Issue #54 实现说明
|
||||
|
||||
## 📋 Issue 基本信息
|
||||
- **Issue编号**: 54
|
||||
- **标题**: [客服] 客服工作台 + 水费查询(语音/在线)
|
||||
- **创建时间**: 2026-06-14
|
||||
- **预计工时**: 30 分钟
|
||||
- **状态**: ✅ 已完成
|
||||
|
||||
## 🎯 实现目标
|
||||
根据 Issue 要求,需要实现:
|
||||
1. Vue3 客服工作台
|
||||
2. 水费查询 API(户号/手机号)
|
||||
3. TTS 语音自助查询
|
||||
|
||||
## ✅ 实现内容
|
||||
|
||||
### 1. 后端 API 实现
|
||||
#### 控制器层
|
||||
创建了 `CustomerServiceController.java`,提供以下接口:
|
||||
- `GET /service/query-bills` - 水费查询(支持户号/手机号)
|
||||
- `GET /service/search-knowledge` - 知识库搜索
|
||||
- `GET /service/notices/{type}` - 获取公告信息
|
||||
- `GET /service/kpi` - 获取客服KPI指标
|
||||
|
||||
#### 服务层
|
||||
利用现有的 `CustomerServiceCenter.java`,实现了:
|
||||
- `queryBills()` - 水费查询逻辑
|
||||
- `searchKnowledge()` - 知识库搜索
|
||||
- `getNotices()` - 公告板功能
|
||||
- `getKpi()` - KPI统计
|
||||
|
||||
### 2. 前端界面实现
|
||||
#### 客服工作台 (`CustomerServiceWorkbench.vue`)
|
||||
- **实时时间显示** - 动态更新当前时间
|
||||
- **KPI指标面板** - 显示待处理账单、报装数、平均处理时长
|
||||
- **水费查询功能** - 支持户号/手机号查询,显示最近12个月账单
|
||||
- **知识库搜索** - 关键词搜索相关知识点
|
||||
- **公告板** - 显示停水/水质/服务公告
|
||||
- **状态标签** - 不同状态用不同颜色标识
|
||||
|
||||
#### 路由配置
|
||||
添加了 `/service/workbench` 路由,可通过导航访问客服工作台。
|
||||
|
||||
### 3. TTS 语音功能
|
||||
#### TTS 服务 (`tts.ts`)
|
||||
- 支持浏览器原生 Web Speech API
|
||||
- 提供外部 TTS 服务接口(可扩展)
|
||||
- 语音控制功能(播放/停止)
|
||||
- 浏览器兼容性检测
|
||||
|
||||
#### 语音查询实现
|
||||
- 点击语音按钮后自动播放查询结果摘要
|
||||
- 支持中文语音播报
|
||||
- 智能语音反馈(无记录时提示)
|
||||
|
||||
### 4. 数据库支持
|
||||
创建了 `revenue_tables.sql` 文件,包含:
|
||||
- 客户信息表 (`rev_customer`)
|
||||
- 水表档案表 (`rev_meter`)
|
||||
- 抄表记录表 (`rev_reading`)
|
||||
- 水费账单表 (`rev_bill`)
|
||||
- 报装申请表 (`rev_install`)
|
||||
- 知识库和公告字典数据
|
||||
|
||||
## 🏗️ 技术架构
|
||||
|
||||
### 前端技术栈
|
||||
- **Vue 3** - 主框架
|
||||
- **TypeScript** - 类型安全
|
||||
- **Element Plus** - UI组件库
|
||||
- **Vue Router** - 路由管理
|
||||
- **Web Speech API** - 语音合成
|
||||
|
||||
### 后端技术栈
|
||||
- **Spring Boot** - 框架
|
||||
- **JdbcTemplate** - 数据访问
|
||||
- **Swagger** - API文档
|
||||
- **PostgreSQL** - 数据库
|
||||
|
||||
## 🔧 关键功能
|
||||
|
||||
### 水费查询流程
|
||||
1. 输入户号或手机号
|
||||
2. 调用后端API查询账单记录
|
||||
3. 展示最近12个月的账单明细
|
||||
4. 支持语音播报查询结果
|
||||
|
||||
### 知识库功能
|
||||
1. 实时关键词搜索
|
||||
2. 显示知识点标题和内容
|
||||
3. 点击交互反馈
|
||||
|
||||
### 公告系统
|
||||
1. 分类展示(停水、水质、服务公告)
|
||||
2. 时间排序显示
|
||||
3. Tab切换不同类型
|
||||
|
||||
### KPI监控
|
||||
1. 实时显示待处理账单数
|
||||
2. 待处理报装数量
|
||||
3. 平均业务处理时长
|
||||
|
||||
## 📱 用户界面特点
|
||||
- 响应式设计,适配不同屏幕
|
||||
- 清晰的视觉层次
|
||||
- 友好的交互反馈
|
||||
- 语音播报功能增强可访问性
|
||||
|
||||
## 🚀 部署说明
|
||||
1. 确保 PostgreSQL 数据库已创建相关表
|
||||
2. 后端服务运行在 Spring Boot 环境
|
||||
3. 前端构建部署到 Web 服务器
|
||||
4. 注意 CORS 配置(前端访问后端API)
|
||||
|
||||
## 📝 测试用例
|
||||
|
||||
### 水费查询测试
|
||||
- 输入有效户号 → 显示账单记录
|
||||
- 输入有效手机号 → 显示账单记录
|
||||
- 输入无效信息 → 显示无记录提示
|
||||
|
||||
### 语音查询测试
|
||||
- 正常查询 → 播放语音摘要
|
||||
- 无记录 → 播放无记录提示
|
||||
|
||||
### 知识库搜索测试
|
||||
- 输入关键词 → 显示相关知识点
|
||||
- 输入无关词 → 显示空状态
|
||||
|
||||
## 🎉 实现完成状态
|
||||
✅ 后端API开发完成
|
||||
✅ 前端界面开发完成
|
||||
✅ TTS语音功能实现
|
||||
✅ 数据库表结构设计
|
||||
✅ 路由配置完成
|
||||
✅ 功能测试通过
|
||||
|
||||
此实现完成了 Issue #54 的所有要求,提供了完整的客服工作台功能,包括在线查询和语音查询能力。
|
||||
Reference in New Issue
Block a user