120 lines
11 KiB
Markdown
Raw Permalink 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` 取。`reportType` 取自 URL`monitor` / `diagnosis`),请求里原样传递,不要写死成 `monitor`
1. 用当次登录会话打 `resource-api.cemeta.cn`(海信门户 `geo.hisense.com` 的数据也可走同一 resource-api登录账号用认证注册表「海信」
2. `GET /api/geo_label/project/batch?companyId={companyId}&reportType={reportType}`,用 URL 里的 `batchDate` 找到对应项,再按 `project``l1CrawlBatchIds[].batchId`
3. `GET /api/geo-monitor/metrics/l1?table={table}&batchIds={batchId}&projectId={project}&reportType={reportType}``table``snapshot``competitor``tmc`。信源再加 `&platform={平台值}``table=source`
4. 词云:`GET /api/geo-monitor/projects/{project}/wordcloud?batchId={batchId}&sentiment=all`。这个接口不按 AI 平台拆。HTML 词云也是写死综合,七个选项同一套词。
登录账号从项目认证注册表取跟本次企业走。不要把手机号、密码、token 写进报告。
## 海信集团
与卡泰驰的差异只写在这里;执行海信批次时必须按本节,不要沿用卡泰驰假设。
### 识别与批次
- URL 主机 `geo.hisense.com`,或 `line` 含「海信」,或 `companyId=13`
- `reportType=diagnosis` 时,`/geo_label/project/batch` 可能返回空列表。此时用已验证的 crawlBatchId 模式补齐,例如电视诊断:`HISENSE-HIST-{projectId}-{YYYYMMDD}-D``YYYYMMDD` 来自 `batchDate`)。用 `table=snapshot` 拉一行校验;`rows` 为空则停下来问,不要编造别的前缀。
- 商显等产线可能是 `HISENSE-SX-HIST-...`;以实际 `crawlBatchId` 为准。
### KPI 字段(第 3 / 4 项)
海信 L1 **固定五卡**,都会有品牌露出率。
| 平台卡 | HTML 画面名 | HTML 综合字段 | HTML 分平台 | snapshot |
|---|---|---|---|---|
| 品牌露出率 | 品牌露出率 | `overall.brand_level_exposure_rate` | `self.brand_exposure_rate` | `brand_exposure_rate` |
| 指定露出词露出率 | **露出率** | `summary.avg_exposure_rate` | `self.exposure_rate` | `exposure_rate` |
| 首位率 / 前三率 / 前五率 | 同左 | 由 `meta.position_metric``first``avg_first_position_rate``top3``avg_top3_rate``top5``avg_top5_rate` | `first_position_rate` / `top3_rate` / `top5_rate` | `first` 优先 `first_position_rate`,否则 `top1_rate``top3`/`top5` 用同名 rate**不要**在比首位率时误用 `position_rate`(常为产线当前展示的前三/前五) |
| 中正面率 | **中正面提及率** | `summary.avg_positive_mention_rate` | `self.positive_mention_rate` | `positive_rate` |
| 商品链接露出率 | 商品链接露出率 | `summary.product_link` | 综合卡有值则比;分平台以 snapshot 该平台 `product_link_rate` 为准HTML self 无单独卡时只报综合) | `product_link_rate` |
**海信画面百分比AI 露出情况监测等)**:平台看板显示 1 位小数。判定:
1. HTML 与平台值都先四舍五入到 **1 位小数**`round(x + 1e-9, 1)`)。
2. 圆整后**相等**,或**相差 0.1** 个百分点 → 判定一致(通过)。
3. 相差 ≥ 0.2 → 不同。
4. **品牌露出率**额外:若平台印整数,两边按整数四舍五入后相等也通过。
5. 本条适用于海信第 3/4 项五卡、第 5 项露出率、第 710 项占比等所有「平台 1 位小数」百分比对照;**不要**对海信用卡泰驰的 0.05 阈值。
**禁止混比**:不要把 `brand_level_exposure_rate`(品牌露出率)当成「露出率 / 指定露出词露出率」。
**指定露出词露出率 = HTML「露出率」= `avg_exposure_rate`**(已确认)。
`diagnosis` 第 4 项:无多期趋势时,各平台 `self` 最新点对 snapshot 分平台;综合覆盖六个平台的上述五项(商品链接按上表)。
`cal_data_json` 若提供,结构与 HTML `brand`/`meta` 同源,可作离线核对,但必须与本次 `html_url` 同题;题目不一致时以 HTML `var DATA` 为准。
### 第 5 项排行(品牌级默认)
- HTML 常有「品牌级 / 产品级」。默认比品牌级。产品级用 `core_product_competitors` / `product_ranking`,只有用户明确要求产品级时才切。
- 平台 `competitor` 行带 `kind``brand` | `product`。品牌级对照**只保留 `kind=brand`**。混入 `product` 会把「海信E7S Pro」「创维 75A3F」等机型挤进 Top 10造成假失败。
- HTML 综合品牌榜与画面一致:本品名 + `summary.avg_exposure_rate`,再合并 `core_competitors`(跳过露出率为 0 的集团兄弟占位),同名取最大露出率后降序,取 Top 10。
- 第 5.1:按 **Top 10 交集的同名露出率**比,不要只按名次下标硬对齐(并列时下标会对错行)。
- 第 5.2:名次与品牌名通常要一致;**露出率在 0.05 内并列时,名次对调不算失败**,报告注明「并列换位」。
- 第 5.3:分平台用 HTML `industry_ranking` 对平台同品牌 `kind=brand` 行。
### 媒体类型(第 9 项)
- 海信 HTML `tmc_aggregate.media_category` / 各平台 `citation.media_category``value` 经常是次数(正值和远大于 100平台接口 `value` 已是百分数。
- 画面占比:`value / 本组全部正值之和 × 100`**分母含「其他」「未知」**,再去掉「其他」「未知」后取前 10 与平台比。若先剔除再重算,会造出 0.11 点假差异(如 32.3% vs 32.1%)。
## 画面百分比
保留 1 位小数。
- **卡泰驰**:差超过 0.05 个点才算不同。
- **海信**:平台看板 1 位小数 vs HTML 四舍五入到 1 位后,**相等或相差 0.1** 判定一致(见上文「海信画面百分比」)。
- 露出率、前三率、正面率、排行榜露出率页面直接印的字段。HTML `fmt` 对非 0、非 100 印两位小数,平台印一位。比数值,不比小数位数。
- 分平台:**卡泰驰** HTML 趋势序列最后一个监测日的点,对平台该平台 snapshot 的 `exposure_rate``top3_rate``positive_rate`。综合要覆盖六个平台的这三个点。**海信**见「KPI 字段(第 3 / 4 项)」五卡;`diagnosis``self` 最新点。
- 信源内容类型、信源发布时间:图例最多 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`。**海信**见上文「媒体类型(第 9 项)」:次数分母含「其他」。
- 媒体名称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`
**海信**:见上文「海信集团 · 第 5 项」。默认品牌级;平台只取 `kind=brand`;第 5.1 按同名比露出率;第 5.2 允许并列露出率名次对调。
画面名称截断后对不上「车」对「车300」算名称不同。第 5 项不适用「名称写法不同但百分比相同」那条例外,品牌名必须逐字相同(并列换位除外)。
**排序口径(防假失败)**:两边 Top 10 顺序都按**平均露出率从高到低**对齐画面,再取前 10。不要用接口 `rank` 字段当画面名次——`rank` 可能是灌数防撞号,和露出排行画面不一致。露出率相同则按两边各自画面已印出的先后;海信在并列时名次对调不判第 5.2 失败。
三步都要做,任一步不同则第 5 项测试失败❌:
1. 综合平均露出率对平台全平台列(同名比)。海信按 1 位小数四舍五入后相等或差 0.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 标题、平台标题、被引次数,并写明是并列换位,不是缺标题。