scope-note.json 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. {
  2. "schema": "ksf.scope-note.v1",
  3. "at": "2026-11-09T01:20:00+08:00",
  4. "aboutArtifact": "c5vzRWqux6",
  5. "aboutSource": "8RgNyujlzh",
  6. "generation": "82b104fc024b49a75d2f5376bf9778ced6f63a9433b5fc5a6daa3c458d05d5ea",
  7. "verdict": "两表口径不同,不可合并;原报告未标此差异,本次补明",
  8. "tableA_banmian_117": {
  9. "displayed": "拌面 117 条",
  10. "actualQuery": {
  11. "command": "aggregate",
  12. "request": {
  13. "entities": [
  14. "reviews"
  15. ],
  16. "filters": {
  17. "brand": "康师傅"
  18. },
  19. "groupBy": [
  20. "category"
  21. ],
  22. "limit": 50
  23. },
  24. "effectiveFilters": "brand=ksf(品类不限,按 category 分组)",
  25. "quality": "analysis(默认:排除默认评价、身份待核/错配、规格冲突;未指定品类时不强制猜品类)"
  26. },
  27. "whatItIs": "在 brand=康师傅 全量评价(505 条)内,按 category 分组后 banmian 这一桶的 recordCount",
  28. "metrics": {
  29. "recordCount": 117,
  30. "linkedProductCount": 7,
  31. "distinctTextCount": 116,
  32. "note": "recordCount=记录数;linkedProductCount=关联商品去重数;distinctTextCount=按归一化文字去重数。三者都不是销量、独立消费者数或用户占比。"
  33. },
  34. "denominator": {
  35. "value": 505,
  36. "meaning": "brand=康师傅 且 quality=analysis 的全部评价记录",
  37. "share": "117/505=23.2%",
  38. "caveat": "分母是本批收录,不是康师傅市场总量"
  39. },
  40. "paging": {
  41. "groupBy": "category",
  42. "truncated": false,
  43. "groupsReturned": 5,
  44. "note": "aggregate 一次性返回全部分组,无分页"
  45. },
  46. "eligibility": "分析资格=quality:analysis;属于「本批合格、已判定集合内的分布」,不外推全体消费者",
  47. "clarityNote": "117 是分组桶值,不是筛选命中数。若读者要的是「确认是拌面购买的评价数」,应用 29(search + category=banmian + analysis)。"
  48. },
  49. "tableB_ksf_29": {
  50. "displayed": "康师傅 29 条",
  51. "actualQuery": {
  52. "command": "search",
  53. "request": {
  54. "entities": [
  55. "reviews"
  56. ],
  57. "filters": {
  58. "brand": "康师傅",
  59. "category": "banmian"
  60. },
  61. "limit": 100
  62. },
  63. "effectiveFilters": "brand=ksf AND category=banmian",
  64. "quality": "analysis"
  65. },
  66. "whatItIs": "康师傅品牌下、品类明确为拌面 的评价条数(totalMatched)",
  67. "isPagingArtifact": false,
  68. "paging": {
  69. "limit": 100,
  70. "returned": 29,
  71. "totalMatched": 29,
  72. "nextCursor": null,
  73. "conclusion": "29 是精确匹配总数,已全部取回,不是首屏条数、不是截断值"
  74. },
  75. "metrics": {
  76. "totalMatched": 29,
  77. "distinctLinkedProducts": 2,
  78. "distinctTextFingerprints": 28
  79. },
  80. "denominator": {
  81. "value": 29,
  82. "meaning": "康师傅∧拌面 且 quality=analysis 的评价记录"
  83. },
  84. "crossCheck": {
  85. "banmian_全品牌": {
  86. "totalMatched": 49,
  87. "distinctLinkedProducts": 4
  88. },
  89. "note": "29 ⊂ 49;康师傅占全品牌拌面评价 29/49=59.2%(本批收录内)"
  90. },
  91. "clarityNote": "29 是显式指定品类的筛选命中总数,口径比 117 更严,适合作为「已确认拌面消费评价」的基数。"
  92. },
  93. "criticalDistinction": {
  94. "why_117_ne_29": "不是同一筛选对象,也不是同品质等级。117=brand=康师傅全量评价按 category 分组后 banmian 桶(quality=analysis,分母505);29=显式加 category=banmian 筛选的命中总数(quality=analysis)。二者都真,但衡量的是不同东西:前者是'这条评价被标为拌面',后者是'这条评价被确认是拌面购买'。",
  95. "reconciliation_verified": {
  96. "audit_对照": "同条件下 quality=audit:分组桶 banmian=472,独立筛选 category=banmian=472,两者完全相等 -> 说明分组与筛选口径本身一致,差异只由 quality 规则产生",
  97. "analysis_差额": "analysis 下 分组桶117 vs 独立筛选29,差 88 条。原因:默认 defaultReviewPolicy 写明'指定品类时购买规格也须明确,未指定品类时不强制猜品类'。aggregate 未指定品类筛选,故 117 含规格未明确的记录;search 显式指定 category=banmian,故 29 必须购买规格明确符合。",
  98. "conclusion": "差额机制已实测确认,不是数据不一致,是两条规则在 '是否指定品类' 上的差别。"
  99. },
  100. "action": "不得把 117 与 29 并作同一口径,也不得互相验算;引用时必须带上各自的 quality 与是否显式指定 category 两个条件"
  101. },
  102. "brandTable_unmatched": {
  103. "displayed": "今麦郎 / 日清 / 农心 未命中",
  104. "fromQuery": {
  105. "command": "search",
  106. "filters": {
  107. "brand": "<品牌>",
  108. "category": "banmian"
  109. },
  110. "quality": "analysis"
  111. },
  112. "scope": "仅限该次查询条件(该品牌 ∧ 拌面 ∧ analysis 品质)下的结果",
  113. "mustNotConclude": [
  114. "研究库完全未收录该品牌",
  115. "该品牌不存在拌面产品",
  116. "市场无该品牌拌面"
  117. ],
  118. "supportingEvidence": "按 brand 分组 aggregate(不限品类)显示:今麦郎 jinmailang 28 条、日清 riqing 40 条、农心 nongxin 20 条——三品牌在库内均有评价,只是未落在「拌面」这一品类桶内。",
  119. "status": "该三品牌是否有拌面产品,需另查品类标注覆盖,标为待核"
  120. },
  121. "queryEvidenceIndex": [
  122. {
  123. "label": "品类分布(505/304/117/50/25/9)",
  124. "command": "aggregate",
  125. "request": {
  126. "entities": [
  127. "reviews"
  128. ],
  129. "filters": {
  130. "brand": "康师傅"
  131. },
  132. "groupBy": [
  133. "category"
  134. ],
  135. "limit": 50
  136. },
  137. "result": {
  138. "ok": true,
  139. "groups": 5,
  140. "truncated": false,
  141. "records": 505
  142. },
  143. "file": "/tmp/recheck/out_a.json"
  144. },
  145. {
  146. "label": "品牌分布(康师傅505/阿宽48/白象41/日清40/五谷道场34/今麦郎28/统一25/农心20)",
  147. "command": "aggregate",
  148. "request": {
  149. "entities": [
  150. "reviews"
  151. ],
  152. "groupBy": [
  153. "brand"
  154. ],
  155. "limit": 50
  156. },
  157. "result": {
  158. "ok": true,
  159. "groups": 7,
  160. "truncated": false
  161. },
  162. "file": "/tmp/recheck/out_b1.json"
  163. },
  164. {
  165. "label": "康师傅∧拌面=29",
  166. "command": "search",
  167. "request": {
  168. "entities": [
  169. "reviews"
  170. ],
  171. "filters": {
  172. "brand": "康师傅",
  173. "category": "banmian"
  174. },
  175. "limit": 100
  176. },
  177. "result": {
  178. "ok": true,
  179. "totalMatched": 29,
  180. "nextCursor": null
  181. },
  182. "file": "/tmp/recheck/o_d2.json"
  183. },
  184. {
  185. "label": "拌面全品牌=49",
  186. "command": "search",
  187. "request": {
  188. "entities": [
  189. "reviews"
  190. ],
  191. "filters": {
  192. "category": "banmian"
  193. },
  194. "limit": 100
  195. },
  196. "result": {
  197. "ok": true,
  198. "totalMatched": 49,
  199. "nextCursor": null
  200. },
  201. "file": "/tmp/recheck/o_d1.json"
  202. },
  203. {
  204. "label": "康师傅全部=505",
  205. "command": "search",
  206. "request": {
  207. "entities": [
  208. "reviews"
  209. ],
  210. "filters": {
  211. "brand": "康师傅"
  212. },
  213. "limit": 100
  214. },
  215. "result": {
  216. "ok": true,
  217. "totalMatched": 505
  218. },
  219. "file": "/tmp/recheck/o_d3.json"
  220. }
  221. ],
  222. "sourceObjectClarification": {
  223. "8RgNyujlzh": "本次保存时形成的 KfSource 对象,是「这次报告的来源记录」本身",
  224. "isUpstreamEvidenceForNumbers": false,
  225. "reason": "各表数字的上游是研究库 generation %s 下的检索结果,不是 8RgNyujlzh。成果对象只承载引用关系,不能反过来当数据来源。",
  226. "correctUpstream": "研究库 generation=82b104fc024b49a75d2f5376bf9778ced6f63a9433b5fc5a6daa3c458d05d5ea,经 ssh-channel 只读检索(databaseWrites=0,readOnly=true)"
  227. },
  228. "completionBoundary": {
  229. "doesComplete": "业务链路验收(保存→编号回读→公开看板→桌面浏览器)",
  230. "doesNotComplete": [
  231. "课表第一节「供给树、需求树、供需连接图谱」",
  232. "机会卡、项目、方案",
  233. "正式报告发布"
  234. ],
  235. "reportsPosition": "本成果是库内分布小结(S1 品类结构),不足以标记第一节全完成"
  236. },
  237. "archiveClarification": {
  238. "employeeAccountsProvisioned_false": "不是课堂保存的阻断条件。保存与看板均已在 provisioned=false 下成功。",
  239. "employeeConfirmed_false": "表示尚未正式确认报告,与通讯录实名核验是不同字段",
  240. "employeeIdentity_status": "pending,reason=WECOM_DIRECTORY_NOT_CONFIGURED(通讯录未配置,需单独核验,不能只由 'provisioned' 一个标志推断)",
  241. "writesThisRound": {
  242. "primaryObjects": [
  243. "KfArtifact c5vzRWqux6",
  244. "KfSource 8RgNyujlzh"
  245. ],
  246. "note": "不等于数据库总写入仅两次——保存还更新会话等关联记录。"
  247. }
  248. },
  249. "boundaries": {
  250. "reinstalled": false,
  251. "collected": false,
  252. "paidCalls": 0,
  253. "repeatedSave": false,
  254. "modifiedReport": false,
  255. "modifiedSkill": false,
  256. "changedAuth": false,
  257. "queryMode": "只读复算(readOnly=true, databaseWrites=0),用于核实口径,非新采集"
  258. },
  259. "auditCrossCheck": {
  260. "command": "aggregate/search + quality=audit",
  261. "banmian_bucket_audit": 472,
  262. "banmian_filter_audit": 472,
  263. "brand_ksf_total_audit": 2681,
  264. "note": "audit 含默认/待核/冲突数据,仅作口径核对,不得当有效观点样本"
  265. }
  266. }