Files
junhong_cmp_fiber/openspec/changes/archive/2026-09-18-fix-device-realname-without-current-card/reconciliation.md
break 54c4ec7ba4
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 14m42s
fix(设备实名): 无当前卡时按绑定卡实名回退并初始化单槽当前卡
- 设备资产解析外层 real_name_status:存在当前使用卡时沿用该卡状态,无任何当前卡时任一有效绑定卡已实名即视为已实名
- 手工绑定与设备导入:设备最大槽位为 1 且有效绑定唯一时,在同一事务内将该绑定初始化为当前使用卡;多卡设备不推断
- 同步 asset-device、personal-customer 主 Spec;归档变更并附存量核对清单(75 条单槽唯一待修复绑定,其中 16 条已实名)
2026-09-18 17:49:12 +08:00

7.6 KiB
Raw Blame History

存量当前卡标识核对与受控修复清单

本文件是 change fix-device-realname-without-current-card 任务 4.1 的只读核对产物,供维护者执行任务 4.2 的受控修复使用。

  • 核对时间2026-09-18
  • 核对环境生产库只读查询dbhub pro_main),全程未产生写入。
  • 核对口径:design.md 决策 4 的只读查询。

口径 SQL

SELECT d.id AS device_id, b.id AS binding_id, b.iot_card_id
FROM tb_device_sim_binding b
JOIN tb_device d ON d.id = b.device_id AND d.deleted_at IS NULL
WHERE b.bind_status = 1
  AND d.max_sim_slots = 1
  AND NOT EXISTS (SELECT 1 FROM tb_device_sim_binding x
                  WHERE x.device_id = b.device_id AND x.bind_status = 1 AND x.is_current)
  AND (SELECT count(*) FROM tb_device_sim_binding y
       WHERE y.device_id = b.device_id AND y.bind_status = 1) = 1;

结果统计

指标 数量
待修复绑定(=待修复设备) 75
其中绑定卡已实名(real_name_status = 1 16
其中绑定卡未实名 59

影响面参考(同库只读统计):

指标 数量
存在有效绑定卡的设备 19031
其中没有任何当前卡标识 638
其中存在已实名绑定卡 76
其中单槽唯一有效绑定(本清单范围) 75已实名 16

待修复绑定清单

device_no device_id binding_id iot_card_id iccid real_name_status
60002846141 6 11 5113 89860624660028461414 1
60002846880 11 16 5118 89860624660028468807 1
60002817472 13 18 5120 89860624660028174728 1
60002817732 14 19 5121 89860624660028177325 1
60002842491 16 21 5123 89860624660028424917 1
90001595835 369 974 86943 89860624590015958355 1
60003081045 18909 36349 131202 89860624660030810459 1
90001595210 18912 36356 131211 89860624590015952101 1
90001595801 18921 36373 131227 89860624590015958017 1
90001595438 18942 36414 131355 89860624590015954388 1
60003080864 19081 36711 131611 89860624660030808644 1
90001595459 19082 36712 131226 89860624590015954594 1
90001595626 19090 36730 131609 89860624590015956268 1
60003080488 19091 36731 131610 89860624660030804882 1
90001595086 19092 36732 131679 89860624590015950865 1
60003081496 19128 36784 131780 89860624660030814964 1
60002842359 7 12 5114 89860624660028423596 0
60002846803 8 13 5115 89860624660028468039 0
60002842779 9 14 5116 89860624660028427795 0
60002842976 10 15 5117 89860624660028429767 0
60002817595 12 17 5119 89860624660028175956 0
60002817949 15 20 5122 89860624660028179495 0
60003080109 368 973 86942 89860624660030801094 0
60003081398 370 975 86944 89860624660030813982 0
90001595523 371 976 86945 89860624590015955237 0
60003081183 372 977 86946 89860624660030811838 0
60003081174 373 978 86947 89860624660030811747 0
60003081651 374 979 86948 89860624660030816514 0
90001595896 375 980 86949 89860624590015958967 0
60003080879 376 981 86950 89860624660030808792 0
90001595588 377 982 86951 89860624590015955880 0
60003081516 378 983 86952 89860624660030815169 0
60003081645 379 984 86953 89860624660030816456 0
60003081643 380 985 86954 89860624660030816431 0
60003080711 381 986 86955 89860624660030807117 0
60003080190 382 987 86956 89860624660030801904 0
90001595805 383 988 86957 89860624590015958058 0
60003080161 384 989 86958 89860624660030801615 0
90001595810 385 990 86959 89860624590015958108 0
60003081366 386 991 86960 89860624660030813669 0
60003081251 387 992 86961 89860624660030812513 0
60003081350 388 993 86962 89860624660030813503 0
60003080752 389 994 86963 89860624660030807521 0
60003081310 390 995 86964 89860624660030813107 0
60003080791 391 996 86965 89860624660030807919 0
60003081268 392 997 86966 89860624660030812687 0
90001595763 18913 36357 131212 89860624590015957639 0
90001595413 18914 36358 131213 89860624590015954131 0
60003080907 19093 36733 131680 89860624660030809071 0
60002817276 19101 36756 112006 89860624660028172763 0
60003080052 19102 36757 131715 89860624660030800526 0
90001595253 19103 36758 131716 89860624590015952531 0
90001595502 19104 36759 131717 89860624590015955021 0
60003081741 19105 36760 131718 89860624660030817413 0
90001595886 19107 36763 131719 89860624590015958868 0
90001595902 19108 36764 131720 89860624590015959023 0
90001595553 19109 36765 131721 89860624590015955534 0
90001595460 19110 36766 131722 89860624590015954602 0
60003081979 19111 36767 131723 89860624660030819799 0
60003081938 19112 36768 131724 89860624660030819385 0
60003081807 19113 36769 131725 89860624660030818072 0
90001595761 19114 36770 131726 89860624590015957613 0
90001595422 19115 36771 131727 89860624590015954222 0
60003081975 19116 36772 131728 89860624660030819757 0
60003080037 19117 36773 131729 89860624660030800377 0
90001595510 19118 36774 131730 89860624590015955104 0
60003080038 19119 36775 131731 89860624660030800385 0
60003080062 19120 36776 131732 89860624660030800625 0
60002817135 19121 36777 111363 89860624660028171351 0
60003080264 19122 36778 131745 89860624660030802647 0
90001595473 19123 36779 131746 89860624590015954735 0
60003080128 19124 36780 131776 89860624660030801284 0
90001595873 19125 36781 131777 89860624590015958736 0
60003081839 19126 36782 131778 89860624660030818395 0
60003081051 19127 36783 131779 89860624660030810517 0

受控修复(由维护者执行,不随发布自动执行)

修复语句使用与核对完全相同的口径,且限定 bind_status = 1,同一设备至多命中一条:

UPDATE tb_device_sim_binding b
SET is_current = true, updated_at = now()
WHERE b.bind_status = 1
  AND b.id IN (
    SELECT b2.id
    FROM tb_device_sim_binding b2
    JOIN tb_device d ON d.id = b2.device_id AND d.deleted_at IS NULL
    WHERE b2.bind_status = 1
      AND d.max_sim_slots = 1
      AND NOT EXISTS (SELECT 1 FROM tb_device_sim_binding x
                      WHERE x.device_id = b2.device_id AND x.bind_status = 1 AND x.is_current)
      AND (SELECT count(*) FROM tb_device_sim_binding y
           WHERE y.device_id = b2.device_id AND y.bind_status = 1) = 1
  );

执行前后核对:

  1. 执行前重跑本文件口径 SQL与清单行数75比对不一致则以最新结果为准。
  2. 执行后重跑口径 SQL结果应为 0 行。
  3. 校验同一设备不存在多条 is_current = true
    SELECT device_id, count(*) FROM tb_device_sim_binding
    WHERE bind_status = 1 AND is_current GROUP BY device_id HAVING count(*) > 1;
    
    应返回 0 行。
  4. 抽样实接口核对资产信息外层实名与卡列表当前卡标识(含设备 90001595626)。

回滚:UPDATE tb_device_sim_binding SET is_current = false WHERE id IN (<清单 binding_id>)