问题现象
一台设备虽然摆在 A 区域运营,资产归属却登记在另一家外地公司名下。这台设备满仓需要清理时,被正常派给了 A 区域的网格人员;同时那家外地归属公司在自己后台也看到了这条告警数据,提出这不是我们运营的设备、能不能剔除。
背景
系统在设备满仓时自动生成清理工单并派单,派单维度是设备当前摆放的位置:按它绑定网点解析出的城市或区县,再结合经纬度匹配到网格。设备可以在 A 地运营,但资产归属登记在别处。
根本原因
数据分发只用了位置维度做派单和展示,业务却期望用资产归属维度做数据隔离。当位置和归属分属不同主体时,方案没有定义该以哪个维度为准,也没有按归属过滤的逻辑,于是归属方在后台看到了不属于自己运营的数据。根子不是代码错误,而是产品方案漏掉了位置与归属不一致这个场景。
解决方案
先在产品方案里明确过滤维度:派单按位置(谁在附近谁去处理),而某归属方后台看到的数据按归属过滤,两者分开,别用一个维度替另一个。落到查询上,把归属方作为一个显式过滤条件。
// 派单可仍按 region,但归属方后台展示要按 ownerId 过滤
List<Alarm> queryAlarms(String regionCode, String ownerId) {
return alarmRepo.findByRegionAndOwner(regionCode, ownerId);
}
测试建议
专门造设备位置和资产归属分属不同主体的测试数据,验证各方后台只看到属于自己维度的记录。评审阶段就识别这类一个实体挂着多个主体属性的场景,把过滤维度写进验收用例,别默认位置等于归属。
经验总结
一份数据会分发或展示给多方时,先问清楚过滤按什么维度:地理位置、资产归属还是两者组合,并把结论写进产品方案,别默认位置就是归属。