4a7128321e
feat(ops): 安保模块构建配置与枚举扩展
...
- security-biz pom 新增 ops-biz、iot-api 依赖
- ops-server pom 引入 security-biz 模块
- 新增 SECURITY_GUARD 操作人类型、ALARM 来源类型
- 新增安保相关错误码
- dev/local 配置新增安保数据源
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 17:33:55 +08:00
2e4432e51b
feat(ops): 新增安保工单 Controller 与开放接口
...
包含 SecurityOrderController(创建/确认/完单/自动完单)、
SecurityAreaUserController(区域人员绑定)、
SecurityOrderOpenController(外部回调),
以及对应的 VO 和权限配置。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 17:33:42 +08:00
1c8eee9db4
refactor(ops): 重构统计模块,支持日期参数化查询及代码质量优化
...
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
- 客流接口支持指定日期查询(getTrafficRealtime、getTrafficTrend、getAreaTrafficRealtime)
- 移除昨日对比趋势字段(yesterdayHourlyTrend),简化为单日期模式
- 漏斗图改为工单状态分布(FunnelItem→StatusDistributionItem),使用 SQL COUNT 替代内存分组
- 新增工牌队列统计(BadgeQueueStats),按 orderType 过滤避免跨类型数据混入
- 在线工牌计数仅统计 IDLE/BUSY 状态(排除 PAUSED/OFFLINE)
- 修复通配符导入和全限定类名引用,规范化 import 语句
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-01 00:17:26 +08:00
7c22fe998e
fix(ops): 统一 Redis 序列化为 StringRedisTemplate,修复跨模块/跨路径数据不兼容
...
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
BadgeDeviceStatusServiceImpl 和 RedisOrderQueueServiceImpl 原使用
RedisTemplate<String, Object>(Jackson JSON 序列化),但 Pipeline、
Lua 脚本写入的裸字符串与 Jackson 格式不兼容,导致:
- IoT 模块 StringRedisTemplate 读取工单状态比对失败(按键无法确认)
- 队列 entries() 反序列化失败(REMOVED 记录无法清理,持续报错)
修改内容:
- BadgeDeviceStatusServiceImpl: RedisTemplate → StringRedisTemplate
- RedisOrderQueueServiceImpl: RedisTemplate → StringRedisTemplate
- 所有写入值显式 String.valueOf(),读取用 parse 替代强转
- 修复 null 值写入 StringRedisSerializer 导致 NPE 的隐患
- application.yaml: TTS 播报间隔 6000ms → 3000ms
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-27 10:50:03 +08:00
b4de9d0df8
feat(config): 修改测试环境地址
2026-02-26 17:16:24 +08:00
68342a4f08
fix(ops): 移除废弃接口
2026-02-26 17:15:31 +08:00
6cb784a2d8
feat(ops): 新增客流统计后端接口(区域汇总查询+缓存优化)
...
- 新增 OpsTrafficController 客流统计独立 Controller(/ops/traffic/*)
- 新增区域汇总接口:getAreaTrafficRealtime/getAreaTrafficTrend(多区域ID聚合)
- TrafficRealtimeRespVO 新增 yesterdayHourlyTrend 和 message 字段
- DeviceTrafficRealtimeRespVO 新增 yesterdayHourlyTrend 字段
- 区域接口添加 @Cacheable 5分钟 Redis 缓存
- loadAreaNameMap 添加本地缓存(5分钟TTL)避免重复全表扫描
- areaIds 参数双层限制 200 上限防止 DoS
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-26 16:53:08 +08:00
7dd3c9a5c4
fix(ops): 修复工牌设备状态残留 BUSY 导致下一工单无法派发的问题
...
- 新增 repairDeviceOrderConsistency 方法,检测设备关联的工单是否已终态,
若是则清除 currentOpsOrderId 并将设备状态恢复为 IDLE
- 定时对账 Job 增加工单一致性检查,自动修复历史残留
- 新增管理员手动修复 API:POST /ops/clean/order/repair-device-status
- 修复预存 bug:valueOf("busy") 改为 fromCode("busy") 避免 IllegalArgumentException
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-25 17:59:54 +08:00
161f55007b
fix(ops): 手动完单走完整责任链,补全队列同步、设备状态、事件发布等缺失环节
...
原手动完单逻辑直接更新 DB 状态,绕过了 OrderLifecycleManager 责任链,
导致队列未清理、工牌设备状态未恢复 IDLE、自动派发下一任务未触发、
事件表缺少操作人信息等问题。
改动:
- CleanWorkOrderServiceImpl.manualCompleteOrder 改为委托 OrderLifecycleManager
- OrderLifecycleManager 新增 completeOrder(orderId, operatorId, operatorType, remark) 重载
- Controller 注入 SecurityFrameworkUtils.getLoginUserId() 填充操作人
- EventPublishHandler 修复 OrderCompletedEvent.assigneeId 兜底逻辑
- 新增已完成幂等返回和已取消拒绝校验
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-25 17:12:01 +08:00
4babe493ab
fix(ops): 修复 AreaDeviceController RPC 接口不支持 relationType 为空的查询
2026-02-24 15:44:39 +08:00
abaa737d23
fix(ops): 取消工单接口改用 @RequestBody 接收 JSON 参数
...
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
前端以 JSON body 传参,@RequestParam 无法读取导致 400 "请求参数缺失"。
新增 OpsOrderCancelReqDTO,Controller 改为 @RequestBody 风格,
与 create/assign/complete 等接口保持一致。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-14 12:33:44 +08:00
a68ce9a28a
fix(xxl-job): 配置executor IP和端口解决跨服务器回调失败
...
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
XXL-Job Admin部署在Infra服务器,executor运行在Prod服务器的Docker容器中,
容器内部IP不可达,需指定宿主机IP和独立端口供Admin回调。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 17:03:39 +08:00
bec46c2919
fix(rocketmq): 修正ACL配置位置到producer/consumer节点下
...
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
rocketmq-spring-boot-starter的access-key/secret-key需配置在
producer和consumer节点下而非rocketmq根节点,同时为所有
@RocketMQMessageListener注解添加accessKey/secretKey属性。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 16:19:42 +08:00
748b09d355
fix(rocketmq): 添加腾讯云TDMQ ACL认证配置解决连接失败
...
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
修复RocketMQ发送消息报"No accessKey is configured"错误,
统一各模块环境变量名为ROCKETMQ_NAMESRV_ADDR。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 15:50:44 +08:00
26e909cce9
fix(deploy): 迁移Nacos/TDengine/XXL-Job至Infra服务器(172.17.16.7)
...
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
将基础设施服务地址从Prod服务器(172.17.16.14)统一迁移至Infra服务器(172.17.16.7):
- Nacos: 172.17.16.14:8848 → 172.17.16.7:8848
- TDengine: 172.17.16.14:6041 → 172.17.16.7:6041
- XXL-Job: 172.17.16.14:19090 → 172.17.16.7:19090
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 11:22:02 +08:00
547da7cfd2
refactor(deploy): 迁移CI/CD至双服务器架构
...
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
- Jenkinsfile: Registry改为Infra内网172.17.16.7:5000,部署目标改为Prod内网172.17.16.14
- docker-compose: 镜像源改为172.17.16.7:5000,MySQL改为172.17.16.8,Redis改为172.17.16.13,RocketMQ改为腾讯云TDMQ
- 所有模块application-prod.yaml: 统一更新MySQL/Redis/RocketMQ默认连接地址
- deploy.sh: Registry地址同步更新
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 10:41:54 +08:00
c9195f78e9
feat(ops): 新增告警管理功能
...
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
添加告警请求VO、服务接口、服务实现及Controller,支持告警的基本管理操作。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 09:30:57 +08:00
16441e7c25
feat(ops): 实现工单统计看板功能
...
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
1. 修复 MyBatis 类型安全问题
- 创建 9 个 DTO 类替换 List<Map<String, Object>>
- 修复 @MapKey 错误,使用强类型返回值
2. 实现工单统计看板 5 大功能
- 漏斗统计:支持时间范围过滤
- 时段热力图:改为近 7 天,Y 轴显示日期(MM-dd)
- 功能类型排行:替换区域排行,JOIN ops_bus_area 表
- 今日工单时段分布:X 轴优化为每 2 小时展示
- 近七天客流统计:独立接口,支持工作台实时趋势
3. 字典转换实现
- 新增 DictTypeConstants.OPS_AREA_FUNCTION_TYPE(保留供未来扩展)
- 使用硬编码 Map 实现功能类型中文转换(性能最优)
- 添加 TODO 说明未来可切换 DictFrameworkUtils
4. SQL 优化
- 功能类型统计:INNER JOIN ops_bus_area 表
- 热力图查询:按日期和小时分组统计
- 时段分布:仅统计当天数据
5. 缓存策略
- 看板统计:5 分钟缓存(@Cacheable)
- 客流监测:5 分钟缓存
- 防止高并发查询压力
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-02-10 23:28:02 +08:00
4f737a5dd1
refactor(ops): 重构 TTS 语音播报队列,解耦 ttsFlag 与队列优先级
...
移除 Thread.sleep(5000) 阻塞,改由 TTS 队列按设备维度控制播报顺序和间隔:
- 解耦 ttsFlag(硬件行为 0x09)与 priority(队列位置),全部使用 0x09 发送
- TtsQueueMessage 新增 inOrder/urgent 工厂方法,VoiceBroadcastService 精简为
broadcastInOrder(FIFO rightPush)和 broadcastUrgent(leftPush 插队)两个入口
- 同设备播报间隔 3s → 6s,消息过期时间 30s → 60s
- 修复原 leftPush+leftPop LIFO 导致连续入队顺序反转的问题
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-08 00:19:24 +08:00
88e83895da
chore(ops): 新增 TTS 语音播报队列配置项
...
添加 ops.tts.queue 配置:
- enabled: 是否启用队列
- interval-ms: 播报间隔
- max-queue-size: 队列最大长度
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-03 16:49:33 +08:00
8c03253446
feat(ops): 新增工单业务日志查询接口
...
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
- OpsOrderService/Impl: 新增 getOrderBusinessLogs,将 OpsBusinessEventLogDO
转换为前端友好的 OpsOrderBusinessLogRespDTO(type/title/operator/status/extra)
- OpsOrderController: 新增 GET /business-logs/{orderId} 端点
- 新增 OpsOrderBusinessLogRespDTO 和 OpsOrderBusinessLogsRespDTO
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-03 15:41:04 +08:00
6a109954d3
fix(ops): 修复去除/admin-api/前缀
2026-02-03 14:01:43 +08:00
955c825e2c
feat(ops,iot): 保洁前端 API 层和区域管理新增
...
新增保洁业务前端 API 接口层(工牌、工单、仪表盘)和运营区域管理完整功能,包含 Service/Controller/Test 三层结构。
主要功能:
1. IoT 设备查询 API(RPC 接口)
- IotDeviceQueryApi: 提供设备简化信息查询
- IotDeviceSimpleRespDTO: 设备简化 DTO
2. 保洁工牌管理
- CleanBadgeService/Impl: 工牌通知、优先级调整、手动完成
- BadgeNotifyReqDTO/UpgradePriorityReqDTO/ManualCompleteOrderReqDTO
3. 保洁工单管理
- CleanWorkOrderService/Impl: 工单时间线查询
4. 保洁仪表盘
- CleanDashboardService/Impl: 快速统计(待处理/进行中/已完成/在线工牌数)
- QuickStatsRespDTO: 快速统计 DTO
5. 运营区域管理(Ops Biz)
- OpsBusAreaService/Impl: 区域 CRUD(支持树形结构、分页查询)
- AreaDeviceRelationService/Impl: 区域设备关联管理(绑定/解绑/批量更新)
- OpsBusAreaMapper/AreaDeviceRelationMapper: 扩展 MyBatis 批量方法
- 7 个 VO 类:CreateReqVO/UpdateReqVO/PageReqVO/RespVO/BindReqVO/RelationRespVO/DeviceUpdateReqVO
6. 前端 Controller(Ops Server)
- OpsBusAreaController: 区域管理 REST API(11 个接口)
- AreaDeviceRelationController: 设备关联 REST API(8 个接口)
- CleanBadgeController: 工牌管理 REST API(5 个接口)
- CleanDashboardController: 仪表盘 REST API(1 个接口)
- CleanDeviceController: 设备管理 REST API(2 个接口)
- CleanWorkOrderController: 工单管理 REST API(2 个接口)
7. 测试覆盖
- OpsBusAreaServiceTest: 区域服务测试(284 行)
- AreaDeviceRelationServiceTest: 设备关联测试(240 行)
- OpsBusAreaControllerTest: 区域 Controller 测试(186 行)
- AreaDeviceRelationControllerTest: 设备关联 Controller 测试(182 行)
8. API 层扩展
- ErrorCodeConstants: 错误码常量(区域、设备关联)
- NotifyTypeEnum: 通知类型枚举(语音、文本、震动)
- 4 个 Badge/Order DTO: BadgeStatusRespDTO/BadgeRealtimeStatusRespDTO/OrderTimelineRespDTO
9. RPC 配置
- RpcConfiguration: 注入 IotDeviceQueryApi
影响模块:Ops API、Ops Biz、Ops Server、Ops Environment Biz、IoT API、IoT Server
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-02-02 22:42:45 +08:00
bdf5b640b0
refactor(ops): 工单中心查询接口参数封装重构
...
优化 OrderCenterController.queryPage() 方法签名,从 9 个独立参数封装为单个对象,提升代码可维护性。
主要变更:
1. OrderQuery 改用 Lombok @Data 替代手写 getter/setter(减少 ~120 行)
2. OrderQuery.status 从 String 改为 List<String>,支持前端多状态筛选
3. OrderQueryServiceImpl 使用 inIfPresent() 生成 IN 查询(兼容单选和多选)
4. OrderCenterController 接收 OrderQuery 对象替代 9 个 @RequestParam
5. OrderCenterControllerTest 适配新签名,新增多状态测试用例
向后兼容:
- 前端传单个 status=PENDING,Spring 自动转 List.of("PENDING")
- 前端传多个 status=A&status=B,Spring 自动转 List.of("A","B")
- 原有单状态查询不受影响
影响模块:Ops Biz、Ops Server
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-02-02 22:37:06 +08:00
1e5842756e
config(ops): enable feign client for IotDeviceStatusQueryApi
2026-01-29 11:50:49 +08:00
ff858fc3b8
fix(ops): 修复区域设备 API 路径不匹配问题
...
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
问题:Feign 客户端调用 /rpc-api/ops/area-device 但 Controller 映射为 /ops-api/area-device
修复:
- Controller @RequestMapping 改为使用 ApiConstants.PREFIX
- 路径统一为:/rpc-api/ops/area-device
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-28 23:32:47 +08:00
d87d4dd914
refactor(ops,iot): 重构区域设备关联模块并添加Redis缓存
...
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
主要变更:
1. 将 ops_area_device_relation 表所有权移至 Ops 模块
- 新增 OpsAreaDeviceRelationDO、Mapper、Service、Controller
- 新增 AreaDeviceApi Feign 接口供其他模块调用
- ���除 IoT 模块中的旧 DO 和 Mapper
2. 实现 Redis JSON 缓存(IoT 可读)
- 统一缓存 Key: ops:area:device:{deviceId}
- 统一缓存 Key: ops:area:{areaId}:type:{relationType}
- TTL: 30分钟,空值缓存: 1分钟
3. IoT 模块通过 Feign 调用 Ops
- 优先读 Redis 缓存,未命中时调用 Ops API
- 缓存由 Ops 模块统一管理
4. 删除 IoT 模块废弃文件
- OpsAreaDeviceRelationDO.java
- OpsAreaDeviceRelationMapper.java
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-28 22:35:41 +08:00
4f2036d145
fix(ops): 修复编译错误2refactor-order-operations
2026-01-19 13:59:37 +08:00
568d37a0be
feat(ops): refactor-order-operations
2026-01-19 13:32:23 +08:00
c8010e06d2
feat(ops): add deployment configuration and actuator dependency
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
2026-01-15 16:30:15 +08:00
4a8c4d744c
feat(ops): 增强工单队列服务并新增 RPC 配置
2026-01-15 16:14:32 +08:00
47cbf6f1cc
chore: 【ops】状态机配置
2026-01-09 17:42:08 +08:00
baa8d6e60c
chore: 【ops】队列同步JOB
2026-01-09 17:41:49 +08:00
a11c801b93
chore: 【ops】工单基础Controller
2026-01-06 10:53:13 +08:00
9ef2730fd0
chore: 【ops】FSM轻量级状态机实现
2026-01-06 10:48:39 +08:00
3283db6108
chore: xxl-job关闭
2026-01-06 10:45:13 +08:00
da8bf53f39
fix: 日志加载报错修复
2025-12-31 17:29:49 +08:00
16f0b71ead
chore: ops模块构建(业务运营)- 主要实现 基础建设、保洁、安保、工程、客服 等功能
2025-12-31 16:49:44 +08:00