diff --git a/apps/docs/scripts/auth-cli.ts b/apps/docs/scripts/auth-cli.ts index afe6f44..10a7ac2 100644 --- a/apps/docs/scripts/auth-cli.ts +++ b/apps/docs/scripts/auth-cli.ts @@ -182,10 +182,10 @@ async function main() { assert.equal(researchResponse.status, 200, "authenticated research API"); assert.ok(researchResponse.headers.get("cache-control")?.includes("no-store")); const research = await researchResponse.json(); - assert.equal(research.companies.length, 1028); + assert.equal(research.companies.length, 1029); assert.equal(research.categories.length, 11); - assert.equal(research.evidence.length, 1392); - assert.equal(research.observations.length, 191); + assert.equal(research.evidence.length, 1394); + assert.equal(research.observations.length, 192); assert.equal((await request("/api/research/ai-companies", { method: "POST", headers })).status, 405); const researchPage = await request("/docs/other-research/ai-company-research/overview", { headers }); assert.equal(researchPage.status, 200); diff --git a/apps/docs/src/components/AICompanyResearch.tsx b/apps/docs/src/components/AICompanyResearch.tsx index 2bf970e..21070d5 100644 --- a/apps/docs/src/components/AICompanyResearch.tsx +++ b/apps/docs/src/components/AICompanyResearch.tsx @@ -7,9 +7,9 @@ import { const pageSize = 12; const evidencePageSize = 30; -const revenueLabels = { self: "公司披露,待核口径", estimate: "仅第三方估算", platform: "仅支付平台记录", unknown: "暂无可用收入数字" }; +const revenueLabels = { self: "企业披露,待核口径", estimate: "仅第三方估算", platform: "仅支付平台记录", unknown: "暂无可用收入数字" }; const useLabels: Record = { - platform: "支付平台记录", signal: "公司披露信号", estimate: "第三方估算", historical: "历史里程碑", + platform: "支付平台记录", signal: "企业披露信号", estimate: "第三方估算", historical: "历史里程碑", "historical-estimate": "其他时点估算", excluded: "排除收入比较", scale: "团队规模", adoption: "采用规模", funding: "融资", technical: "第三方技术评测", crosscheck: "同一里程碑的其他资料", }; @@ -138,7 +138,7 @@ export default function AICompanyResearch() { - +

技术验证层级记录我们查到了什么,不是能力强弱评分。技术专项评审与业务分类复核分别记录。

{filtered.length} 条匹配记录
@@ -154,14 +154,14 @@ export default function AICompanyResearch() { } {tab === "revenue" && <> -

公司披露与估算的历史里程碑

-

这一组包含 {disclosedCompanies} 家公司的披露或估算信号,多为异时点历史里程碑,ARR 与年化收入口径仍待核对,暂不计算其同期领域均值。币种未确认的记录仅显示原值,不绘制美元长度条。上面的平台MRR统计与这一组分开。

+

企业披露与估算的历史里程碑

+

这一组包含 {disclosedCompanies} 家公司的披露或估算信号;企业披露含公司或交易当事方公开材料,披露主体与审计状态见证据。多为异时点历史里程碑,期间收入不直接年化,ARR 与年化收入口径仍待核对,暂不计算其同期领域均值。币种未确认的记录仅显示原值,不绘制美元长度条。上面的平台MRR统计与这一组分开。

{observed.map((o) =>
{o.bound !== "=" && o.bound}{money(o.value, o.unit)}
{o.unit === "USD" && } {o.kind} · {useLabels[o.selection]} · {o.timing}
)}
-
{summaries.map((c) => )}
当前研究数据中的收入可得性,目录项未逐一检索;未建立同期、同龄、同口径比较组
业务分类公司披露数仅估算数仅平台数暂无可用数字同期均值 / 离散度
{c.self}{c.estimate}{c.platform}{c.unknown}条件不足
+
{summaries.map((c) => )}
当前研究数据中的收入可得性,目录项未逐一检索;未建立同期、同龄、同口径比较组
业务分类企业披露数仅估算数仅平台数暂无可用数字同期均值 / 离散度
{c.self}{c.estimate}{c.platform}{c.unknown}条件不足

离散度用于筛选值得核查的异常,还需排除公司年龄、口径和披露偏差;不能据此认定财务造假。

} {tab === "sources" && <>

来源链接保留原始位置。相同 URL 的记录可能属于同一披露,不能按记录数计算独立证据数量。

    {data.evidence.slice(sourcePage * evidencePageSize, (sourcePage + 1) * evidencePageSize).map((e) => )}
{data.evidence.length > evidencePageSize && }} diff --git a/apps/docs/tests/research.test.ts b/apps/docs/tests/research.test.ts index 6de2fcb..296e405 100644 --- a/apps/docs/tests/research.test.ts +++ b/apps/docs/tests/research.test.ts @@ -23,9 +23,9 @@ test("research revisions share the authentication database and preserve replay l for (let i = 0; i < 20; i++) consumeCode(config, "invalid"); assert.equal(consumeCode(config, "invalid"), "limited"); const initial = readResearchSnapshot(); - assert.equal(initial.companies.length, 1028); - assert.equal(initial.evidence.length, 1392); - assert.equal(initial.observations.length, 191); + assert.equal(initial.companies.length, 1029); + assert.equal(initial.evidence.length, 1394); + assert.equal(initial.observations.length, 192); assert.deepEqual(initial.candidateBatches, seed.candidateBatches, "candidate gaps persist in the same database metadata"); assert.deepEqual(initial.directoryRechecks, seed.directoryRechecks, "follow-up classifications persist without rewriting the discovery audit"); assert.deepEqual(readResearchSnapshot(), initial, "reopening does not duplicate records"); @@ -64,7 +64,7 @@ test("research validation rejects broken evidence and unsafe source links", () = test("reviews link explicit companies without turning global or excluded cases into companies", () => { const snapshot = structuredClone(seed) as ResearchSnapshot; - assert.equal(snapshot.reviews.filter((r) => r.scope === "companies").length, 73); + assert.equal(snapshot.reviews.filter((r) => r.scope === "companies").length, 74); assert.equal(snapshot.reviews.filter((r) => r.scope === "dataset").length, 10); assert.equal(snapshot.reviews.filter((r) => r.scope === "excluded-candidate").length, 35); const review = snapshot.reviews.find((r) => r.id === "R4")!; @@ -85,8 +85,8 @@ test("reviews link explicit companies without turning global or excluded cases i test("disclosure counts exclude client income, biographies, targets and duplicate milestones", () => { const snapshot = seed as ResearchSnapshot; const summary = categorySummary(snapshot); - assert.equal(summary.reduce((n, c) => n + c.count, 0), 1028); - assert.equal(summary.reduce((n, c) => n + c.self, 0), 27); + assert.equal(summary.reduce((n, c) => n + c.count, 0), 1029); + assert.equal(summary.reduce((n, c) => n + c.self, 0), 28); assert.equal(summary.reduce((n, c) => n + c.estimate, 0), 2); assert.equal(summary.reduce((n, c) => n + c.platform, 0), 16); assert.equal(summary.reduce((n, c) => n + c.unknown, 0), 983); @@ -97,7 +97,7 @@ test("disclosure counts exclude client income, biographies, targets and duplicat test("technical reviews keep accessible materials separate from tested capabilities", () => { const snapshot = structuredClone(seed) as ResearchSnapshot; - assert.equal(snapshot.companies.filter((c) => c.technicalReview).length, 27); + assert.equal(snapshot.companies.filter((c) => c.technicalReview).length, 28); assert.equal(snapshot.companies.filter((c) => c.technicalReview?.level === "public-artifact").length, 7); assert.equal(snapshot.companies.filter((c) => c.technicalReview?.level === "independent-test").length, 1); assert.equal(snapshot.companies.find((c) => c.id === "AI051")?.revenueStatus, "unknown"); diff --git a/content/research/ai-companies.seed.json b/content/research/ai-companies.seed.json index 937caac..aeacd85 100644 --- a/content/research/ai-companies.seed.json +++ b/content/research/ai-companies.seed.json @@ -1,5 +1,5 @@ { - "version": "2026-10-30-cn-data-quality-1", + "version": "2026-10-30-aimoga-filing-1", "asOf": "2026-10-30", "scope": "全球公开资料研究:保留首批个案,并扩展核查2025—2026八个YC批次候选池;成立年份以官方公司页面字段为依据。", "limitations": [ @@ -29242,6 +29242,43 @@ "XYZ-GOV" ] } + }, + { + "id": "AI085", + "name": "墨甲机器人(AiMOGA)", + "url": "https://www.aimoga-robot.com/cn/zh/", + "cat": "C10", + "year": 2025, + "team": null, + "location": "中国安徽芜湖;官网另列深圳地址", + "business": "研发和销售人形、四足及场景服务机器人,结合大模型交互、感知控制与行业系统集成。", + "buyer": "汽车门店、交通治理、医疗和其他场景客户;付费与关联客户构成未核", + "delivery": "官网和展商资料展示机器人产品及场景部署;未独立测试或核验交付、验收与收入确认。", + "notes": "伯特利2026-002增资公告列成立2025-01-07,2025年1—9月营业收入302.85万元人民币、未经审计。是历史期间收入,不是ARR;不并入奇瑞或其他股东财务,不由出货乘售价推收入。", + "cohort": "2025-01-07成立,依据交易当事方上市公告;母公司更早机器人项目不作为新公司成立年", + "teamBasis": "未取得公司完整员工数,不继承母公司团队规模", + "price": "未取得统一成交价或机器人/软件/服务分拆合同", + "stage": "公开产品与部署自述;已有历史期间营业收入披露,财务未经审计", + "sourceType": "中文发现线索、公司官网、展商自述及交易当事方上市公告", + "revenueStatus": "self", + "evidenceIds": [ + "KR-AIMOGA", + "AIMOGA-HOME", + "AIMOGA-CNINFO", + "AIMOGA-WRC" + ], + "businessModel": "机器人硬件、场景集成与软件服务;持续订阅和一次性交付的收入分拆未知", + "entityBasis": "安徽墨甲智创机器人科技有限公司,公告列统一社会信用代码91340200MAE9B9LN7P;增资前奇瑞汽车全资持有,当前股权比例另需核,不与母公司和投资人合并。", + "classificationBasis": "按具身机器人产品和场景交付归C10,母公司供应链与机器人演示不等独立技术评测。", + "technicalReview": { + "level": "description", + "reviewedAt": "2026-10-30", + "summary": "已读官网及世界机器人大会展商自述;未独立运行机器人、测试模型或验收场景。", + "evidenceIds": [ + "AIMOGA-HOME", + "AIMOGA-WRC" + ] + } } ], "observations": [ @@ -32338,6 +32375,22 @@ "reason": "第三方EST,未取得估算底表或原始收入凭据;非经常性ARR、非同期实报数,不进入可比样本", "bound": "约", "comparisonGroup": null + }, + { + "id": "AIMOGA-O-2025-9M", + "company": "AI085", + "name": "墨甲机器人(AiMOGA)", + "kind": "2025年1—9月营业收入,未经审计", + "value": 3028500, + "unit": "CNY(人民币元;原表302.85万元)", + "timing": "2025年1—9月期间收入;2026-01-01公告,2026-10-30读取", + "observedAt": "2025-09-30", + "evidence": "AIMOGA-CNINFO", + "scope": "安徽墨甲智创机器人科技有限公司", + "selection": "historical", + "reason": "投资人上市公告披露标的期间收入,未经审计;不是ARR、MRR或年化收入,不与母公司、股东和融资金额混合,不进可比样本", + "bound": "=", + "comparisonGroup": null } ], "evidence": [ @@ -47578,14 +47631,14 @@ }, { "id": "KR-AIMOGA", - "companyId": null, + "companyId": "AI085", "title": "墨甲机器人:中文媒体发现", "url": "https://eu.36kr.com/zh/p/3954273153586820", "publishedAt": "2026-08-25", "accessedAt": "2026-10-30", "kind": "中文媒体公开转载", "summary": "文章将墨甲公司成立与机器人交付、售价、产能并列介绍。", - "limitation": "仅作候选发现;公司、母公司与早期机器人项目沿革未补核,交付量乘价格不是收入或ARR。" + "limitation": "发现报道不证明收入;本轮另以交易当事方公告补核新公司成立与历史期间收入,母公司项目沿革仍单列,交付量乘价格不是收入或ARR。" }, { "id": "CLEER-GOV", @@ -47644,14 +47697,36 @@ }, { "id": "AIMOGA-HOME", - "companyId": null, + "companyId": "AI085", "title": "墨甲机器人:公司官方产品与主体入口", "url": "https://www.aimoga-robot.com/cn/zh/", "publishedAt": null, "accessedAt": "2026-10-30", "kind": "公司官方产品资料", "summary": "官网展示人形/四足产品,页脚列安徽墨甲智创机器人科技有限公司。", - "limitation": "本轮可读入口未取得原始成立日期;母公司历史、出货、售价、产能和计划不直接填入收入。" + "limitation": "官网入口未给精确成立日;另有交易当事方上市公告。出货、产能及计划不能直接填入收入,未核当前股权及完整合同。" + }, + { + "id": "AIMOGA-CNINFO", + "companyId": "AI085", + "title": "伯特利2026-002:墨甲增资标的成立与未经审计财务", + "url": "https://static.cninfo.com.cn/finalpage/2026-01-01/1224914493.PDF", + "publishedAt": "2026-01-01", + "accessedAt": "2026-10-30", + "kind": "交易当事方上市公司原始公告", + "summary": "公告第8—9页列标的成立2025-01-07及信用代码;人民币万元表列2025年1—9月营业收入302.85、净利润-510.46,注明未经审计。", + "limitation": "本轮按PDF文字读取相关页,未完成13页逐页视觉核对;披露方是投资人伯特利,不是标的直接财报。母公司和股东财务、增资金额不归标的收入;历史期间收入不年化、不换汇、不进ARR/MRR组。" + }, + { + "id": "AIMOGA-WRC", + "companyId": "AI085", + "title": "2026世界机器人大会:墨甲展商与产品介绍", + "url": "https://www.worldrobotconference.com/expo/company/764.html", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "展商公开自述", + "summary": "展商页列公司主体、2025年1月成立、人形及四足机器人和交通/医疗场景产品。", + "limitation": "展商营销资料,出口、国家覆盖、签约及交付数量未独立核验;不当付费客户数、收入或独立技术测试。" } ], "reviews": [ @@ -49401,16 +49476,33 @@ { "id": "KR-R-CANDIDATE-GAPS", "type": "中文媒体年份与主体缺项复核", - "company": "深朴智能及墨甲机器人候选", + "company": "深朴智能及墨甲机器人候选(后续成立补核)", "scope": "excluded-candidate", - "summary": "深朴据交易当事方登记资料归2024既有公司,墨甲原始成立和母公司项目沿革继续待核。", + "summary": "深朴据交易当事方登记资料归2024既有公司;墨甲曾缺原始成立资料,本轮据上市公告补为2025-01-07并关联AI085。", "evidenceIds": [ "KR-SIMPLE", "SIMPLE-CNINFO", "KR-AIMOGA", + "AIMOGA-HOME", + "AIMOGA-CNINFO" + ], + "handling": "媒体与工商日期分别保存,不将融资、重组、品牌或机器人发布当新成立。发现页可读不代表所有候选完成财务或技术审查。 此记录保留候选核查历史;墨甲当前结论见关联公司核查,候选不再计年份待核。" + }, + { + "id": "AIMOGA-R-PERIOD", + "type": "机器人新公司主体与历史期间收入核查", + "company": "墨甲机器人(AiMOGA)", + "scope": "companies", + "companyIds": [ + "AI085" + ], + "summary": "成立年份由交易当事方原始公告补足;保留2025年前三季度人民币营业收入及未经审计限制。", + "evidenceIds": [ + "AIMOGA-CNINFO", + "AIMOGA-WRC", "AIMOGA-HOME" ], - "handling": "媒体与工商日期分别保存,不将融资、重组、品牌或机器人发布当新成立。发现页可读不代表所有候选完成财务或技术审查。" + "handling": "收入披露方为投资人上市公司;不当标的自述或独立审计。母公司更早项目史单列,不继承其营业收入、员工规模与技术成绩;不将期间收入年化或把出货乘售价。" } ], "coverage": { @@ -50752,7 +50844,7 @@ "sourceId": "S11", "url": "https://www.36kr.com/p/4043538991797379", "accessedAt": "2026-10-30", - "scope": "四项定向检索与相关段落补查:2项据独立原始资料关联公司,1项范围外,1项成立待核;清析智研与发现文章的正文关联未确认,保留检索/直达差异。不是四篇全文、榜单或两年档案覆盖。", + "scope": "四项定向检索与相关段落补查:3项据原始资料关联公司,1项范围外;清析智研与发现文章的正文关联未确认,保留检索/直达差异。不是四篇全文、榜单或两年档案覆盖。", "complete": false, "records": [ { @@ -50808,12 +50900,15 @@ "categoryId": "C10", "kind": "company", "profileStatus": "readable", - "status": "pending-year", + "status": "linked", "evidenceIds": [ "KR-AIMOGA", - "AIMOGA-HOME" + "AIMOGA-HOME", + "AIMOGA-CNINFO", + "AIMOGA-WRC" ], - "note": "官网产品与运营名称可读,媒体2025成立尚待原始登记/沿革补核;母公司项目史、出货乘售价、产能及目标不作收入。" + "note": "交易当事方上市公告列成立2025-01-07,主体代码与官网相符;前三季度收入注明人民币及未经审计,历史期间值不当ARR。母公司早期项目、出货乘售价、产能及目标不作收入。", + "companyId": "AI085" } ] } diff --git a/content/research/ai-companies.sources.json b/content/research/ai-companies.sources.json index b53fb18..3c8cf53 100644 --- a/content/research/ai-companies.sources.json +++ b/content/research/ai-companies.sources.json @@ -1,5 +1,5 @@ { - "version": "2026-10-30-27", + "version": "2026-10-30-28", "scopeConfirmedAt": "2026-10-30", "acceptance": "以确认的公开来源清单为边界,逐条核对并标明缺项。", "provenance": "S01—S12恢复自已提交用户的《AI公司研究_来源与分类模板》来源清单;S13—S16单列后续已使用的补充证据渠道,不将使用次数当作全量覆盖。", @@ -221,8 +221,8 @@ "eu.36kr.com" ], "initialAccess": "安全检测,内容未核验", - "boundary": "此前首页安全检测仍保留;本轮4项定向检索及相关段落补查,2项据政府/公司材料关联、1项按原始登记归范围外、1项年份待核。清析检索与直达正文不一致未确认关联,其他文章为平台发布/授权转载,不代表两年全量。", - "nextCheck": "补核墨甲原始成立与母公司项目沿革、清析发现文章关联及未读正文;继续建两年公开文章台账,不绕过访问保护。", + "boundary": "此前首页安全检测仍保留;本轮4项定向检索及相关段落补查,3项据政府/公司/交易当事方资料关联、1项按原始登记归范围外。清析检索与直达正文不一致未确认关联,其他文章为平台发布/授权转载,不代表两年全量。", + "nextCheck": "墨甲已由交易当事方原始公告补足2025成立及历史期间收入,母公司项目沿革和当前财务仍待核;继续补清析发现文章关联及未读正文,建两年公开文章台账,不绕过访问保护。", "limitation": "仅核具体相关段落,检索和直达差异、转载与原始披露分别记录。", "accessRecheckedAt": "2026-10-30" }, diff --git a/content/research/ai-income-analysis.json b/content/research/ai-income-analysis.json index 5f6ae52..372cbd4 100644 --- a/content/research/ai-income-analysis.json +++ b/content/research/ai-income-analysis.json @@ -1,5 +1,5 @@ { - "sourceVersion": "2026-10-30-cn-data-quality-1", + "sourceVersion": "2026-10-30-aimoga-filing-1", "asOf": "2026-10-30", "metric": "platform-mrr-usd", "sampleUnit": "product-or-business", diff --git a/scripts/audit-ai-research.py b/scripts/audit-ai-research.py index c44568d..0a3e516 100644 --- a/scripts/audit-ai-research.py +++ b/scripts/audit-ai-research.py @@ -191,8 +191,8 @@ def render(): f"| 其他目录基础项 | {depth-reviewed} | 规则初分或资料不足,继续待复核 |", f"| 有团队数字 | {sum(c['team'] is not None for c in companies)} | 多为自报Team Size或Employees,时点与口径不统一 |", f"| 专项技术证据记录 | {len(companies)-technical['unreviewed']} | 其中{technical['description']}条自述、{technical['public-artifact']}条公开材料、{technical['independent-test']}条第三方评测 |", - f"| 公司披露收入线索 | {income['self']} | 含历史、下界、币种不明及产品业务声明,不等于可比ARR |", - f"| 仅平台收入线索 | {income['platform']} | 同时有公司披露者计入上一行,不重复计数 |", + f"| 企业披露收入线索 | {income['self']} | 含公司或交易当事方披露、历史、下界及币种不明,不等于可比ARR |", + f"| 仅平台收入线索 | {income['platform']} | 同时有企业披露者计入上一行,不重复计数 |", f"| 仅第三方估算 | {income['estimate']} | 不与直接披露混合 |", f"| 暂无可用收入数字 | {income['unknown']} | 包含尚未逐家搜索的目录项,不代表没有收入 |", '', '## 业务分类与数据入口', '',