{ "checks": [ { "flow": "F-01", "case": "overview 分页返回 content/total", "verdict": "✅", "detail": "total=24 e2c行=20" }, { "flow": "F-01", "case": "行字段齐(编号/名称/阶段/双星级/负责人/关联业务计数)", "verdict": "✅", "detail": "缺列=[]" }, { "flow": "F-01", "case": "admin(data_scope=4)可见 stage2 样例", "verdict": "✅", "detail": "id=750844474023739392" }, { "flow": "F-01", "case": "mine ASSIGNED 含交割-甲/乙/丙(admin 负责人)", "verdict": "✅", "detail": "e2c命中=['e2c-交割-丙', 'e2c-交割-乙', 'e2c-交割-甲', 'e2c-全字段-科技', 'e2c-快创-447430', 'e2c-快创-447762', 'e2c-恒信达科技有限公司', 'e2c-恒信达科技有限责任公司', 'e2c-恒信达科技股份有限447414公司', 'e2c-成员-样例', 'e2c-提醒-超期', 'e2c-星级-五星', 'e2c-跟进-待办', 'e2c-阶段-成交-丙', 'e2c-阶段-潜在-甲', 'e2c-阶段-重潜-乙']" }, { "flow": "F-01", "case": "mine ASSIGNED 排除协同样例(owner≠当前用户)", "verdict": "✅", "detail": "协同样例 owner=曾偲青" }, { "flow": "F-01", "case": "COLLABORATING 视图命中协同样例(admin 是协同人)", "verdict": "✅", "detail": "e2c命中=['e2c-协同-样例']" }, { "flow": "F-01", "case": "FOLLOW_UP_DUE 视图命中提醒-超期(next_follow_time 已过)", "verdict": "✅", "detail": "e2c命中=['e2c-全字段-科技', 'e2c-提醒-超期']" }, { "flow": "F-01", "case": "公海列表 e2c 2 条且 enterPoolTime 有值(可排序)", "verdict": "✅", "detail": "e2c公海=2 enterPoolTime全有值=True" }, { "flow": "F-01", "case": "keyword 检索「恒信达」命中相似对", "verdict": "✅", "detail": "命中=['e2c-恒信达科技有限公司', 'e2c-恒信达科技有限公司', 'e2c-恒信达科技股份有限447414公司', 'e2c-恒信达科技股份有限447414公司', 'e2c-恒信达科技有限公司', 'e2c-恒信达科技有限责任公司']" }, { "flow": "F-01", "case": "customerStage=2 精确过滤", "verdict": "✅", "detail": "命中=['e2c-阶段-重潜-乙']" }, { "flow": "F-01", "case": "archiveStatus 缺省=1 默认排除已归档(D19)", "verdict": "✅", "detail": "" }, { "flow": "F-01", "case": "archiveStatus=2 可见已归档", "verdict": "✅", "detail": "" }, { "flow": "F-02", "case": "board/summary groupColumn=stage(阶段)返回有数据分组", "verdict": "✅", "detail": "groups=[1, 2, 3] sum=24" }, { "flow": "F-02", "case": "阶段 三列齐(潜在/重潜/已成交)", "verdict": "✅", "detail": "" }, { "flow": "F-02", "case": "board/summary groupColumn=star(客户星级)返回有数据分组", "verdict": "✅", "detail": "groups=[2, 3, 4, 5] sum=24" }, { "flow": "F-02", "case": "board/summary groupColumn=relation(关系星级)返回有数据分组", "verdict": "✅", "detail": "groups=[2, 3, 4, 5] sum=24" }, { "flow": "F-02", "case": "summary 总数与 page total 自洽(同 WHERE 口径)", "verdict": "✅", "detail": "summary=24 page=24" }, { "flow": "F-02", "case": "board/cards stage=2 取卡命中重潜样例", "verdict": "✅", "detail": "卡片=['e2c-阶段-重潜-乙']" }, { "flow": "F-02", "case": "groupColumn 越界静默忽略(不炸)", "verdict": "✅", "detail": "" }, { "flow": "F-03", "case": "list scopeKey=customer.mine(互不影响)", "verdict": "✅", "detail": "现有 0 个" }, { "flow": "F-03", "case": "list scopeKey=customer.overview(互不影响)", "verdict": "✅", "detail": "现有 0 个" }, { "flow": "F-03", "case": "list scopeKey=customer.pool(互不影响)", "verdict": "✅", "detail": "现有 0 个" }, { "flow": "F-03", "case": "save customer.mine → e2c-视图-未跟进", "verdict": "✅", "detail": "viewId=0b19cd3719ce4fc0823c29dcf46db171" }, { "flow": "F-03", "case": "save customer.overview → e2c-视图-五星", "verdict": "✅", "detail": "viewId=498952b15754428a98ddbee74db34b7c" }, { "flow": "F-03", "case": "save customer.pool → e2c-视图-公海甲", "verdict": "✅", "detail": "viewId=8d4b2bcf393a440997f60d7c960e64e4" }, { "flow": "F-03", "case": "savedViewId 应用生效(过滤叠加,DataScope 不变)", "verdict": "✅", "detail": "命中=['e2c-提醒-超期']" }, { "flow": "F-03", "case": "set-default 图钉(单值互斥)", "verdict": "✅", "detail": "" }, { "flow": "F-03", "case": "delete 视图", "verdict": "✅", "detail": "" }, { "flow": "F-03", "case": "删除后应用已删视图:不炸(静默/报错均可接受)", "verdict": "✅", "detail": "code=0" }, { "flow": "F-04", "case": "check-name 精确名命中", "verdict": "✅", "detail": "返回 [{'customerId': '750844478243209216', 'customerName': 'e2c-恒信达科技有限公司', 'ownerName': '罗伟健', 'customer" }, { "flow": "F-04", "case": "check-name 无命中返回空", "verdict": "✅", "detail": "返回 []" }, { "flow": "F-04", "case": "check-credit-code 命中全字段样例", "verdict": "✅", "detail": "返回 {'exists': True, 'masked': False, 'customerId': '750844477165273088', 'customerName': 'e2c-全字段-科技', " }, { "flow": "F-04", "case": "company-lookup stub 不炸(D5 划出仅 seam)", "verdict": "✅", "detail": "code=40001" }, { "flow": "F-04", "case": "名称相似 → needConfirm=true + similarHits(未落库)", "verdict": "✅", "detail": "needConfirm=True hits=[{'customerId': '750844478243209216', 'customerName': 'e2c-恒信达科技有限公司', 'ownerName': '罗伟健', 'customerStage': 1, 'archiveS" }, { "flow": "F-04", "case": "confirmSimilar=true「仍要创建」落库回 id+customerNo", "verdict": "✅", "detail": "id=750854377022947328 no=KH202609030029" }, { "flow": "F-04", "case": "similarHits 命中行含编号/名称/负责人/阶段(admin 全可见未脱敏)", "verdict": "✅", "detail": "首个hit={'customerId': '750844478243209216', 'customerName': 'e2c-恒信达科技有限公司', 'ownerName': '罗伟健', 'customerStage': 1, 'archiveStatus': 1, 'masked': " }, { "flow": "F-04", "case": "信用代码已存在 → 67003 硬拦(无仍要创建)", "verdict": "✅", "detail": "code=67003 如预期" }, { "flow": "F-04", "case": "客户编号格式 KH+yyyyMMdd+4位", "verdict": "✅", "detail": "no=KH202609030029" }, { "flow": "F-05", "case": "GET /{id} 全字段回显(含字典名/version)", "verdict": "✅", "detail": "缺=[] version=3" }, { "flow": "F-05", "case": "CAS version 缺失 → 67005(spec D-06)", "verdict": "⚠", "detail": "实际 code=67001 msg=缺少乐观锁版本号——语义可达但错误码与 spec 不符" }, { "flow": "F-05", "case": "PUT 带 version 编辑成功", "verdict": "✅", "detail": "code=0 msg=success" }, { "flow": "F-05", "case": "oplog UPDATE 字段级「旧→新」叙事(D13)", "verdict": "✅", "detail": "detail=把人脉关系单位从[\"\\u6807\\u6746\\u5ba2\\u6237\", \"\\u540c\\u884c\\u63a8\\u8350\"]修改为空;把公司决策人从王总修改为空;把合作系统从OA对接修改为空;把是否参加总裁班从1修改为空;把总裁班参加人从王总修改为空;把总裁班参加人电话从13" }, { "flow": "F-05", "case": "改信用代码撞 simA → 67003", "verdict": "✅", "detail": "code=67003 如预期" }, { "flow": "F-06", "case": "电话非手机号格式被拒", "verdict": "✅", "detail": "code=67001 msg=联系电话须为手机号格式" }, { "flow": "F-06", "case": "所属客户不存在 → 67002", "verdict": "✅", "detail": "code=67002 如预期" }, { "flow": "F-06", "case": "联系人分页 keyword 命中", "verdict": "✅", "detail": "total=1" }, { "flow": "F-06", "case": "全局搜索按电话命中 2 条(商机侧数据源)", "verdict": "✅", "detail": "命中=['王重复', '张关键']" }, { "flow": "F-06", "case": "搜索带出所属公司名(customerName)", "verdict": "✅", "detail": "样本={'id': '750844500779204608', 'createTime': '2026-09-03 22:27:59', 'customerId': '750844477165273088', 'name': '李普通', 'jo" }, { "flow": "F-06", "case": "check-phone 跨客户命中(D26 只提示不阻断)", "verdict": "✅", "detail": "命中 2 条" }, { "flow": "F-06", "case": "W-01 source 字段回显(contact_source 字典组缺失,创建不校验)", "verdict": "✅", "detail": "source=contact_source_01" }, { "flow": "F-06", "case": "PUT 编辑联系人", "verdict": "✅", "detail": "" }, { "flow": "F-06", "case": "DELETE 软删后列表不含", "verdict": "✅", "detail": "tmp id=750854387282214912" }, { "flow": "F-07", "case": "头部关键项齐(阶段只读条/星级/协议VIP快照/负责人/跟进摘要/待跟进提醒/关联计数)", "verdict": "✅", "detail": "缺=[]" }, { "flow": "F-07", "case": "汇总卡 5 字段恒 null(占位契约)", "verdict": "✅", "detail": "非null=[]" }, { "flow": "F-07", "case": "projectCount 恒 null(A5 seam 未接入显 --)", "verdict": "✅", "detail": "projectCount=None" }, { "flow": "F-07", "case": "D-01 复验:交割-甲 opportunityCount==1(修复后真值)", "verdict": "✅", "detail": "opportunityCount=1" }, { "flow": "F-07", "case": "关联商机页签 port 反查命中 e2c-联动-交割", "verdict": "✅", "detail": "商机=['e2c-联动-交割']" }, { "flow": "F-07", "case": "oplog action 值域 ⊆ 11 种白名单", "verdict": "✅", "detail": "实际=['CREATE', 'FOLLOW', 'MEMBER_ADD', 'MEMBER_REMOVE', 'UPDATE']" }, { "flow": "F-07", "case": "已归档客户详情可开(档案状态=已归档)", "verdict": "✅", "detail": "archiveStatus=2" }, { "flow": "F-07", "case": "详情客户不存在 → 67002", "verdict": "✅", "detail": "code=67002 如预期" }, { "flow": "F-08", "case": "跟进内容空 → 67009", "verdict": "✅", "detail": "code=67009 如预期" }, { "flow": "F-08", "case": "nextFollowTime 早于当前 → 67009(spec)", "verdict": "⚠", "detail": "实际 code=0 落库成功——过期下次跟进未拦截,会造成永久超期提醒" }, { "flow": "F-08", "case": "正常写入返回跟进 id", "verdict": "✅", "detail": "id=750854396027338752 way=follow_way_01" }, { "flow": "F-08", "case": "customer_follow 行落库(append-only)", "verdict": "✅", "detail": "" }, { "flow": "F-08", "case": "D25 锚点 last_valid_follow_time 刷新", "verdict": "✅", "detail": "2026-09-03 23:06:02 → 2026-09-03 23:07:18" }, { "flow": "F-08", "case": "跟进页签时间倒序含新记录", "verdict": "✅", "detail": "首条=['e2c-F08 跟进实测:电话沟通年度合作意向']" }, { "flow": "F-08", "case": "followWay 筛选生效", "verdict": "✅", "detail": "way=follow_way_01" }, { "flow": "F-08", "case": "30s 内同内容重复提交 → 67009", "verdict": "✅", "detail": "code=67009 如预期" }, { "flow": "F-08", "case": "头部最近跟进摘要联动最新一条", "verdict": "✅", "detail": "summary=e2c-F08 跟进实测:电话沟通年度合作意向" }, { "flow": "F-08", "case": "待跟进提醒 nextFollowTime 非空(seed 明天回访)", "verdict": "✅", "detail": "next=2026-09-04 22:27:57" }, { "flow": "F-08", "case": "append-only:跟进无编辑口(PUT 不成功即可)", "verdict": "✅", "detail": "code=404" }, { "flow": "F-09", "case": "focus 幂等:两次关注仍单行", "verdict": "✅", "detail": "行数=1" }, { "flow": "F-09", "case": "star 未关注自动建行 starred=1", "verdict": "✅", "detail": "[{'id': 750854403862298624, 'starred': 1}]" }, { "flow": "F-09", "case": "unstar 保留行仅 starred=0", "verdict": "✅", "detail": "[{'id': 750854403862298624, 'starred': 0}]" }, { "flow": "F-09", "case": "focus-batch 3 客户各建 1 行", "verdict": "✅", "detail": "行数合计=3" }, { "flow": "F-09", "case": "pool FOCUSED 视图命中关注的公海客户", "verdict": "✅", "detail": "命中=['e2c-公海-甲', 'e2c-公海-乙']" }, { "flow": "F-09", "case": "unfocus 物理删行(连带清 starred)", "verdict": "✅", "detail": "剩余=0" }, { "flow": "F-09", "case": "关注动作不写 oplog", "verdict": "✅", "detail": "actions=['CLAIM', 'CREATE', 'POOL', 'TRANSFER']" }, { "flow": "F-10", "case": "负责人在首位(ROLE_OWNER 快照)", "verdict": "✅", "detail": "首行={'userId': '739564171091247104', 'userName': '罗伟健', 'deptName': '广东保伦电子股份有限公司', 'role': 'OWNER'}" }, { "flow": "F-10", "case": "名单空被拒(67016/绑定拒)", "verdict": "✅", "detail": "code=67016" }, { "flow": "F-10", "case": "含负责人 → 67016", "verdict": "✅", "detail": "code=67016 如预期" }, { "flow": "F-10", "case": "添加协同人 BUDDY", "verdict": "✅", "detail": "code=0" }, { "flow": "F-10", "case": "team_member 行在(delete_key=0)", "verdict": "✅", "detail": "[{'id': 750851822075248640, 'delete_key': 750851822075248640}, {'id': 750851827313934336, 'delete_key': 750851827313934336}, {'id': 750853215641141248, 'delete_key': 750853215641141248}, {'id': 750853220749803520, 'delete_key': 750853220749803520}, {'id': 750854095941664768, 'delete_key': 750854095941664768}, {'id': 750854100916109312, 'delete_key': 750854100916109312}, {'id': 750854417284071424, 'delete_key': 0}]" }, { "flow": "F-10", "case": "重复加入 → 67016(整批拒绝)", "verdict": "✅", "detail": "code=67016 如预期" }, { "flow": "F-10", "case": "oplog MEMBER_ADD", "verdict": "✅", "detail": "actions=['MEMBER_ADD', 'FOLLOW', 'FOLLOW', 'UPDATE', 'MEMBER_REMOVE', 'MEMBER_ADD']" }, { "flow": "F-10", "case": "移除软删(delete_key>0)", "verdict": "✅", "detail": "[{'delete_key': 750851822075248640}, {'delete_key': 750851827313934336}, {'delete_key': 750853215641141248}, {'delete_key': 750853220749803520}, {'delete_key': 750854095941664768}, {'delete_key': 750854100916109312}, {'delete_key': 750854417284071424}]" }, { "flow": "F-10", "case": "oplog MEMBER_REMOVE", "verdict": "✅", "detail": "" }, { "flow": "F-10", "case": "移除后可重加(delete_key 复用键)", "verdict": "✅", "detail": "" }, { "flow": "F-11", "case": "领取公海客户 → 当前用户(owner+快照)", "verdict": "✅", "detail": "code=0" }, { "flow": "F-11", "case": "领取后 D25 锚点赋当下(last_valid_follow_time 非空)", "verdict": "✅", "detail": "t=2026-09-03 22:55:18" }, { "flow": "F-11", "case": "重复领取失败(非公海态)", "verdict": "✅", "detail": "code=67004 msg=客户已被领取,不在公海" }, { "flow": "F-11", "case": "观察点:BUDDY(无角色)领取被拒", "verdict": "✅", "detail": "code=67004 msg=客户已被领取,不在公海" }, { "flow": "F-11", "case": "分配给本人 → 67012", "verdict": "✅", "detail": "code=67012 如预期" }, { "flow": "F-11", "case": "分配给 BUDDY 成功(owner 换绑+快照)", "verdict": "✅", "detail": "code=0 owner=744842318024015872" }, { "flow": "F-11", "case": "实验后 DB 还原 stage1 归属(assign 回本人被 67012 拦)", "verdict": "✅", "detail": "" }, { "flow": "F-11", "case": "有进行中商机抛公海 → 67007", "verdict": "✅", "detail": "code=67007 如预期" }, { "flow": "F-11", "case": "抛公海清 owner、部门锚点保留", "verdict": "✅", "detail": "owner=None dept=744841292348915712" }, { "flow": "F-11", "case": "claim 还原 stage1(owner=admin)", "verdict": "✅", "detail": "code=0" }, { "flow": "F-11", "case": "归属动作 oplog(TRANSFER/POOL/CLAIM 齐——assign 写 TRANSFER)", "verdict": "✅", "detail": "actions=['CLAIM', 'CREATE', 'POOL', 'TRANSFER']" }, { "flow": "F-11", "case": "有进行中商机归档 → 67006", "verdict": "✅", "detail": "code=67006 如预期" }, { "flow": "F-11", "case": "archive-batch 整批预检:含阻断户整批不执行(star5 仍有效)", "verdict": "✅", "detail": "star5 archive_status=1 resp={'code': 67006, 'success': False, 'message': '客户存在进行中商机,不可归档', 'data': None}" }, { "flow": "F-11", "case": "归档 star5(archive_status=2)", "verdict": "✅", "detail": "st=2" }, { "flow": "F-11", "case": "已归档 detail-head archiveStatus=2", "verdict": "✅", "detail": "" }, { "flow": "F-11", "case": "恢复 star5(archive_status=1)", "verdict": "✅", "detail": "st=1" }, { "flow": "F-11", "case": "还原:pool1 抛回公海(owner 空且 enter_pool_time 有值)", "verdict": "✅", "detail": "owner=None enter=2026-09-03 23:07:29" }, { "flow": "F-12", "case": "quick-create 最小集落库回 id+customerNo", "verdict": "✅", "detail": "{'id': '750854443070652416', 'needConfirm': None, 'similarHits': None, 'customerNo': 'KH202609030030', 'customerName': '" }, { "flow": "F-12", "case": "默认值:owner=当前用户 / is_child=否 / isBizNegotiated=否", "verdict": "✅", "detail": "owner=739564171091247104 is_child=0 is_biz=0" }, { "flow": "F-12", "case": "已知缺口复现:无 confirmSimilar,命中相似无法仍要创建(预登记不算新缺陷)", "verdict": "✅", "detail": "首次needConfirm=True 带参重发needConfirm=True" }, { "flow": "F-12", "case": "search 名称模糊命中 simA/simB", "verdict": "✅", "detail": "命中=['e2c-恒信达科技有限公司', 'e2c-恒信达科技有限公司', 'e2c-恒信达科技有限公司', 'e2c-恒信达科技股份有限447414公司', 'e2c-恒信达科技股份有限447414公司', 'e2c-恒信达科技有限公司', 'e2c-恒信达科技有限责任公司']" }, { "flow": "F-12", "case": "search 类型精确过滤", "verdict": "✅", "detail": "total=7 ctype=customer_type_01" }, { "flow": "F-12", "case": "search excludeCustomerIds 排除 simA(按 id 判,同名 tmp 不干扰)", "verdict": "✅", "detail": "命中id数=6" }, { "flow": "F-12", "case": "contacts 按客户带出(张关键/李普通/王重复)", "verdict": "✅", "detail": "名单=['李普通', '王重复', '张关键']" } ], "defects": [ { "id": "D-03", "severity": "P2", "title": "编辑缺 version 报 67001,spec 约定 67005", "detail": "PUT /api/customer/{id} 缺 version 返回 67001+「缺少乐观锁版本号」;spec D-06 定义 67005。前端按错误码分流提示会踩坑,需对齐。" }, { "id": "D-02", "severity": "P2", "title": "跟进 nextFollowTime 早于当前未拦截(spec 应 67009)", "detail": "POST /{id}/follow 传过去时间 nextFollowTime=2026-09-01T10:00:00 返回成功落库;spec F-08 约定 67009。会产生永远无法消除的超期提醒(FOLLOW_UP_DUE 视图命中)。" } ], "elapsedSec": 23.2 }