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

62 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# L1 画面值与接口
本文件只在执行 `l1-geo-html-screen-diff` 时读。不要把这里的企业、批次、项目号写成死值。
## 数据从哪读
HTML 从 `var DATA` 读。L1 报告用 `brand``mode=simple` 时没有品牌/产品切换)。综合用 `brand.summary``brand.tmc_aggregate``brand.source_top30``brand.core_competitors``brand.wordcloud`。单个 AI 平台用 `brand.platforms[key]`
平台是 L1不是 L3。`project``platform_url` 取。
1. 用当次登录会话打 `resource-api.cemeta.cn`
2. `GET /api/geo_label/project/batch?companyId={companyId}&reportType=monitor`,用 URL 里的 `batchDate` 找到对应项,再按 `project``l1CrawlBatchIds[].batchId`
3. `GET /api/geo-monitor/metrics/l1?table={table}&batchIds={batchId}&projectId={project}&reportType=monitor``table``snapshot``competitor``tmc`。信源再加 `&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_rate``top3_rate``positive_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 标题、平台标题、被引次数,并写明是并列换位,不是缺标题。