{ "checks": [ { "flow": "SETUP", "case": "夹具客户 A/B 就位(快照 NULL / 编号回填)", "verdict": "✅", "detail": "A=KH202609060005 B=KH202609060006" }, { "flow": "I-01", "case": "新客户协议列表为空(List 非分页,时间倒序)", "verdict": "✅", "detail": "[]" }, { "flow": "I-01", "case": "新客户快照 NULL=未签", "verdict": "✅", "detail": "snapshot=None" }, { "flow": "I-01", "case": "create 缺 customerId → 67001(入参非法)", "verdict": "✅", "detail": "code=67001 如预期" }, { "flow": "I-01", "case": "create 幽灵客户 → 67002(防探测同码)", "verdict": "✅", "detail": "code=67002 如预期" }, { "flow": "I-01", "case": "create agreementLevel=9 越界 → 67017", "verdict": "✅", "detail": "code=67017 如预期" }, { "flow": "I-01", "case": "create 缺 agreementLevel → 67017(等级缺失)", "verdict": "✅", "detail": "code=67017 如预期" }, { "flow": "I-01", "case": "create 回协议 id(Result)", "verdict": "✅", "detail": "id=751743642858684416" }, { "flow": "I-01", "case": "快照联动:create 后=2(最新一条回写,不 bump version)", "verdict": "✅", "detail": "snapshot=2" }, { "flow": "I-01", "case": "list 含新协议", "verdict": "✅", "detail": "ids=['751743642858684416']" }, { "flow": "I-01", "case": "detail 回显(等级/归属/客户名快照/金额文本)", "verdict": "✅", "detail": "{'id': '751743642858684416', 'createTime': '2026-09-06 10:00:51', 'updateTime': '2026-09-06 10:00:51', 'customerId': '751743636604977152', '" }, { "flow": "I-01", "case": "edit 成功(Result)", "verdict": "✅", "detail": "code=0" }, { "flow": "I-01", "case": "快照联动:edit 后=3", "verdict": "✅", "detail": "snapshot=3" }, { "flow": "I-01", "case": "归属不可换(dto.customerId 忽略,编辑以库内归属为准)", "verdict": "✅", "detail": "detail.customerId=751743636604977152 B快照=None" }, { "flow": "I-01", "case": "amount 65 字超长 → 67017", "verdict": "✅", "detail": "code=67017 如预期" }, { "flow": "I-01", "case": "detail 幽灵协议 → 67017", "verdict": "✅", "detail": "code=67017 如预期" }, { "flow": "I-01", "case": "edit 幽灵协议 → 67017", "verdict": "✅", "detail": "code=67017 如预期" }, { "flow": "I-01", "case": "delete 幽灵协议 → 67017", "verdict": "✅", "detail": "code=67017 如预期" }, { "flow": "I-01", "case": "delete 成功(软删)", "verdict": "✅", "detail": "code=0" }, { "flow": "I-01", "case": "快照联动:删空后=NULL(未签)", "verdict": "✅", "detail": "snapshot=None" }, { "flow": "I-01", "case": "list 终态空", "verdict": "✅", "detail": "[]" }, { "flow": "I-01", "case": "oplog 记 AGREEMENT_ADD/EDIT/DELETE 三写动作", "verdict": "✅", "detail": "actions=['AGREEMENT_DELETE', 'AGREEMENT_EDIT', 'AGREEMENT_EDIT', 'AGREEMENT_ADD', 'CREATE']" }, { "flow": "I-01", "case": "oplog detail 等级文案(新增战略协议【二级】)", "verdict": "⚠", "detail": "detail=新增战略协议【二级】" }, { "flow": "I-02", "case": "contact create 回 id", "verdict": "✅", "detail": "id=751743654447546368" }, { "flow": "I-02", "case": "contact edit 成功", "verdict": "✅", "detail": "code=0" }, { "flow": "I-02", "case": "contact delete 成功(软删)", "verdict": "✅", "detail": "code=0" }, { "flow": "I-02", "case": "六种新 action 齐现(AGREEMENT ×3 + CONTACT ×3)", "verdict": "✅", "detail": "缺=[]" }, { "flow": "I-02", "case": "全部 action 落在 17 种值域内", "verdict": "✅", "detail": "越界=[]" }, { "flow": "I-02", "case": "action= 过滤生效(仅 AGREEMENT_ADD)", "verdict": "✅", "detail": "n=1 actions=['AGREEMENT_ADD']" }, { "flow": "I-03", "case": "GET 单例可读(CustomerXxxRuleInitializer 首装种子)", "verdict": "✅", "detail": "{'id': '1', 'masterEnabled': 1, 'nameEnabled': 1, 'nameMatchMode': 2, 'similarityThreshold': 80, 'phoneEnabled': 1, 'upd" }, { "flow": "I-03", "case": "save 全量覆盖:响应回显保存后单例(精确/60%)", "verdict": "✅", "detail": "{'id': '1', 'masterEnabled': 1, 'nameEnabled': 1, 'nameMatchMode': 1, 'similarityThreshold': 60, 'phoneEnabled': 1, 'upd" }, { "flow": "I-03", "case": "save→get 回读一致", "verdict": "✅", "detail": "{'id': '1', 'masterEnabled': 1, 'nameEnabled': 1, 'nameMatchMode': 1, 'similarityThreshold': 60, 'phoneEnabled': 1, 'upd" }, { "flow": "I-03", "case": "开关缺省→0 / 方式缺省→模糊(2) / 阈值显式保留", "verdict": "✅", "detail": "{'id': '1', 'masterEnabled': 0, 'nameEnabled': 0, 'nameMatchMode': 2, 'similarityThreshold': 90, 'phoneEnabled': 0, 'upd" }, { "flow": "I-03", "case": "阈值缺省 → 出厂 80(非静默保留 90,a7-3-3-2 §4.1 口径)", "verdict": "✅", "detail": "{'id': '1', 'masterEnabled': 0, 'nameEnabled': 0, 'nameMatchMode': 1, 'similarityThreshold': 80, 'phoneEnabled': 0, 'upd" }, { "flow": "I-03", "case": "nameMatchMode=9 ∉ {1,2} → 64023", "verdict": "✅", "detail": "code=64023 如预期" }, { "flow": "I-03", "case": "similarityThreshold=101 出 [0,100] → 64023", "verdict": "✅", "detail": "code=64023 如预期" }, { "flow": "I-03", "case": "similarityThreshold=-1 出 [0,100] → 64023", "verdict": "✅", "detail": "code=64023 如预期" }, { "flow": "I-03", "case": "64023 校验失败未落库(精确/80 保持)", "verdict": "✅", "detail": "{'id': '1', 'masterEnabled': 0, 'nameEnabled': 0, 'nameMatchMode': 1, 'similarityThreshold': 80, 'phoneEnabled': 0, 'upd" }, { "flow": "I-03", "case": "查重设置还原原值", "verdict": "✅", "detail": "原={'masterEnabled': 1, 'nameEnabled': 1, 'nameMatchMode': 2, 'similarityThreshold': 80, 'phoneEnabled': 1} 现={'id': '1', 'masterEnabled': 1, 'nameEnabled': 1, 'nameMatchMode': 2, 'similarit" }, { "flow": "I-04", "case": "两客户 stub 恒 NO_HIT(五状态软处置;filledFields=0)", "verdict": "✅", "detail": "[{'customerId': '751743636604977152', 'customerName': 'e2c-r2i-A-660049', 'status': 'NO_HIT', 'filledFields': 0, 'message': '工商源未查询到匹配企业'}, {'customerId': '7517" }, { "flow": "I-04", "case": "NO_HIT 无回填:档案前后全等(只补空缺的空转证据)", "verdict": "✅", "detail": "before={'A': ('e2c-r2i-A-660049', None, 'gov'), 'B': ('e2c-r2i-B-660049', None, 'gov')} after={'A': ('e2c-r2i-A-660049', None, 'gov'), 'B': ('e2c-r2i-B-660049', None, 'gov')}" }, { "flow": "I-04", "case": "幽灵客户 → 行级 NOT_FOUND(不整单失败)", "verdict": "✅", "detail": "[{'customerId': '999999999999999', 'customerName': None, 'status': 'NOT_FOUND', 'filledFields': 0, '" }, { "flow": "I-04", "case": "空 ids → 67001/400/40001 拒绝", "verdict": "✅", "detail": "code=40001 msg=缺少必填参数:ids" }, { "flow": "I-04", "case": "单次超上限 100 → 67001", "verdict": "✅", "detail": "code=67001 如预期" }, { "flow": "I-05", "case": "首访 detail-head 插入 view_log(UNIQUE(user_id,customer_id))", "verdict": "✅", "detail": "rows=1 t1=2026-09-06 10:00:58" }, { "flow": "I-05", "case": "再访 upsert:仍 1 行 + last_view_time 刷新(RECENT 视图锚点)", "verdict": "✅", "detail": "rows=1 t1=2026-09-06 10:00:58 t2=2026-09-06 10:01:00" }, { "flow": "I-05", "case": "不同用户各占一行(user 维度隔离)", "verdict": "✅", "detail": "rows=2" }, { "flow": "I-06", "case": "get 回 String(null=未设置,前端默认 list)", "verdict": "✅", "detail": "orig='list'" }, { "flow": "I-06", "case": "save split → get=split", "verdict": "✅", "detail": "get='split'" }, { "flow": "I-06", "case": "save board → get=board(白名单三值皆合法)", "verdict": "✅", "detail": "get='board'" }, { "flow": "I-06", "case": "跨用户隔离(B 写不串 S)", "verdict": "✅", "detail": "S get='board'" }, { "flow": "I-06", "case": "viewForm=card ∉ {list,split,board} → 68001", "verdict": "✅", "detail": "code=68001 如预期" }, { "flow": "I-06", "case": "pool·board 被接受 ⚠ 契约漂移(§2.14 称拒绝;实现白名单无 pool 特判)——记档,票 06 聚合", "verdict": "⚠", "detail": "code=0(漂移非缺陷:归 Bruno/API-SUMMARY 文档侧处置)" }, { "flow": "I-06", "case": "mine 还原为 'list'", "verdict": "✅", "detail": "get='list'" }, { "flow": "I-06", "case": "pool 还原为 'list'", "verdict": "✅", "detail": "" }, { "flow": "I-07", "case": "SKIP 上传:回显 SKIP + 重复组全失败不写入(t=2 i=0 u=0)", "verdict": "✅", "detail": "{'taskId': '751743692309528576', 'importMode': 'UPDATE_ONLY', 'duplicateStrategy': 'SKIP', 'totalCount': 2, 'insertCount': 0, 'updateCount': 0, 'failCount': 2, " }, { "flow": "I-07", "case": "OVERWRITE 上传:回显 OVERWRITE + 仅末行生效(u=1)", "verdict": "✅", "detail": "{'taskId': '751743693240664064', 'importMode': 'UPDATE_ONLY', 'duplicateStrategy': 'OVERWRITE', 'totalCount': 2, 'insertCount': 0, 'updateCount': 1, 'failCount'" }, { "flow": "I-07", "case": "duplicateStrategy=BOGUS 非法 → 67013", "verdict": "✅", "detail": "code=67013 如预期" }, { "flow": "I-07", "case": "SKIP 执行 DONE:星级=3", "verdict": "✅", "detail": "star=3" }, { "flow": "I-07", "case": "OVERWRITE 执行 DONE:星级=5", "verdict": "✅", "detail": "star=5" }, { "flow": "TEARDOWN", "case": "客户 A 正门 archive", "verdict": "✅", "detail": "code=0" }, { "flow": "TEARDOWN", "case": "客户 B 正门 archive", "verdict": "✅", "detail": "code=0" }, { "flow": "TEARDOWN", "case": "e2c-r2i-* DB 兜底清扫(含 oplog/contact/agreement/view_log)", "verdict": "✅", "detail": "客户行 2 组" } ], "defects": [], "elapsedSec": 18.4 }