business.exception.ts
1.73 KB
-
feat: 迁移手机号码管理模块 · a33af22a
新增五个接口,契约比对 5/5 一致,业务规则对拍 12/12 一致。 按输入位数变化的号码搜索 这条规则从接口签名完全看不出来,但直接决定搜索是否可用: 3 位 按号段前缀匹配 4 位 按尾号匹配 7 位 前 3 位与后 4 位组合匹配 其他 精确匹配 写成统一的模糊匹配看似等价,实际会让「输入 8888 找尾号」退化成乱匹配。 对拍用真实数据逐条验证了五种输入长度的结果集完全一致。 其余业务规则 - 卡类型为「虚拟号码」时豁免 ICCID 与实名人的必填校验——虚拟号本无实体卡与实名主体 - 号码规范化会剥掉 +86 前缀,最终必须是 11 位纯数字 - 处置状态不填时默认「正常使用」 - 手动建档固定 number_type = SELF(企微自动录入的号标为 EXTERNAL 以便追溯来源) - 删除不做引用检查,与 Java 一致:台账记录可以先于业务资产撤下 对拍发现:「记录不存在」的状态码各模块并不统一 公司档案与公司人员返回 400,手机号、设备、企微返回 404—— 后三者各自定义了 NotFoundException 与专属异常处理器。这是既有契约不是笔误, 照搬处理:NestJS 侧新增 NotFoundException(404)与 BusinessException(400)区分。 完整映射记于 CONTRACT-NOTES 第 16 条,供设备与企微模块实现时对照。 整体契约比对:19 项一致、12 项待实现。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
DaiJiezhang authored
×