services: 梳理并修「账号 ↔ 实名记录」的绑定口径
useridverify 明细是权威,user.idverified/idverifiedtime 只是后台筛选用的派生
缓存,两边是两次独立写,此前会各自漂移。纯逻辑收进 idverify_binding.go:
- reconcileUserFlags:home 启动时双向校正派生标识,幂等。
- applyIdVerifyAttempt:已实名账号「修改认证」失败时,明细上的身份字段一律
不动。原实现先无条件覆盖姓名/掩码/指纹再看结果,一次填错就把账号上的实名
身份换成了没核验通过的人,verifytime 却还停在通过状态;再提交回原来那个人
又被当成换人重新计费。
- scrubCancelledUserIdVerify:注销同时清 idverified/idverifiedtime/gender。
原先只删明细行,账号在后台仍显示「已实名」、详情里却没有姓名证件。
- 换人/注销留痕到 useridverify_log,只存掩码+指纹,不存姓名(注销要清 PII);
留痕失败只告警不阻断注销。
- alignCollation:user 表是 utf8mb4_general_ci(老库导入),gorm 新建的表是
utf8mb4_0900_ai_ci,联查直接报 1267。启动时把实名两张表 CONVERT 对齐。
CLAUDE.md 补这一节,含两条未修、属产品决策的边界(实名跟 uid 走、按应用库隔离)。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|