{ "results": [ { "flow": "F01", "case": "convertible-leads 下拉接口", "verdict": "✅", "evidence": "返回 0 条可关联线索" }, { "flow": "F01", "case": "必填校验(缺商机名称)", "verdict": "✅", "evidence": "被拒: 商机名称不能为空" }, { "flow": "F01", "case": "新建商机", "verdict": "✅", "evidence": "id=749393787444264960" }, { "flow": "F01", "case": "初始负责人=当前用户", "verdict": "✅", "evidence": "owner=744842565802524672" }, { "flow": "F01", "case": "初始 oppStatus(U01 观察口径)", "verdict": "✅", "evidence": "实测=2(PRD §3.1 取值域内;seed 同现象=2 推进中)" }, { "flow": "F01", "case": "新建后出现在 MINE 视图", "verdict": "✅", "evidence": "MINE 命中 1 条" }, { "flow": "F02", "case": "A/MANAGE 视图 total=13", "verdict": "✅", "evidence": "期望 13(seed 校验值+F01 新建)" }, { "flow": "F02", "case": "A/MINE 视图 total=5", "verdict": "✅", "evidence": "期望 5(seed 校验值+F01 新建)" }, { "flow": "F02", "case": "A/PUBLIC_POOL 视图 total=2", "verdict": "✅", "evidence": "期望 2(seed 校验值+F01 新建)" }, { "flow": "F02", "case": "A/FOLLOWED 视图 total=1", "verdict": "✅", "evidence": "期望 1(seed 校验值+F01 新建)" }, { "flow": "F02", "case": "A/RECENT 初始(未上报前)", "verdict": "✅", "evidence": "total=0(空即符合「仅记录访问过的」)" }, { "flow": "F02", "case": "A/PARTICIPATED", "verdict": "✅", "evidence": "total=0(观察值;seed 无团队成员样例,范围口径记录)" }, { "flow": "F02", "case": "B/MINE 范围(公海态不计 MINE)", "verdict": "✅", "evidence": "total=4(期望 4:B 造 5 条-1 已入公海)" }, { "flow": "F02", "case": "A/MINE 不含 B 商机(范围互斥)", "verdict": "✅", "evidence": "混入: []" }, { "flow": "F02", "case": "keyword 筛选生效", "verdict": "✅", "evidence": "命中 2(应仅智慧园区 2 条-F01 无关词)" }, { "flow": "F02", "case": "statusIn=1 筛选(公海态)", "verdict": "✅", "evidence": "total=2(期望 2)" }, { "flow": "F02", "case": "page 出参回显列存在性", "verdict": "✅", "evidence": "schemeCardStatus/stageStayDays/lastFollowTime 均在" }, { "flow": "F02", "case": "有卡/有跟进商机的回显值非空", "verdict": "✅", "evidence": "A2 行三列全有值" }, { "flow": "F02", "case": "公海视图回显入池原因 poolReason", "verdict": "✅", "evidence": "poolReason=pool_reason_02 poolStageNameSnapshot=None" }, { "flow": "F03", "case": "MANAGE summary 合计=7 vs page(=推进态(status2))=7", "verdict": "✅", "evidence": "口径: =推进态(status2)" }, { "flow": "F03", "case": "board/cards 首批限量+翻页不重不漏", "verdict": "✅", "evidence": "首页=['749393658331004928'] 次页=['749393787444264960']" }, { "flow": "F03", "case": "PUBLIC_POOL summary 合计=2 vs page(=公海态(status1))=2", "verdict": "✅", "evidence": "口径: =公海态(status1)" }, { "flow": "F04", "case": "view-touch 上报", "verdict": "✅", "evidence": "" }, { "flow": "F04", "case": "detail 出参全性(PRD §7.9)", "verdict": "✅", "evidence": "6 个联动字段全非空" }, { "flow": "F04", "case": "detail.followed(A 已关注 B1,非 A2)", "verdict": "✅", "evidence": "A2.followed=False" }, { "flow": "F04", "case": "RECENT 出现刚访问的商机", "verdict": "✅", "evidence": "recent ids 前3=['749393658331004928', '749393660067446784']" }, { "flow": "F04", "case": "RECENT 倒序(后访问在前)", "verdict": "✅", "evidence": "A1 idx=0 A2 idx=1(A1 后 touch 应更靠前)" }, { "flow": "F05", "case": "D-14 编辑改空被拒(66001 逐字段)", "verdict": "✅", "evidence": "被拒: 商机名称不能为空" }, { "flow": "F05", "case": "编辑回写", "verdict": "✅", "evidence": "" }, { "flow": "F05", "case": "remark 已更新", "verdict": "✅", "evidence": "remark=E2E改备注-22:23:21" }, { "flow": "F05", "case": "暂缓态编辑受限(负路径)", "verdict": "✅", "evidence": "被拒: 暂缓中的商机不允许此操作,请先取消暂缓" }, { "flow": "F06", "case": "unfocus 后 FOLLOWED=0", "verdict": "✅", "evidence": "total=0" }, { "flow": "F06", "case": "focus 后 FOLLOWED=1 且 detail.followed=true", "verdict": "✅", "evidence": "FOLLOWED=1 followed=True" }, { "flow": "F06", "case": "focus-batch 两条 → FOLLOWED=3", "verdict": "✅", "evidence": "total=3" }, { "flow": "F06", "case": "B 视角关注 A 商机(跨部门可见性)", "verdict": "✅", "evidence": "B_FOLLOWED=1" }, { "flow": "F07", "case": "写跟进", "verdict": "✅", "evidence": "id=749393818305953792" }, { "flow": "F07", "case": "跟进分页 +1", "verdict": "✅", "evidence": "2 → 3" }, { "flow": "F07", "case": "lastFollowTime/lastValidFollowTime 刷新(回收锚点)", "verdict": "✅", "evidence": "last=2026-08-30 22:23:29 valid=2026-08-30 22:23:21" }, { "flow": "F07", "case": "delete 后分页 -1", "verdict": "✅", "evidence": "3 → 2" }, { "flow": "F08", "case": "探针:file/upload(无有效凭据)", "verdict": "⚠", "evidence": "code=0 msg=success——预期失败,证明 MinIO 链路前置未通" }, { "flow": "F09", "case": "selectable-templates 含发布中模板", "verdict": "✅", "evidence": "1 条,templateId=748508098259320832" }, { "flow": "F09", "case": "valuesJson 装配(seed 卡 fields 骨架)", "verdict": "✅", "evidence": "fields=8 动态项=6" }, { "flow": "F09", "case": "一客户一卡约束(同客户重复建卡被拒)", "verdict": "✅", "evidence": "被拒: 该客户在本商机下已有方案卡(一客户一卡),请直接编辑原卡" }, { "flow": "F09", "case": "新建方案卡草稿", "verdict": "✅", "evidence": "cardId=749393824647741440" }, { "flow": "F09", "case": "草稿态 cardStatus=1", "verdict": "✅", "evidence": "cardStatus=1" }, { "flow": "F09", "case": "草稿可编辑(card_status<3)+ 预算回写", "verdict": "✅", "evidence": "budget=130000.0" }, { "flow": "F09", "case": "提交后 cardStatus 推进", "verdict": "✅", "evidence": "cardStatus=2" }, { "flow": "F09", "case": "提交后主表 schemeBudget/schemeCardStatus 回显(P0-4 锚点)", "verdict": "✅", "evidence": "主表 budget=880000.0 cardStatus=2(多卡取值口径观察)" }, { "flow": "F09", "case": "多卡列表口径(2 张卡并列)", "verdict": "✅", "evidence": "2 张" }, { "flow": "F10", "case": "勘察次数需调用方传(D-18 翻案)", "verdict": "✅", "evidence": "不传 surveySeq 被拒(符合裁决)" }, { "flow": "F10", "case": "新增勘察(传 surveySeq)", "verdict": "✅", "evidence": "id=749393831216021504" }, { "flow": "F10", "case": "次数列表回显(调用方传值落库)", "verdict": "✅", "evidence": "surveySeq 列表=['survey_seq_01']" }, { "flow": "F10", "case": "补充说明非强制(D-19 翻案)", "verdict": "✅", "evidence": "空说明放行(符合裁决)" }, { "flow": "F10", "case": "删除后次数重算(口径观察)", "verdict": "✅", "evidence": "删后 surveySeq=['survey_seq_02']" }, { "flow": "F11", "case": "customer/list(seed DB 补入的关联客户)", "verdict": "✅", "evidence": "2 条" }, { "flow": "F11", "case": "出参结构(角色/快照/主要意向标记)", "verdict": "✅", "evidence": "role=customer_role_01 snapshot=园科集团(seed快照) primary=1" }, { "flow": "F11", "case": "primaryCustomerSnapshot 与 detail 回显一致", "verdict": "✅", "evidence": "detail.primary=园科集团(seed快照)" }, { "flow": "F11", "case": "端点探测 /api/opportunity/customer/add", "verdict": "✅", "evidence": "HTTP 200" }, { "flow": "F11", "case": "端点探测 /api/opportunity/customer/search", "verdict": "✅", "evidence": "HTTP 200" }, { "flow": "F11", "case": "端点探测 /api/opportunity/customer/set-primary", "verdict": "✅", "evidence": "HTTP 200" }, { "flow": "F12", "case": "team/list", "verdict": "✅", "evidence": "1 条(seed 无样例)" }, { "flow": "F12", "case": "端点探测 /api/opportunity/team/add", "verdict": "✅", "evidence": "HTTP 200" }, { "flow": "F12", "case": "端点探测 /api/opportunity/team/delete", "verdict": "✅", "evidence": "HTTP 200" }, { "flow": "F12", "case": "端点探测 /api/opportunity/team/update", "verdict": "✅", "evidence": "HTTP 200" }, { "flow": "F12", "case": "PARTICIPATED 视图(成员联动口径,无样例记录观察)", "verdict": "✅", "evidence": "total=0" }, { "flow": "F14", "case": "暂缓 E4: 2→3", "verdict": "✅", "evidence": "oppStatus=3" }, { "flow": "F14", "case": "暂缓态关闭(E6 2,3→4 合法边,D-08 翻案)", "verdict": "✅", "evidence": "oppStatus=4" }, { "flow": "F14", "case": "数据修正后回到暂缓态", "verdict": "✅", "evidence": "oppStatus=3" }, { "flow": "F14", "case": "CAS 守卫(§3.4):前置态已变再提交", "verdict": "✅", "evidence": "被拒: 当前状态不允许此操作" }, { "flow": "F14", "case": "取消暂缓 E5: 3→2", "verdict": "✅", "evidence": "" }, { "flow": "F14", "case": "关闭 E6: 2→4", "verdict": "✅", "evidence": "" }, { "flow": "F14", "case": "受限态出边:已关闭不可 resume", "verdict": "✅", "evidence": "当前状态不允许此操作" }, { "flow": "F14", "case": "重启 E7: 4→2", "verdict": "✅", "evidence": "" }, { "flow": "F14", "case": "抛公海 E3: 2→1(公海 total)", "verdict": "✅", "evidence": "PUBLIC_POOL=4(期望 2+2)" }, { "flow": "F14", "case": "poolReason 枚举落库+公海回显(§3.5)", "verdict": "✅", "evidence": "poolReason=pool_reason_02" }, { "flow": "F14", "case": "领取 E1: 1→2 + 负责人变更", "verdict": "✅", "evidence": "status=2 owner=744842566742048768" }, { "flow": "F14", "case": "批量领取", "verdict": "✅", "evidence": "" }, { "flow": "F14", "case": "分配 E2: 1→2 指定负责人", "verdict": "✅", "evidence": "owner=744842565802524672" }, { "flow": "F14", "case": "批量分配", "verdict": "✅", "evidence": "" }, { "flow": "F14", "case": "批量关闭", "verdict": "✅", "evidence": "" }, { "flow": "F14", "case": "移交 E9(自环换 owner)", "verdict": "✅", "evidence": "owner=744842566742048768" }, { "flow": "F14", "case": "U02 禁领规则草稿", "verdict": "✅", "evidence": "id=749393869115752448" }, { "flow": "F14", "case": "U02 禁领版本发布", "verdict": "✅", "evidence": "" }, { "flow": "F14", "case": "U02 禁领负路径:领取被拒", "verdict": "✅", "evidence": "被拒: 该商机所属部门已配置禁领规则,无法自由领取,请联系管理员分配" }, { "flow": "F14", "case": "停用禁领版后恢复领取", "verdict": "✅", "evidence": "" }, { "flow": "F14", "case": "切阶段前进(progress 当前节点变化)", "verdict": "✅", "evidence": "当前节点={'nodeId': '747831302870269952', 'seqNo': 2, 'stageDictCode': 'OPP_STAGE_02', 'customNodeName': None, 'workGoal': None, 'isFixed': 0, 'nodeState': 'CURRENT'}" }, { "flow": "F14", "case": "切阶段回退", "verdict": "✅", "evidence": "" }, { "flow": "F14", "case": "非法 toStageId 负路径", "verdict": "✅", "evidence": "目标阶段节点不存在或已被删除" }, { "flow": "F13", "case": "oplog/page(A2 经历 release/close/reopen/handover 应有多条)", "verdict": "✅", "evidence": "7 条" }, { "flow": "F13", "case": "oplog 字段(实体/字段/旧值/新值/说明 P1-5)", "verdict": "✅", "evidence": "keys=['bizRef', 'createTime', 'creatorId', 'deleted', 'entityName', 'fieldName', 'id', 'logType']" }, { "flow": "F13", "case": "oplog 覆盖内容(流转是否留痕观察)", "verdict": "✅", "evidence": "7 条: [('STATUS_FLOW', 'opp_status'), ('STATUS_FLOW', 'opp_status'), ('STATUS_FLOW', 'opp_status'), ('STATUS_FLOW', 'opp_status'), ('STATUS_FLOW', 'opp_status'), ('ROW_CHANGE', None), ('ROW_CHANGE', None)]" }, { "flow": "F13", "case": "stage/history(切阶段 2 次应留痕)", "verdict": "✅", "evidence": "2 条" }, { "flow": "F13", "case": "progress 节点名+完成状态(U08)", "verdict": "✅", "evidence": "5 节点" }, { "flow": "F13", "case": "工作目标文本存在性(U08 宽断言)", "verdict": "⚠", "evidence": "goal=False" }, { "flow": "F15", "case": "save 视图", "verdict": "✅", "evidence": "viewId=02728186409947cb90cd93a1f692cb84" }, { "flow": "F15", "case": "list 查到新视图", "verdict": "✅", "evidence": "" }, { "flow": "F15", "case": "同 viewId 重复 save(upsert 语义实测)", "verdict": "✅", "evidence": "同 id 条数=1 name=e2e-A-改名视图" }, { "flow": "F15", "case": "set-default 回显默认标记", "verdict": "✅", "evidence": "isDefault=True" }, { "flow": "F15", "case": "scopeKey 维度隔离(lead 视图不串 opportunity 域;list 出参无 scopeKey 回显)", "verdict": "✅", "evidence": "lead names=['e2e-A-lead域视图', 'e2e-A-lead域视图', 'e2e-A-lead域视图', 'e2e-A-lead域视图', 'e2e-A-lead域视图', 'e2e-A-lead域视图', 'e2e-A-lead域视图', 'e2e-A-lead域视图', 'e2e-A-lead域视图', 'e2e-A-lead域视图', 'e2e-A-lead域视图', 'e2e-A-lead域视图'] / opportunity names=['e2e-A-改名视图', 'e2e-A-改名视图']" }, { "flow": "F15", "case": "delete 后消失", "verdict": "✅", "evidence": "" }, { "flow": "F15", "case": "B 的 seed 视图不受影响", "verdict": "✅", "evidence": "B 视图 1 条" } ], "defects": [], "skips": [ [ "F08", "MinIO 凭据未注入(E2E_MINIO_AK/SK),整链 SKIP;保留 file/upload 探针证据" ] ] }