You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

691 lines
20 KiB

3 days ago
{
"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
}