{ "schema": "ksf.scope-note.v1", "at": "2026-11-09T01:20:00+08:00", "aboutArtifact": "c5vzRWqux6", "aboutSource": "8RgNyujlzh", "generation": "82b104fc024b49a75d2f5376bf9778ced6f63a9433b5fc5a6daa3c458d05d5ea", "verdict": "两表口径不同,不可合并;原报告未标此差异,本次补明", "tableA_banmian_117": { "displayed": "拌面 117 条", "actualQuery": { "command": "aggregate", "request": { "entities": [ "reviews" ], "filters": { "brand": "康师傅" }, "groupBy": [ "category" ], "limit": 50 }, "effectiveFilters": "brand=ksf(品类不限,按 category 分组)", "quality": "analysis(默认:排除默认评价、身份待核/错配、规格冲突;未指定品类时不强制猜品类)" }, "whatItIs": "在 brand=康师傅 全量评价(505 条)内,按 category 分组后 banmian 这一桶的 recordCount", "metrics": { "recordCount": 117, "linkedProductCount": 7, "distinctTextCount": 116, "note": "recordCount=记录数;linkedProductCount=关联商品去重数;distinctTextCount=按归一化文字去重数。三者都不是销量、独立消费者数或用户占比。" }, "denominator": { "value": 505, "meaning": "brand=康师傅 且 quality=analysis 的全部评价记录", "share": "117/505=23.2%", "caveat": "分母是本批收录,不是康师傅市场总量" }, "paging": { "groupBy": "category", "truncated": false, "groupsReturned": 5, "note": "aggregate 一次性返回全部分组,无分页" }, "eligibility": "分析资格=quality:analysis;属于「本批合格、已判定集合内的分布」,不外推全体消费者", "clarityNote": "117 是分组桶值,不是筛选命中数。若读者要的是「确认是拌面购买的评价数」,应用 29(search + category=banmian + analysis)。" }, "tableB_ksf_29": { "displayed": "康师傅 29 条", "actualQuery": { "command": "search", "request": { "entities": [ "reviews" ], "filters": { "brand": "康师傅", "category": "banmian" }, "limit": 100 }, "effectiveFilters": "brand=ksf AND category=banmian", "quality": "analysis" }, "whatItIs": "康师傅品牌下、品类明确为拌面 的评价条数(totalMatched)", "isPagingArtifact": false, "paging": { "limit": 100, "returned": 29, "totalMatched": 29, "nextCursor": null, "conclusion": "29 是精确匹配总数,已全部取回,不是首屏条数、不是截断值" }, "metrics": { "totalMatched": 29, "distinctLinkedProducts": 2, "distinctTextFingerprints": 28 }, "denominator": { "value": 29, "meaning": "康师傅∧拌面 且 quality=analysis 的评价记录" }, "crossCheck": { "banmian_全品牌": { "totalMatched": 49, "distinctLinkedProducts": 4 }, "note": "29 ⊂ 49;康师傅占全品牌拌面评价 29/49=59.2%(本批收录内)" }, "clarityNote": "29 是显式指定品类的筛选命中总数,口径比 117 更严,适合作为「已确认拌面消费评价」的基数。" }, "criticalDistinction": { "why_117_ne_29": "不是同一筛选对象,也不是同品质等级。117=brand=康师傅全量评价按 category 分组后 banmian 桶(quality=analysis,分母505);29=显式加 category=banmian 筛选的命中总数(quality=analysis)。二者都真,但衡量的是不同东西:前者是'这条评价被标为拌面',后者是'这条评价被确认是拌面购买'。", "reconciliation_verified": { "audit_对照": "同条件下 quality=audit:分组桶 banmian=472,独立筛选 category=banmian=472,两者完全相等 -> 说明分组与筛选口径本身一致,差异只由 quality 规则产生", "analysis_差额": "analysis 下 分组桶117 vs 独立筛选29,差 88 条。原因:默认 defaultReviewPolicy 写明'指定品类时购买规格也须明确,未指定品类时不强制猜品类'。aggregate 未指定品类筛选,故 117 含规格未明确的记录;search 显式指定 category=banmian,故 29 必须购买规格明确符合。", "conclusion": "差额机制已实测确认,不是数据不一致,是两条规则在 '是否指定品类' 上的差别。" }, "action": "不得把 117 与 29 并作同一口径,也不得互相验算;引用时必须带上各自的 quality 与是否显式指定 category 两个条件" }, "brandTable_unmatched": { "displayed": "今麦郎 / 日清 / 农心 未命中", "fromQuery": { "command": "search", "filters": { "brand": "<品牌>", "category": "banmian" }, "quality": "analysis" }, "scope": "仅限该次查询条件(该品牌 ∧ 拌面 ∧ analysis 品质)下的结果", "mustNotConclude": [ "研究库完全未收录该品牌", "该品牌不存在拌面产品", "市场无该品牌拌面" ], "supportingEvidence": "按 brand 分组 aggregate(不限品类)显示:今麦郎 jinmailang 28 条、日清 riqing 40 条、农心 nongxin 20 条——三品牌在库内均有评价,只是未落在「拌面」这一品类桶内。", "status": "该三品牌是否有拌面产品,需另查品类标注覆盖,标为待核" }, "queryEvidenceIndex": [ { "label": "品类分布(505/304/117/50/25/9)", "command": "aggregate", "request": { "entities": [ "reviews" ], "filters": { "brand": "康师傅" }, "groupBy": [ "category" ], "limit": 50 }, "result": { "ok": true, "groups": 5, "truncated": false, "records": 505 }, "file": "/tmp/recheck/out_a.json" }, { "label": "品牌分布(康师傅505/阿宽48/白象41/日清40/五谷道场34/今麦郎28/统一25/农心20)", "command": "aggregate", "request": { "entities": [ "reviews" ], "groupBy": [ "brand" ], "limit": 50 }, "result": { "ok": true, "groups": 7, "truncated": false }, "file": "/tmp/recheck/out_b1.json" }, { "label": "康师傅∧拌面=29", "command": "search", "request": { "entities": [ "reviews" ], "filters": { "brand": "康师傅", "category": "banmian" }, "limit": 100 }, "result": { "ok": true, "totalMatched": 29, "nextCursor": null }, "file": "/tmp/recheck/o_d2.json" }, { "label": "拌面全品牌=49", "command": "search", "request": { "entities": [ "reviews" ], "filters": { "category": "banmian" }, "limit": 100 }, "result": { "ok": true, "totalMatched": 49, "nextCursor": null }, "file": "/tmp/recheck/o_d1.json" }, { "label": "康师傅全部=505", "command": "search", "request": { "entities": [ "reviews" ], "filters": { "brand": "康师傅" }, "limit": 100 }, "result": { "ok": true, "totalMatched": 505 }, "file": "/tmp/recheck/o_d3.json" } ], "sourceObjectClarification": { "8RgNyujlzh": "本次保存时形成的 KfSource 对象,是「这次报告的来源记录」本身", "isUpstreamEvidenceForNumbers": false, "reason": "各表数字的上游是研究库 generation %s 下的检索结果,不是 8RgNyujlzh。成果对象只承载引用关系,不能反过来当数据来源。", "correctUpstream": "研究库 generation=82b104fc024b49a75d2f5376bf9778ced6f63a9433b5fc5a6daa3c458d05d5ea,经 ssh-channel 只读检索(databaseWrites=0,readOnly=true)" }, "completionBoundary": { "doesComplete": "业务链路验收(保存→编号回读→公开看板→桌面浏览器)", "doesNotComplete": [ "课表第一节「供给树、需求树、供需连接图谱」", "机会卡、项目、方案", "正式报告发布" ], "reportsPosition": "本成果是库内分布小结(S1 品类结构),不足以标记第一节全完成" }, "archiveClarification": { "employeeAccountsProvisioned_false": "不是课堂保存的阻断条件。保存与看板均已在 provisioned=false 下成功。", "employeeConfirmed_false": "表示尚未正式确认报告,与通讯录实名核验是不同字段", "employeeIdentity_status": "pending,reason=WECOM_DIRECTORY_NOT_CONFIGURED(通讯录未配置,需单独核验,不能只由 'provisioned' 一个标志推断)", "writesThisRound": { "primaryObjects": [ "KfArtifact c5vzRWqux6", "KfSource 8RgNyujlzh" ], "note": "不等于数据库总写入仅两次——保存还更新会话等关联记录。" } }, "boundaries": { "reinstalled": false, "collected": false, "paidCalls": 0, "repeatedSave": false, "modifiedReport": false, "modifiedSkill": false, "changedAuth": false, "queryMode": "只读复算(readOnly=true, databaseWrites=0),用于核实口径,非新采集" }, "auditCrossCheck": { "command": "aggregate/search + quality=audit", "banmian_bucket_audit": 472, "banmian_filter_audit": 472, "brand_ksf_total_audit": 2681, "note": "audit 含默认/待核/冲突数据,仅作口径核对,不得当有效观点样本" } }