{"record":{"id":"f4503c91fecf07fe","repo":"jackwener/OpenCLI","slug":"this-series-has-no-koubei-rating-yet","errorCode":null,"errorMessage":"This series has no koubei rating yet.","messagePattern":"This series has no koubei rating yet\\.","errorType":"exception","errorClass":"EmptyResultError","httpStatus":null,"severity":"warning","filePath":"clis/autohome/score.js","lineNumber":96,"sourceCode":"    browser: false,\n    args: [\n        { name: 'series_id', required: true, positional: true, help: '车系 ID（来自 brand 的 series_id，或 k.autohome.com.cn/<id> URL）' },\n    ],\n    columns: SCORE_COLUMNS,\n    func: async (args) => {\n        const seriesId = normalizeSeriesId(args.series_id);\n        const html = await ahFetch(`${AH_KOUBEI_BASE}/${seriesId}`, `score ${seriesId}`);\n        const pp = extractPageProps(html);\n        if (!pp) {\n            throw new CommandExecutionError(\n                `autohome score ${seriesId}`,\n                'No koubei data found — the series id may be wrong, or Autohome changed its page.',\n            );\n        }\n        const rows = parseScore(pp, seriesId);\n        const map = Object.fromEntries(rows.map((r) => [r.field, r.value]));\n        if (!map.name && map.overall == null) {\n            throw new EmptyResultError(\n                `autohome score ${seriesId}`,\n                'This series has no koubei rating yet.',\n            );\n        }\n        return rows;\n    },\n});\n","sourceCodeStart":78,"sourceCodeEnd":104,"githubUrl":"https://github.com/jackwener/OpenCLI/blob/49907e53dc3ade5c223ff0c4c2c2785687cec4e6/clis/autohome/score.js#L78-L104","documentation":"EmptyResultError thrown by the autohome score command when the koubei page props parse fine but contain no brand name and no overall rating — i.e. the series legitimately has no koubei (owner-review) scores yet. This is a 'no data' condition, not a malfunction.","triggerScenarios":"Requesting scores for a brand-new or very low-volume series where map.name is empty and map.overall is null after parseScore runs.","commonSituations":"Recently launched models with too few owner reviews; series pages where the koubei section is empty; ids pointing at discontinued series with wiped review data.","solutions":["Confirm the series id is the one you intended; a valid series with reviews will return data.","Check the series page in a browser — if no koubei ratings exist there either, wait until owners post reviews.","If you need some rating now, query a related/older series in the same family."],"exampleFix":"// before\nopencli autohome score <brandNewSeriesId>   // no reviews yet\n// after\nopencli autohome score <establishedSeriesId> // has koubei ratings","handlingStrategy":"try-catch","validationCode":"// pre-check via the command's own error semantics: treat EmptyResultError as 'no data yet'\n// no pre-call validation possible; data availability only known after fetch","typeGuard":null,"tryCatchPattern":"try {\n  const rows = await score(seriesId);\n} catch (e) {\n  if (/no koubei rating yet/.test(e.message)) {\n    return null; // expected empty state, not a failure\n  }\n  throw e;\n}","preventionTips":["Treat missing koubei data for new/low-volume series as expected.","Check the live series page for a ratings section before automating.","Schedule score lookups for mature series rather than just-launched ones."],"tags":["empty-results","scraping","data-availability"],"backgroundTag":"empty-result-set","analyzedSha":"49907e53dc3ade5c223ff0c4c2c2785687cec4e6","analyzedAt":"2026-08-29T08:14:47.543Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}