feat(ops): update cleaner status and assignment logic

This commit is contained in:
lzh
2026-01-19 14:56:31 +08:00
parent 73bc3b299f
commit b71558ae07
169 changed files with 57972 additions and 162 deletions

View File

@@ -0,0 +1,174 @@
# Ops 业务运营模块架构文档
> **文档定位**Ops 模块的深度架构设计与演进文档
> **维护策略**按架构演进版本记录保留历史设计决策ADR
> **最后更新**2026-01-14
> **文档版本**v2.1.0
---
## 📖 文档说明
### Ops 模块简介
**OpsOperations业务运营模块**是 AIoT Platform 的核心业务模块,承载万物梁行的四大业务线:
| 业务线 | 代码模块 | 业务范围 |
|--------|----------|----------|
| **保洁** | `environment-biz` | 排班、巡检、耗材、智能调度 |
| **安保** | `security-biz` | 巡更、报警、岗位管理 |
| **工程** | `facilities-biz` | 维保、巡检、备件管理 |
| **客服** | `service-biz` | 投诉、建议、满意度 |
**核心能力**
- 工单引擎(基于状态机)
- 智能调度系统(自动派单、优先级队列)
- IoT 设备集成(工牌、信标、传感器)
- 绩效评价系统
### 文档结构
本文档分为 10 个部分,从架构总览到具体实现,全方位记录 Ops 模块的设计与演进。
```
Part 1: [架构总览](./part1-架构总览.md) - 业务背景、系统架构、核心概念
Part 2: [架构演进史](./part2-架构演进史.md) - 从阶段1到阶段3的演进历程
Part 3: [核心架构设计](./part3-核心架构设计.md) - 服务职责、分层设计、技术方案
Part 4: [关键技术方案](./part4-关键技术方案.md) - 状态机、队列、派单、事件驱动、P0打断
Part 5: [架构重构实践](./part5-架构重构实践.md) - 问题识别、重构方案、实施过程
Part 6: [性能与可靠性](./part6-性能与可靠性.md) - 优化、并发、可靠性保障
Part 7: [扩展性设计](./part7-扩展性设计.md) - 如何新增业务类型、扩展策略
Part 8: [测试指南](./part8-测试指南.md) - 单元测试、集成测试、性能测试
Part 9: [技术决策记录ADR](./part9-技术决策记录.md) - 记录重要技术决策
Part 10: [附录](./part10-附录.md) - 类图、时序图、术语表、变更日志
```
### 适用人群
- **Ops 模块开发者**:了解架构设计,参与功能开发
- **架构师**:理解设计决策,参与架构评审
- **技术负责人**:掌握技术债务,规划重构方向
- **新成员**:快速了解 Ops 模块的全貌
### 版本管理
| 版本 | 日期 | 主要内容 |
|------|------|----------|
| v1.0 | 2025-12 | 阶段2完成工单引擎、状态机、事件溯源 |
| v2.0 | 2026-01 | 阶段3规划智能调度系统 |
| v2.1 | 2026-01-06 | 架构重构方案(重新定义组件职责) |
---
## 🗂️ 快速导航
### 我想知道...
**业务相关**
- [Ops 模块有哪些业务线?](./part1-架构总览.md#14-四大业务线)
- [保洁工单的完整流程是什么?](./part1-架构总览.md#13-核心业务流程)
- [如何处理紧急任务打断?](./part4-关键技术方案.md#45-p0-紧急任务打断)
**架构相关**
- [Ops 模块的整体架构是什么?](./part1-架构总览.md#12-系统架构)
- [服务职责如何划分?](./part3-核心架构设计.md#31-服务职责划分)
- [为什么要重构 DispatchEngine](./part5-架构重构实践.md#51-问题识别)
**技术实现**
- [状态机如何实现?](./part4-关键技术方案.md#41-状态机实现详解)
- [Redis + MySQL 混合队列如何设计?](./part3-核心架构设计.md#33-redis--mysql-混合队列)
- [事件驱动架构如何实现?](./part4-关键技术方案.md#44-事件驱动架构)
**开发相关**
- [如何新增一个业务类型?](./part7-扩展性设计.md#71-新增业务条线流程)
- [如何扩展派单策略?](./part7-扩展性设计.md#72-自定义派单策略)
- [如何编写单元测试?](./part8-测试指南.md#81-单元测试规范)
- [有哪些重大的技术决策?](./part9-技术决策记录.md)
- [如何查询术语定义?](./part10-附录.md#101-核心术语表)
---
## 📚 核心概念
### 工单Work Order
工单是 Ops 模块的核心业务对象,代表一个需要处理的任务。
**工单类型**
- `CLEAN` - 保洁工单
- `REPAIR` - 维修工单
- `SECURITY` - 安保工单
- `SERVICE` - 客服工单
**工单状态**
- `PENDING` - 待接单
- `ASSIGNED` - 已分配
- `ARRIVED` - 已到岗
- `PAUSED` - 已暂停
- `COMPLETED` - 已完成
- `CANCELLED` - 已取消
### 优先级Priority
**优先级等级**
- `P0` - 紧急(可打断当前任务)
- `P1` - 重要(优先处理)
- `P2` - 普通(正常排队)
**关键特性**
- P0 任务会打断保洁员当前正在执行的任务
- P0 任务完成后,自动恢复被中断的任务
### 队列Queue
每个保洁员/维修工都有一个优先级队列,存储待处理的任务。
**队列状态**
- `WAITING` - 等待中
- `PROCESSING` - 处理中
- `PAUSED` - 暂停中
- `REMOVED` - 已移除
**技术实现**Redis Sorted Set + MySQL 混合队列
### 派单引擎Dispatch Engine
根据策略自动推荐最合适的执行人员。
**派单策略**
- 区域优先策略(就近分配)
- 负载均衡策略(考虑当前任务数)
- 技能匹配策略(维修工单需要相应技能)
### 状态机State Machine
管理工单的状态转换,保证状态一致性。
**核心能力**
- 状态转换规则验证
- 事件记录(事件溯源)
- 监听器/事件处理器通知
---
## 🔗 相关文档
- [AIoT Platform 技术全景文档](../technical-overview/README.md)
- [部署指南](../deployment-guide.md)
- [工单调度系统技术实现汇报文档](../工单调度系统技术实现汇报文档.md)
- [阶段2实现总结](../phase2-implementation-summary.md)
---
## 📧 贡献指南
本文档是 Ops 模块的官方架构文档,欢迎团队成员贡献:
1. **新增内容**:在对应章节添加,更新目录和版本号
2. **修正错误**:标注修正位置和原因
3. **补充示例**:添加代码示例和图表
4. **记录决策**:使用 ADR 格式记录技术决策
---
**下一章**[Part 1: 架构总览](./part1-架构总览.md)