2995840376
|
9786286ad3
|
fix(B1): 修复 resolveProductId 参数错位污染产品字段 + product_key 确定性化
根因: TuyaController 两处调用把「涂鸦 productId」填进 model 位、把字面量
'tuya' 填进 manufacturer 位, 导致 product.model / manufacturer 被写入
平台产品ID (生产数据已出现 P_tuya_y1ouxiqr_42bff218 的脏记录)。
修复:
- TuyaController: 2 处调用改为 model=null, manufacturer=null
(涂鸦 OpenAPI 确实未提供真实型号/厂商, 此前是错位而非真实值)
- ProductServiceImpl.resolveProductId: 新增 sanitizeDimension() 防御,
对畸形入参(等于平台产品ID / 等于平台编码)统一置空, 杜绝同类错位复发
- resolveProductId 入口 platform 经 PlatformType.normalize() 归一
product_key 确定性化:
- 旧: P_<platform>_<model>_<随机UUID8> -> 不可读、无法反查
- 新: P_<platform>_<platformProductId|model> -> 恒定、可反查
(超 56 字符截断并追加短哈希防碰撞)
验证: mvn -pl iot-common,iot-device -am compile 通过
|
2026-10-27 12:22:39 +08:00 |
|
2995840376
|
a932633c50
|
refactor(A): 产品/物模型/设备三层架构重构 - 地基批次
新增:
- iot-common/PlatformType: 平台维度单一真相源(枚举)
统一 tuya/matter/local/xiaomi/huawei/dueros/alexa/google_home,
提供 legacy 别名归一(miot|mi -> xiaomi)与已知性判定
- backend/sql/V22__product_device_arch_refactor.sql: 幂等迁移(153行)
A. platform_type 平台字典表 + 种子数据(后台可维护)
B. product 加 protocol 列; platform_product_id 空串清洗为 NULL;
清洗 model/manufacturer 被涂鸦 productId 污染的历史脏数据;
加 (platform, platform_product_id, deleted) 唯一约束
C. product_property 加 grp/is_primary/enum_label + (product_id,code) 唯一约束
D. product_event/product_action 加 (product_id,code) 唯一约束;
product_action 加 completion_mode
E. device 加 product_id 索引(OTA 物化目标设备此前全表扫); platform 归一
改造:
- DeviceAdapter 新增 platform() 显式声明平台
- DeviceAdapterManager 改为按 platform() 精确匹配,
移除'类名是否包含平台字符串'的脆弱约定(类名与平台码不同名会静默降级)
- DevicePlatform 委托 PlatformType, 消除第四套平台取值域
验证: mvn -pl iot-common,iot-device -am compile 通过
|
2026-10-27 12:08:44 +08:00 |
|
2995840376
|
0ce191c448
|
chore: 初始化 iotsaas 版本库基线
纳入范围:
- backend/ Spring Boot 多模块后端(iot-common/device/rule/data/alarm/auth)
- frontend/admin/ Vue3 + Element Plus 管理后台
- Android/ 涂鸦原生 APP (com.xhai.iot)
- backend/sql/ Flyway 风格迁移脚本(V2~V21)
- docs/ 对接文档与设计文档
排除范围:
- 构建产物: node_modules/ target/ build/ dist/ .gradle/
- 签名密钥: *.jks *.keystore (严禁入库)
- 本机配置: Android/local.properties
- 运行日志: logs/ *.log
- AI 协作本地数据 .codebuddy/ 与第三方 demo tuya-demo/
.gitattributes 统一以 LF 存储, Windows 批处理保留 CRLF
|
2026-10-27 12:00:41 +08:00 |
|