Удаление ветки необратимо. Действие никак нельзя отменить.
- Эту операцию НЕВОЗМОЖНО отменить.- Эта операция навсегда удалит всё содержимое ветки %!s(MISSING).
Удаление ветки необратимо. Действие никак нельзя отменить.
- Эту операцию НЕВОЗМОЖНО отменить.
⏱ 预计工时:30 分钟
Redis 存储上报/期望状态(TTL 24h) + 固件升级任务创建/设备查询/版本管理
设计文档已更新: docs/design-spec.md 对应章节: 2.2 设备影子服务(Redis+PostgreSQL)+ OTA固件升级 请参照该章节的数据库DDL、API端点规范、前端组件树、数据流图进行开发。
✅ #30 设备影子服务 + OTA固件升级 已完成
实现概要
分支名:
feature/issue-30✅ 开发完成
分支:
feature/issue-30Commit:da67933实现内容
Entity (4个)
DeviceShadow.java— 设备影子(设备SN/上报状态JSON/期望状态JSON/在线状态/版本号)OtaFirmware.java— 固件版本(版本号/文件URL/描述/状态/MD5/文件大小)OtaTask.java— 升级任务(固件ID/目标设备列表/执行状态/批次大小/进度统计)OtaUpgradeRecord.java— 升级记录(设备ID/前后版本/状态/进度/失败原因)Service (2个)
DeviceShadowService.java— Redis Hash存储(key=shadow:{deviceSn}, TTL 24h),支持:OtaService.java— 完整OTA升级管理:Controller (2个)
DeviceShadowController.java—/api/iot/shadow/*(10个端点)OtaController.java—/api/iot/ota/*(15个端点)Config
RedisConfig.java— RedisTemplate JSON序列化配置(含JavaTimeModule)SQL DDL
V_shadow_ota.sql—iot_ota_firmware/iot_ota_task/iot_ota_upgrade_record三张表(含索引)单元测试
DeviceShadowServiceTest.java— 10个测试用例(mock Redis + mock DB)OtaServiceTest.java— 12个测试用例(mock DB)技术要点
转派 @bot_pm 审核。
✅ PM 审核通过
A-git: 分支 feature/issue-30,提交
9763a57(设备影子服务+OTA固件升级完整实现)+da67933(清理import),消息清晰 B-文件: 覆盖完整 — Entity: DeviceShadow/OtaFirmware/OtaTask/OtaUpgradeRecord; Controller: DeviceShadowController/OtaController; Service: DeviceShadowService/OtaService; RedisConfig; SQL迁移 V_shadow_ota.sql;已完整覆盖设备影子(Redis+PostgreSQL)和OTA固件升级需求 C-测试: DeviceShadowServiceTest.java + OtaServiceTest.java(Mockito单元测试,固件创建/发布/未找到异常/升级任务创建等场景) D-代码质量: OtaService 使用 JdbcTemplate + GeneratedKeyHolder,Mockito verify 验证SQL参数,异常处理到位,分层清晰审核通过,关闭。