[ { "flow": "SETUP", "case": "华南销售部 leader=admin", "verdict": "✅", "detail": "" }, { "flow": "SETUP", "case": "seed 销售甲(华南销售部/在职/启用)", "verdict": "✅", "detail": "id=760000000000000001" }, { "flow": "SETUP", "case": "甲乙丙 assign→BUDDY", "verdict": "✅", "detail": "" }, { "flow": "F-13", "case": "preview 圈定 3 条(甲乙丙+残留)", "verdict": "✅", "detail": "实际 3 条" }, { "flow": "F-13", "case": "initiate reason 缺失 → 67011", "verdict": "✅", "detail": "code=67011 如预期" }, { "flow": "F-13", "case": "toDirectorId 不在可交接范围 → 67011", "verdict": "✅", "detail": "code=67011 如预期" }, { "flow": "F-13", "case": "initiate resign → 交接单 JG202609060005(D22 自动推导罗伟健)", "verdict": "✅", "detail": "status=0 totalCount=3" }, { "flow": "F-13", "case": "totalCount=圈定全量(无 customerIds 字段=名下全量口径)", "verdict": "✅", "detail": "totalCount=3 vs 预览 3" }, { "flow": "F-13", "case": "存在未完成交接单重入 → 67010", "verdict": "✅", "detail": "code=67010 如预期" }, { "flow": "F-13", "case": "initiate 后客户 owner→接收总监(整批原子)", "verdict": "✅", "detail": "owner=739564171091247104" }, { "flow": "F-13", "case": "商机 owner 三列联动(owner/快照/部门)", "verdict": "✅", "detail": "e2c-联动-交割 owner=739564171091247104" }, { "flow": "F-13", "case": "oplog 含交接编号+发起交接叙事", "verdict": "✅", "detail": "交割单【JG202609060005】发起交接:客户归属由【曾偲青】移交【罗伟健】" }, { "flow": "F-13", "case": "detail 明细齐且全待分配", "verdict": "✅", "detail": "minutes=3" }, { "flow": "F-13", "case": "assignable 含销售甲且排除发起人/总监", "verdict": "✅", "detail": "共 6046 人" }, { "flow": "F-13", "case": "assign 单条 甲→销售甲", "verdict": "✅", "detail": "fails=[]" }, { "flow": "F-13", "case": "重复分配已分配明细 → 67012(失败行)", "verdict": "✅", "detail": "{'id': '750844484425613312', 'reason': 'ASSIGN_INVALID', 'message': '该客户已分配'}" }, { "flow": "F-13", "case": "分配给当前负责人 → 67012(失败行)", "verdict": "✅", "detail": "{'id': '750844485444829184', 'reason': 'ASSIGN_INVALID', 'message': '不能分配给当前负责人'}" }, { "flow": "F-13", "case": "分配对象不存在 → 67012(spec 66001 偏差记录)", "verdict": "✅", "detail": "code=67012 fails=[]" }, { "flow": "F-13", "case": "批量 assign 剩余成功 2/2", "verdict": "✅", "detail": "fails=[]" }, { "flow": "F-13", "case": "assignedCount==totalCount → 自动置已完成(D23)", "verdict": "✅", "detail": "assigned=3/3 status=1" }, { "flow": "F-13", "case": "交接单已完成不可再分配(67004 或失败行收口)", "verdict": "✅", "detail": "code=0 fails=[{'id': '750844484425613312', 'reason': 'STATUS_NOT_ALLOWED', 'message': '交接单已完成,不可再分配'}]" }, { "flow": "F-13", "case": "assign 后客户/商机 owner→销售甲", "verdict": "✅", "detail": "cust=760000000000000001 opp=760000000000000001" }, { "flow": "F-13", "case": "page 交接编号过滤命中", "verdict": "✅", "detail": "命中 1 条" }, { "flow": "F-13", "case": "交接编号当日续号不重号", "verdict": "✅", "detail": "max=JG202609060005 vs 本单 JG202609060005" }, { "flow": "F-14", "case": "模板下载(RFC5987 文件名+xlsx 魔数)", "verdict": "✅", "detail": "CD=attachment; filename*=UTF-8''%E5%AE%A2%E6%88%B7%E5%AF%BC%E5%85%A5%E6%A8%A1%E6%9D" }, { "flow": "F-14", "case": "importMode 非法 → 67013", "verdict": "✅", "detail": "code=67013 如预期" }, { "flow": "F-14", "case": "模板表头不符 → 67013", "verdict": "✅", "detail": "code=67013 如预期" }, { "flow": "F-14", "case": "文件内无数据行 → 67013", "verdict": "✅", "detail": "code=67013 如预期" }, { "flow": "F-14", "case": "APPEND_ONLY 预检:t=7 insert=1 fail=5(含已存在) suspect=1", "verdict": "✅", "detail": "t=7 i=1 u=0 f=5 s=1" }, { "flow": "F-14", "case": "行级判定:已存在 FAIL / 文件内重复组 FAIL(D24) / 相似 SUSPECT", "verdict": "✅", "detail": "r2=FAIL r3=文件内多行匹配同一客户(重复时不导入),请合并为 r7=SUSPECT" }, { "flow": "F-14", "case": "UPDATE_ONLY 预检:update=1(按编号) insert=0", "verdict": "✅", "detail": "u=1 i=0" }, { "flow": "F-14", "case": "UPSERT 同名(新编号)→SUSPECT 不按名称匹配", "verdict": "✅", "detail": "r1=SUSPECT 疑似重复:客户名称与已有客户相似,本次不写入,请走新增/编辑" }, { "flow": "F-14", "case": "confirm DRAFT→RUNNING 异步执行", "verdict": "✅", "detail": "taskId=751742215566393344" }, { "flow": "F-14", "case": "重复 confirm → 67014", "verdict": "✅", "detail": "code=67014 如预期" }, { "flow": "F-14", "case": "执行完成 DONE:insert=2(客户r1+联系人甲) fail=7 suspect=1", "verdict": "✅", "detail": "status=2 i=2 u=0 f=7 s=1" }, { "flow": "F-14", "case": "失败明细 8 行", "verdict": "✅", "detail": "None;None;None" }, { "flow": "F-14", "case": "confirm UPDATE_ONLY 任务", "verdict": "✅", "detail": "taskId=751742217114091520" }, { "flow": "F-14", "case": "UPDATE_ONLY 执行 DONE:update=2(transfer2 星级→4)", "verdict": "✅", "detail": "status=2 u=2 f=7 unchanged=1" }, { "flow": "F-14", "case": "r1 落库 biz=0 relation=0(D-05 同族占位)/r2 星级=4(UPDATE 通路)", "verdict": "✅", "detail": "r1=落库 biz=0 rel=0 r2星=4" }, { "flow": "F-14", "case": "最近导入仅提交人可见(creator 过滤)", "verdict": "✅", "detail": "admin 有=True buddy 有=False" }, { "flow": "F-15", "case": "GET 单例可读(记录当前值,不预设——重跑时规则可能留测试态)", "verdict": "✅", "detail": "master=1 first=1/30 second=1/7" }, { "flow": "F-15", "case": "save 全量覆盖保存即生效", "verdict": "✅", "detail": "first=1" }, { "flow": "F-15", "case": "firstTriggerDays=0 → 64023", "verdict": "✅", "detail": "code=64023 如预期" }, { "flow": "F-15", "case": "secondIntervalDays=-1 → 64023", "verdict": "✅", "detail": "code=64023 如预期" }, { "flow": "F-15", "case": "64023 校验失败未落库(1/1 保持)", "verdict": "✅", "detail": "first=1 second=1" }, { "flow": "F-15", "case": "开关缺省 → 0(缺省禁用口径)", "verdict": "✅", "detail": "master=0 first=0 second=0" }, { "flow": "F-15", "case": "Job 落待发:首链 plan=2026-08-08(锚点+first=1)status=0", "verdict": "✅", "detail": "链长=2(每轮补下一条属正常) status=0 type=FOLLOW_OVERDUE target=739564171091247104 plan=2026-08-08 09:54:25" }, { "flow": "F-15", "case": "payload 快照(remindSeq/anchor/规则参数)", "verdict": "✅", "detail": "{'remindSeq': 0, 'overdueDays': '30', 'anchor': '2026-08-07T09:54:25', 'firstTriggerDays': 1, 'secon" }, { "flow": "F-15", "case": "未到期/公海/归档客户均未落待发", "verdict": "✅", "detail": "待办=0 公海+归档=0" }, { "flow": "F-15", "case": "幂等:同计划时刻任意状态占位不重写", "verdict": "✅", "detail": "重复 plan 组=0;链长 5 条(每轮补下一条,r1 口径)" }, { "flow": "F-15", "case": "锚点被跟进刷新 → 旧未发提醒置已失效", "verdict": "✅", "detail": "旧锚点行 5 条;其中仍待发 0 条" }, { "flow": "F-15", "case": "提醒规则还原出厂值(30/7)", "verdict": "✅", "detail": "{'id': '1', 'masterEnabled': 1, 'firstTriggerEnabled': 1, 'firstTriggerDays': 30, 'secondIntervalEnabled': 1, 'secondIntervalDays': 7, 'updateTime': '2026-09-06 09:59:17'}" }, { "flow": "F-15", "case": "服务还原后 smoke", "verdict": "✅", "detail": "" }, { "flow": "F-16", "case": "check-credit-code 命中已有信用代码", "verdict": "✅", "detail": "{'exists': True, 'masked': False, 'customerId': '750844478243209216', 'customerN" }, { "flow": "F-16", "case": "创建撞已有信用代码 → 67003 硬拦", "verdict": "✅", "detail": "code=67003 如预期" }, { "flow": "F-16", "case": "check-name 相似命中(阈值 80 生效)", "verdict": "✅", "detail": "[{'customerId': '750844478243209216', 'customerName': 'e2c-恒信达科技有限公司', 'ownerNam" }, { "flow": "F-16", "case": "创建名称相似 → needConfirm 弹窗未落库", "verdict": "✅", "detail": "needConfirm=True" }, { "flow": "F-16", "case": "check-phone 跨客户软提示命中", "verdict": "✅", "detail": "[{'contactId': '750844500171030528', 'contactName': '张关键', 'jobTitleName': '采购总监" }, { "flow": "F-16", "case": "导入侧消费:名称相似 → SUSPECT 不写入(f14 14.9 实测引用)", "verdict": "✅", "detail": "见 F-14" }, { "flow": "F-16", "case": "customer_dedup_rule 单例已落地(返工票 04)→ RuleBackedCustomerDedupSettingProvider 读单例驱动内建查重", "verdict": "✅", "detail": "GET/POST /api/rule/customer/dedup 配置面用例见 r2 票 02 增量套件;本流程验证出厂态消费行为与 round-1 一致" }, { "flow": "MAIN", "case": "骨架异常: (2013, 'Lost connection to MySQL server during query ([WinError 10054] 远程主机强迫关闭了一个现有的连接。)')", "verdict": "❌", "detail": "" } ]