liuying ff84f41c9c fix(L1-geo-html-screen-diff): 避免 Top10 rank 对调与内容类型 0.1 点假失败
第5项按露出率排序不用 rank;第7项已是百分比的 value 不再重算。
2026-09-20 12:20:49 +08:00

5.4 KiB
Raw Blame History

L1 画面值与接口

本文件只在执行 l1-geo-html-screen-diff 时读。不要把这里的企业、批次、项目号写成死值。

数据从哪读

HTML 从 var DATA 读。L1 报告用 brandmode=simple 时没有品牌/产品切换)。综合用 brand.summarybrand.tmc_aggregatebrand.source_top30brand.core_competitorsbrand.wordcloud。单个 AI 平台用 brand.platforms[key]

平台是 L1不是 L3。projectplatform_url 取。

  1. 用当次登录会话打 resource-api.cemeta.cn
  2. GET /api/geo_label/project/batch?companyId={companyId}&reportType=monitor,用 URL 里的 batchDate 找到对应项,再按 projectl1CrawlBatchIds[].batchId
  3. GET /api/geo-monitor/metrics/l1?table={table}&batchIds={batchId}&projectId={project}&reportType=monitortablesnapshotcompetitortmc。信源再加 &platform={平台值}table=source
  4. 词云:GET /api/geo-monitor/projects/{project}/wordcloud?batchId={batchId}&sentiment=all。这个接口不按 AI 平台拆。HTML 词云也是写死综合,七个选项同一套词。

登录账号从项目认证注册表取跟本次企业走。不要把手机号、密码、token 写进报告。

画面百分比

保留 1 位小数。差超过 0.05 个点才算不同。

  • 露出率、前三率、正面率、排行榜露出率页面直接印的字段。HTML fmt 对非 0、非 100 印两位小数,平台印一位。比数值,不比小数位数。
  • 分平台HTML 趋势序列最后一个监测日的点,对平台该平台 snapshot 的 exposure_ratetop3_ratepositive_rate。综合要覆盖六个平台的这三个点。
  • 信源内容类型、信源发布时间:图例最多 8 条,按值从高到低;发布时间去掉名为「无时间」的项。先看 value 是不是已经是百分比:本组正值之和落在约 99101.5(或每条都在 0100 且之和≈100直接用 value 当画面占比,不要再做 value / 正值之和 × 100。只有 value 明显是次数/频次(之和远大于 100或单条远大于 100才用 value / 正值之和 × 100。库里已是百分数时再除一次会造出 0.1 点假差异(如 52.1% vs 52%),那种差异不算失败。
  • 媒体类型HTML 方块去掉「其他」「未知」,再按剩余 value 之和重算。平台条形图按值从高到低取前 10这 10 条 value 之和 ≤ 101.5 时直接印 value,否则 value / 该和 × 100
  • 媒体名称HTML 没有占比字段,为 value / 本组 value 之和 × 100,去掉「其他」「未知」后取前 10。平台与媒体类型同一条形图规则。

排行榜

第 5 项HTML「行业露出率排行榜」对平台「露出排行 · 各平台明细」。不要切换 AI 平台选项。只比 Top 10第 11 名及以后不报。

平台全平台列是平均露出率。其余列是 DeepSeek、豆包、通义千问、腾讯元宝、百度文心、Kimi。某品牌在某选项没有露出时HTML 为空,平台格子是「-」,这不算不同。

HTML 综合榜 = 本品(summary.avg_exposure_rate + 本品名)与 core_competitors 合并后按平均露出率降序,再取 Top 10。分平台用 brand.platforms[key].industry_ranking。画面名称截断后对不上「车」对「车300」算名称不同。

排序口径(防假失败):两边 Top 10 顺序都按平均露出率从高到低对齐画面,再取前 10。不要用接口 rank 字段当画面名次——rank 可能是灌数防撞号,和露出排行画面不一致。露出率相同则按两边各自画面已印出的先后;若按露出率排完后名次与品牌名一致,第 5.2 步判相同,不要因 rank 对调判失败。

三步都要做,任一步不同则第 5 项测试失败

  1. 综合平均露出率对平台全平台列。差超过 0.05 算不同。
  2. 综合 Top 10 的名次和品牌名,对平台全平台 Top 10。名称逐字相同。两边名单都先按露出率降序再比。
  3. 这 10 个品牌在 DeepSeek、豆包、通义、元宝、文心、Kimi 上的露出率,对平台对应列。通义对通义千问,元宝对腾讯元宝,文心对百度文心。

词云

第 6 项不随 AI 平台切换。HTML 词在 brand.wordcloud,平台用词云接口,两边都是综合一套。

文案约定不算失败HTML「AI 回答关键词」= 平台「AI 认知词云」HTML「AI 回答正面关键词」= 平台「正面词」HTML「未监测到负面词」= 平台「中正面率100%,暂无负面词」。

正面词图片HTML 用词云画布,平台用正面词图。比画出来的词条是否相同,不比大小、颜色和位置。负面有词时比词条;两边都空时用上面的空态文案。

关联信源

第 11 项按标题对齐,比渠道和被引次数,不比行号。集合相同就是测试通过。通义不足 30 条时,有几条比几条,两边条数不同才失败。

第 12 项比画面序号上的标题。

  • HTML 顺序:source_top30 数组顺序,取前 30。
  • 平台顺序:接口返回的行按 cite_count 从高到低做稳定排序,次数相同则保持接口原顺序。不要用 rank 字段顺序,那个顺序和平台表格不一致。

同一序号标题不同、但被引次数相同:记测试失败表里写序号、HTML 标题、平台标题、被引次数,并写明是并列换位,不是缺标题。