明确核查范围并补齐公司明细关联

This commit is contained in:
2026-10-30 06:02:20 +08:00
parent 5ee28cef98
commit f93e094ba2
6 changed files with 224 additions and 49 deletions
+1 -1
View File
@@ -101,7 +101,7 @@ AUTH_CONFIG_FILE=/private/tmp/tabularium-auth/config.json AUTH_COOKIE_SECURE=fal
当前资料包含 1,013 条公司/产品记录、10 类业务及待分类组、1,080 条证据记录和 148 条经营与技术观测。
其中保留 69 家个案资料、928 条目录基础资料,并新增 16 个平台产品/业务样本;目录项不等于完成财务和技术核验。
补充ThinkWheel与中国NaiveAI;MiroMind成立年未核,公开研发年份单列。保留灵初智能成立年排除、深度原理日期待核和Naive近名实体复核记录。
新增7条Speedrun个案,保留标题/正文冲突、七位数数量级、币种不明、合同管线与履历归属排除记录;相对日期不充当同期收入时点。核查页按证据归属链接公司明细,明细反向列出引用其证据的核查;币种不明的声明保留原值,不绘制美元收入长度条。
新增7条Speedrun个案,保留标题/正文冲突、七位数数量级、币种不明、合同管线与履历归属排除记录;相对日期不充当同期收入时点。核查页优先按人工确认的公司ID关联明细,旧版本保留按证据归属回退;36条核查中25条指向具体公司、3条属于全局方法、8条是未纳入候选。明细反向列出关联核查;币种不明的声明保留原值,不绘制美元收入长度条。
它是定向试样,收入披露不足且统计时点不统一,不代表全部 AI 公司。
界面将公司自述、第三方估算、融资、客户收入和履历收入分开,未知收入不记为零。
保留被撤回的声明作为核查记录,并排除收入比较;并购后业务、管理层预测与历史里程碑单列。
@@ -2,7 +2,7 @@ import { useEffect, useMemo, useRef, useState } from "react";
import { useRouter } from "next/router";
import IncomeDistribution from "./IncomeDistribution";
import {
categorySummary, evidenceUrl, technicalReviewLabels, type ResearchEvidence, type ResearchSnapshot,
categorySummary, evidenceUrl, technicalReviewLabels, reviewCompanyIds, type ResearchEvidence, type ResearchReview, type ResearchSnapshot,
} from "@/lib/ai-research";
const pageSize = 12;
@@ -88,11 +88,11 @@ export default function AICompanyResearch() {
...selectedObservations.map((o) => o.evidence),
]);
const selectedEvidence = data.evidence.filter((e) => e.companyId === selected || selectedEvidenceIds.has(e.id));
const evidenceCompanies = new Map(data.evidence.map((e) => [e.id, e.companyId]));
const reviewCompanies = (ids: string[]) => data.companies.filter((c) =>
ids.some((id) => evidenceCompanies.get(id) === c.id));
const selectedReviews = data.reviews.filter((r) => selected &&
r.evidenceIds.some((id) => evidenceCompanies.get(id) === selected));
const reviewCompanies = (review: ResearchReview) => {
const ids = new Set(reviewCompanyIds(data, review));
return data.companies.filter((c) => ids.has(c.id));
};
const selectedReviews = data.reviews.filter((r) => selected && reviewCompanyIds(data, r).includes(selected));
function chooseCategory(id: string) {
setCategory(id); setPage(0); setTab("companies");
companySection.current?.scrollIntoView({ behavior: "smooth", block: "start" });
@@ -160,14 +160,14 @@ export default function AICompanyResearch() {
<p className="research-muted">离散度用于筛选值得核查的异常,还需排除公司年龄、口径和披露偏差;不能据此认定财务造假。</p>
</>}
{tab === "sources" && <><p className="research-muted">来源链接保留原始位置。相同 URL 的记录可能属于同一披露,不能按记录数计算独立证据数量。</p><ul className="research-evidence-list">{data.evidence.slice(sourcePage * evidencePageSize, (sourcePage + 1) * evidencePageSize).map((e) => <Evidence key={e.id} item={e} />)}</ul>{data.evidence.length > evidencePageSize && <nav className="research-pagination" aria-label="原始证据分页"><button disabled={sourcePage === 0} onClick={() => setSourcePage((n) => n - 1)}>上一页</button><span>{sourcePage + 1} / {Math.ceil(data.evidence.length / evidencePageSize)}</span><button disabled={(sourcePage + 1) * evidencePageSize >= data.evidence.length} onClick={() => setSourcePage((n) => n + 1)}>下一页</button></nav>}</>}
{tab === "reviews" && <ul className="research-review-list">{data.reviews.map((r) => <li key={r.id}><span className="research-tag">{r.type}</span><h3>{r.company}</h3><p>{r.summary}</p><p>{r.handling}</p><div>{reviewCompanies(r.evidenceIds).map((c) => <button key={c.id} className="research-company-name" onClick={() => setSelected(c.id)}>查看 {c.name} 明细</button>)}</div><div>{r.evidenceIds.map((id) => { const e=data.evidence.find((item) => item.id === id); return e ? <External key={id} url={e.url}>{id}</External> : null; })}</div></li>)}</ul>}
{tab === "reviews" && <ul className="research-review-list">{data.reviews.map((r) => <li key={r.id}><span className="research-tag">{r.type}</span><h3>{r.company}</h3>{r.scope === "dataset" && <small>全局数据方法核查</small>}{r.scope === "excluded-candidate" && <small>未纳入公司表的候选</small>}<p>{r.summary}</p><p>{r.handling}</p><div>{reviewCompanies(r).map((c) => <button key={c.id} className="research-company-name" onClick={() => setSelected(c.id)}>查看 {c.name} 明细</button>)}</div><div>{r.evidenceIds.map((id) => { const e=data.evidence.find((item) => item.id === id); return e ? <External key={id} url={e.url}>{id}</External> : null; })}</div></li>)}</ul>}
</section>
{selectedCompany && <section id="research-company-detail" ref={detailSection} tabIndex={-1} className="research-detail research-section" aria-label={`${selectedCompany.name}资料明细`}>
<div className="research-detail-heading"><h2>{selectedCompany.name}</h2><button onClick={() => setSelected(null)} aria-label="关闭公司明细">关闭</button></div>
<p><External url={selectedCompany.url}>资料入口</External> {selectedCompany.extraUrl && <External url={selectedCompany.extraUrl}>额外核验入口</External>}</p>
<dl className="research-company-facts"><div><dt>主营业务</dt><dd>{selectedCompany.business}</dd></div><div><dt>样本组别</dt><dd>{selectedCompany.cohort}</dd></div><div><dt>买家</dt><dd>{selectedCompany.buyer}</dd></div><div><dt>收费/交付模式</dt><dd>{selectedCompany.businessModel ?? "待进一步核验"}</dd></div><div><dt>收费方式</dt><dd>{selectedCompany.price}</dd></div><div><dt>交付证据</dt><dd>{selectedCompany.delivery}</dd></div><div><dt>团队口径</dt><dd>{selectedCompany.teamBasis ?? "本轮未核验人数"}</dd></div><div><dt>分类依据</dt><dd>{selectedCompany.classificationBasis ?? "原有个案分类;随研究复核"}</dd></div><div><dt>技术验证证据</dt><dd>{technicalReviewLabels[selectedCompany.technicalReview?.level ?? "unreviewed"]}<p>{selectedCompany.technicalReview?.summary ?? "本轮未形成专项技术评审记录;不表示公司没有技术能力。"}</p>{selectedCompany.technicalReview && <small>评审日期:{selectedCompany.technicalReview.reviewedAt}</small>}{selectedCompany.technicalReview?.testScope && <p>测试范围:{selectedCompany.technicalReview.testScope}</p>}<p>材料可访问仅确认可查看,不证明性能、可靠性或商业交付质量;不同任务不作统一能力排名。</p></dd></div><div><dt>观测主体</dt><dd>{selectedCompany.entityBasis ?? "公司或经营品牌,法律主体未逐一核验"}</dd></div><div><dt>身份与限制</dt><dd>{selectedCompany.notes}</dd></div></dl>
<h3>经营与技术观测</h3>
{!!selectedReviews.length && <details><summary>引用该公司证据的核查记录({selectedReviews.length})</summary><ul>{selectedReviews.map((r) => <li key={r.id}><strong>{r.type}:{r.summary}</strong><p>{r.handling}</p><div>{r.evidenceIds.map((id) => { const item = data.evidence.find((e) => e.id === id); return item ? <External key={id} url={item.url}>{id}</External> : null; })}</div></li>)}</ul></details>}
{!!selectedReviews.length && <details><summary>关联核查记录({selectedReviews.length})</summary><ul>{selectedReviews.map((r) => <li key={r.id}><strong>{r.type}:{r.summary}</strong><p>{r.handling}</p><div>{r.evidenceIds.map((id) => { const item = data.evidence.find((e) => e.id === id); return item ? <External key={id} url={item.url}>{id}</External> : null; })}</div></li>)}</ul></details>}
{selectedObservations.length ? <div className="research-table-wrap"><table><thead><tr><th>指标 / 归属</th><th>原始数值</th><th>数据时点</th><th>用途及限制</th><th>证据</th></tr></thead><tbody>{selectedObservations.map((o) => <tr key={o.id}><td>{o.kind}<small>{o.scope}</small></td><td>{o.bound !== "=" && o.bound}{money(o.value,o.unit)}</td><td>{o.timing}</td><td>{useLabels[o.selection] ?? o.selection}<small>{o.reason}</small></td><td><a href={`#detail-evidence-${o.evidence}`}>{o.evidence}</a></td></tr>)}</tbody></table></div> : <p>本轮尚未找到可记录的量化经营指标。收入保持未知。</p>}
<h3>原始证据</h3><ul className="research-evidence-list">{selectedEvidence.map((e) => <Evidence key={e.id} prefix="detail-evidence" item={e} />)}</ul>
</section>}
+15 -1
View File
@@ -34,6 +34,7 @@ export type ResearchEvidence = {
export type ResearchReview = {
id: string; type: string; company: string; summary: string;
evidenceIds: string[]; handling: string;
scope?: "companies" | "dataset" | "excluded-candidate"; companyIds?: string[];
};
export type ResearchCoverage = {
source: string; accessedAt: string; candidateRecords: number; profilesRead: number;
@@ -101,10 +102,23 @@ export function validateResearch(snapshot: ResearchSnapshot) {
snapshot.companies.filter((c) => c.profileOnly).length !== coverage.newProfiles || !evidenceUrl(coverage.source)))
throw new Error("Invalid research coverage accounting");
for (const r of snapshot.reviews)
if (r.evidenceIds.some((id) => !evidence.has(id)))
if (r.evidenceIds.some((id) => !evidence.has(id)) ||
(r.companyIds && (new Set(r.companyIds).size !== r.companyIds.length ||
r.companyIds.some((id) => !companies.has(id)))) ||
(r.scope && !["companies", "dataset", "excluded-candidate"].includes(r.scope)) ||
(r.scope === "companies" && !r.companyIds?.length) ||
(r.scope && r.scope !== "companies" && !!r.companyIds?.length))
throw new Error(`Invalid research review: ${r.id}`);
}
/** Explicit reviewed associations take priority; older revisions use evidence ownership. */
export function reviewCompanyIds(snapshot: ResearchSnapshot, review: ResearchReview): string[] {
if (review.companyIds) return review.companyIds;
const evidenceIds = new Set(review.evidenceIds);
return [...new Set(snapshot.evidence.flatMap((e) =>
e.companyId && evidenceIds.has(e.id) ? [e.companyId] : []))];
}
export function categorySummary(snapshot: ResearchSnapshot) {
return snapshot.categories.map((category) => {
const companies = snapshot.companies.filter((c) => c.cat === category.id);
+21 -1
View File
@@ -8,7 +8,7 @@ import coverageAudit from "../../../content/research/ai-companies.coverage.json"
import incomeReference from "../../../content/research/ai-income-analysis.json";
import { readResearchSnapshot } from "../src/lib/ai-research-store";
import { openSiteDatabase } from "../src/lib/site-database";
import { categorySummary, evidenceUrl, validateResearch, type ResearchSnapshot } from "../src/lib/ai-research";
import { categorySummary, evidenceUrl, reviewCompanyIds, validateResearch, type ResearchSnapshot } from "../src/lib/ai-research";
import { consumeCode, initializeStore } from "../src/lib/auth-store";
import { newAuthConfig } from "../src/lib/auth";
import { describeIncome, groupIncome, platformIncomeSample } from "../src/lib/research-statistics";
@@ -60,6 +60,26 @@ test("research validation rejects broken evidence and unsafe source links", () =
assert.equal(evidenceUrl("https://example.com/evidence"), "https://example.com/evidence");
});
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, 25);
assert.equal(snapshot.reviews.filter((r) => r.scope === "dataset").length, 3);
assert.equal(snapshot.reviews.filter((r) => r.scope === "excluded-candidate").length, 8);
const review = snapshot.reviews.find((r) => r.id === "R4")!;
assert.deepEqual(reviewCompanyIds(snapshot, review), ["AI007", "AI013", "AI021", "AI034"]);
assert.deepEqual(reviewCompanyIds(snapshot, snapshot.reviews.find((r) => r.id === "CN-R-PSI")!), []);
const oldReview = structuredClone(snapshot.reviews.find((r) => r.id === "TECH-GRAD-R-SCOPE")!);
delete oldReview.scope;
delete oldReview.companyIds;
assert.deepEqual(reviewCompanyIds(snapshot, oldReview), ["AI051"], "old revisions retain evidence-owner fallback");
review.companyIds = ["unknown-company"];
assert.throws(() => validateResearch(snapshot), /research review/);
review.companyIds = ["AI007", "AI007"];
assert.throws(() => validateResearch(snapshot), /research review/);
review.companyIds = [];
assert.throws(() => validateResearch(snapshot), /research review/);
});
test("disclosure counts exclude client income, biographies, targets and duplicate milestones", () => {
const snapshot = seed as ResearchSnapshot;
const summary = categorySummary(snapshot);
+178 -37
View File
@@ -1,5 +1,5 @@
{
"version": "2026-10-30-benchmark-1",
"version": "2026-10-30-review-links-1",
"asOf": "2026-10-30",
"scope": "全球公开资料研究:保留首批个案,并扩展核查2025—2026八个YC批次候选池;成立年份以官方公司页面字段为依据。",
"limitations": [
@@ -42838,7 +42838,11 @@
"E112",
"E113"
],
"handling": "按emergent.sh官方页面及YC资料识别实体;不复制冲突身份字段"
"handling": "按emergent.sh官方页面及YC资料识别实体;不复制冲突身份字段",
"scope": "companies",
"companyIds": [
"AI053"
]
},
{
"id": "R2",
@@ -42849,7 +42853,11 @@
"E110",
"E111"
],
"handling": "该金额排除公司收入统计;保留为数据质量问题,不推断公司造假"
"handling": "该金额排除公司收入统计;保留为数据质量问题,不推断公司造假",
"scope": "companies",
"companyIds": [
"AI054"
]
},
{
"id": "R3",
@@ -42859,7 +42867,11 @@
"evidenceIds": [
"E119"
],
"handling": "排除Result收入统计"
"handling": "排除Result收入统计",
"scope": "companies",
"companyIds": [
"AI001"
]
},
{
"id": "R4",
@@ -42872,7 +42884,14 @@
"E122",
"E123"
],
"handling": "保留原文与排除原因,禁止关键词自动抽取后直接合并"
"handling": "保留原文与排除原因,禁止关键词自动抽取后直接合并",
"scope": "companies",
"companyIds": [
"AI007",
"AI013",
"AI021",
"AI034"
]
},
{
"id": "R5",
@@ -42884,7 +42903,11 @@
"E107",
"E108"
],
"handling": "不认定为已核验经常性ARR,保留两种原文标签"
"handling": "不认定为已核验经常性ARR,保留两种原文标签",
"scope": "companies",
"companyIds": [
"AI053"
]
},
{
"id": "R6",
@@ -42897,7 +42920,14 @@
"E103",
"E104"
],
"handling": "可作历史经营信号,不能作2025或2026年末同行排名"
"handling": "可作历史经营信号,不能作2025或2026年末同行排名",
"scope": "companies",
"companyIds": [
"AI016",
"AI015",
"AI043",
"AI040"
]
},
{
"id": "R7",
@@ -42907,7 +42937,11 @@
"evidenceIds": [
"E114"
],
"handling": "保留2025年共同范围;精确日期待核,不据此指控财务问题"
"handling": "保留2025年共同范围;精确日期待核,不据此指控财务问题",
"scope": "companies",
"companyIds": [
"AI044"
]
},
{
"id": "R8",
@@ -42917,7 +42951,11 @@
"evidenceIds": [
"E126"
],
"handling": "限定北京机智赛博主体,不合并关联主体收入"
"handling": "限定北京机智赛博主体,不合并关联主体收入",
"scope": "companies",
"companyIds": [
"AI048"
]
},
{
"id": "R9",
@@ -42930,7 +42968,14 @@
"E117",
"E118"
],
"handling": "在经营指标中标明种类与归属"
"handling": "在经营指标中标明种类与归属",
"scope": "companies",
"companyIds": [
"AI009",
"AI051",
"AI052",
"AI050"
]
},
{
"id": "R10",
@@ -42938,7 +42983,9 @@
"company": "全样本",
"summary": "YC、融资可见公司和英文资料占比较高",
"evidenceIds": [],
"handling": "披露率仅描述本次定向样本,不外推全球;本项依据为本版本公司表整体,继续拓展来源。"
"handling": "披露率仅描述本次定向样本,不外推全球;本项依据为本版本公司表整体,继续拓展来源。",
"scope": "dataset",
"companyIds": []
},
{
"id": "R11",
@@ -42949,7 +42996,11 @@
"E129",
"E130"
],
"handling": "采用当前定价条款,不将容量订阅误记为逐事件收费"
"handling": "采用当前定价条款,不将容量订阅误记为逐事件收费",
"scope": "companies",
"companyIds": [
"AI035"
]
},
{
"id": "R12",
@@ -42960,7 +43011,11 @@
"E099",
"E100"
],
"handling": "原值仅保留追溯,排除收入比较;当前收入未知,不据此推断其他公司。"
"handling": "原值仅保留追溯,排除收入比较;当前收入未知,不据此推断其他公司。",
"scope": "companies",
"companyIds": [
"AI058"
]
},
{
"id": "R13",
@@ -42974,7 +43029,11 @@
"E094",
"E095"
],
"handling": "各里程碑按实际披露时间记录;收购后业务与独立初创分开。60%毛利率为预期,不当作实现值。"
"handling": "各里程碑按实际披露时间记录;收购后业务与独立初创分开。60%毛利率为预期,不当作实现值。",
"scope": "companies",
"companyIds": [
"AI056"
]
},
{
"id": "R14",
@@ -42986,7 +43045,11 @@
"E089",
"E090"
],
"handling": "公司值和第三方估算分别保留;未用不同日期计算行业增长或把所有客户当付费客户。"
"handling": "公司值和第三方估算分别保留;未用不同日期计算行业增长或把所有客户当付费客户。",
"scope": "companies",
"companyIds": [
"AI055"
]
},
{
"id": "YC-R-26144",
@@ -42996,7 +43059,9 @@
"evidenceIds": [
"YC-X-26144"
],
"handling": "本批不新增到成立年份确定的公司表;保留来源供后续核查。"
"handling": "本批不新增到成立年份确定的公司表;保留来源供后续核查。",
"scope": "excluded-candidate",
"companyIds": []
},
{
"id": "YC-R-30226",
@@ -43006,7 +43071,9 @@
"evidenceIds": [
"YC-X-30226"
],
"handling": "本批不新增到成立年份确定的公司表;保留来源供后续核查。"
"handling": "本批不新增到成立年份确定的公司表;保留来源供后续核查。",
"scope": "excluded-candidate",
"companyIds": []
},
{
"id": "YC-R-30671",
@@ -43016,7 +43083,9 @@
"evidenceIds": [
"YC-X-30671"
],
"handling": "本批不新增到成立年份确定的公司表;保留来源供后续核查。"
"handling": "本批不新增到成立年份确定的公司表;保留来源供后续核查。",
"scope": "excluded-candidate",
"companyIds": []
},
{
"id": "YC-R-30975",
@@ -43026,7 +43095,9 @@
"evidenceIds": [
"YC-X-30975"
],
"handling": "本批不新增到成立年份确定的公司表;保留来源供后续核查。"
"handling": "本批不新增到成立年份确定的公司表;保留来源供后续核查。",
"scope": "excluded-candidate",
"companyIds": []
},
{
"id": "YC-R-30983",
@@ -43036,7 +43107,9 @@
"evidenceIds": [
"YC-X-30983"
],
"handling": "本批不新增到成立年份确定的公司表;保留来源供后续核查。"
"handling": "本批不新增到成立年份确定的公司表;保留来源供后续核查。",
"scope": "excluded-candidate",
"companyIds": []
},
{
"id": "YC-R-30999",
@@ -43046,7 +43119,9 @@
"evidenceIds": [
"YC-X-30999"
],
"handling": "本批不新增到成立年份确定的公司表;保留来源供后续核查。"
"handling": "本批不新增到成立年份确定的公司表;保留来源供后续核查。",
"scope": "excluded-candidate",
"companyIds": []
},
{
"id": "YC-R-COVERAGE",
@@ -43056,7 +43131,9 @@
"evidenceIds": [
"YC-COVERAGE"
],
"handling": "目录记录与原有个案研究分开筛选。未确认AI业务、年份不符、日期冲突不作为本批新增;收入保持未核验,不记为零。"
"handling": "目录记录与原有个案研究分开筛选。未确认AI业务、年份不符、日期冲突不作为本批新增;收入保持未核验,不记为零。",
"scope": "dataset",
"companyIds": []
},
{
"id": "MR-R-METHOD",
@@ -43066,7 +43143,9 @@
"evidenceIds": [
"MR-METHOD"
],
"handling": "默认取读取日前7天内最后同步的USD MRR;按类别及支付来源分组;列出样本量、均值、中位数、样本CV与去除最大值后的敏感性。统计仅描述本次产品样本,不推断行业分布或造假概率。"
"handling": "默认取读取日前7天内最后同步的USD MRR;按类别及支付来源分组;列出样本量、均值、中位数、样本CV与去除最大值后的敏感性。统计仅描述本次产品样本,不推断行业分布或造假概率。",
"scope": "dataset",
"companyIds": []
},
{
"id": "MR-R-STALE",
@@ -43079,7 +43158,14 @@
"MR-E-adspirer",
"MR-E-trackai"
],
"handling": "按最后同步日期筛选,不以网页访问日期刷新收入时间;连接过期标记保留。TrackAI的历史点仍在7天窗口内,不能声称连接当前有效。"
"handling": "按最后同步日期筛选,不以网页访问日期刷新收入时间;连接过期标记保留。TrackAI的历史点仍在7天窗口内,不能声称连接当前有效。",
"scope": "companies",
"companyIds": [
"AI016",
"MR014",
"MR013",
"MR006"
]
},
{
"id": "MR-R-IDENTITY",
@@ -43090,7 +43176,12 @@
"MR-APP-NUTRIA",
"MR-APP-CALYRA"
],
"handling": "产品/业务作为观测单位;未确认法律主体独立性,因此不把它们称作已去重的独立公司财报样本。"
"handling": "产品/业务作为观测单位;未确认法律主体独立性,因此不把它们称作已去重的独立公司财报样本。",
"scope": "companies",
"companyIds": [
"MR007",
"MR008"
]
},
{
"id": "MR-R-CASH",
@@ -43101,7 +43192,11 @@
"MR-E-speel-co",
"MR-METHOD"
],
"handling": "保留原值供核查账期、年付、退款与平台算法;不擅自纠正、不据差异判假,也不为改变统计结果而排除此点。"
"handling": "保留原值供核查账期、年付、退款与平台算法;不擅自纠正、不据差异判假,也不为改变统计结果而排除此点。",
"scope": "companies",
"companyIds": [
"MR003"
]
},
{
"id": "RUN-R-BASIS",
@@ -43114,7 +43209,11 @@
"RUN-MARGIN",
"RUN-PRICE"
],
"handling": "保留原文ARR并标明日期不确定性,排除同期ARR统计;毛利声明仅作待核查经营线索,不推断造假。"
"handling": "保留原文ARR并标明日期不确定性,排除同期ARR统计;毛利声明仅作待核查经营线索,不推断造假。",
"scope": "companies",
"companyIds": [
"AI059"
]
},
{
"id": "CN-R-NAIVE",
@@ -43126,7 +43225,12 @@
"CN-NAIVE-REG",
"E003"
],
"handling": "分别记录AI061和AI003,不合并团队、融资、模型表现或收入;成立年暂据二手资料并标明缺口。"
"handling": "分别记录AI061和AI003,不合并团队、融资、模型表现或收入;成立年暂据二手资料并标明缺口。",
"scope": "companies",
"companyIds": [
"AI061",
"AI003"
]
},
{
"id": "CN-R-PSI",
@@ -43136,7 +43240,9 @@
"evidenceIds": [
"CN-PSI-YEAR"
],
"handling": "仅保留排除证据和复核记录,不计入公司主样本或ARR比较。"
"handling": "仅保留排除证据和复核记录,不计入公司主样本或ARR比较。",
"scope": "excluded-candidate",
"companyIds": []
},
{
"id": "CN-R-MIRO",
@@ -43147,7 +43253,11 @@
"CN-MIRO-2025",
"CN-MIRO-PRICE"
],
"handling": "year保持null,公开研发年份单列;不自动匹配同名SEO公司或个体户,不参与成立年2025/2026统计。"
"handling": "year保持null,公开研发年份单列;不自动匹配同名SEO公司或个体户,不参与成立年2025/2026统计。",
"scope": "companies",
"companyIds": [
"AI062"
]
},
{
"id": "CN-R-DEEP",
@@ -43157,7 +43267,9 @@
"evidenceIds": [
"CN-DEEP-PENDING"
],
"handling": "不以备案年份代替成立年,本轮暂不纳入成立年主样本。"
"handling": "不以备案年份代替成立年,本轮暂不纳入成立年主样本。",
"scope": "excluded-candidate",
"companyIds": []
},
{
"id": "DATE-R-EM",
@@ -43169,7 +43281,11 @@
"E106",
"E108"
],
"handling": "更新同一观测O050,不重复记作新收入;仍保留原文来源和定义差异,月份精度不补成具体日期。"
"handling": "更新同一观测O050,不重复记作新收入;仍保留原文来源和定义差异,月份精度不补成具体日期。",
"scope": "companies",
"companyIds": [
"AI053"
]
},
{
"id": "DATE-R-RECENCY",
@@ -43183,7 +43299,12 @@
"E116",
"E105"
],
"handling": "收入、人数与采用规模按各自时点保存;Wonderful现主营归C05,不把异时点人数与估算收入相除形成精确人效。"
"handling": "收入、人数与采用规模按各自时点保存;Wonderful现主营归C05,不把异时点人数与估算收入相除形成精确人效。",
"scope": "companies",
"companyIds": [
"AI055",
"AI052"
]
},
{
"id": "SR-R-VARIANT",
@@ -43193,7 +43314,11 @@
"evidenceIds": [
"SR-E-variant-now"
],
"handling": "两种ARR数值均作待核交叉记录,不自动取高值;管线与履历金额排除收入比较。"
"handling": "两种ARR数值均作待核交叉记录,不自动取高值;管线与履历金额排除收入比较。",
"scope": "companies",
"companyIds": [
"AI066"
]
},
{
"id": "SR-R-DEFINITION",
@@ -43204,7 +43329,12 @@
"SR-E-abliteration",
"SR-E-codos"
],
"handling": "保留原词、上下界和币种缺项,不把数量级当作精确值,不用于同期领域均值。"
"handling": "保留原词、上下界和币种缺项,不把数量级当作精确值,不用于同期领域均值。",
"scope": "companies",
"companyIds": [
"AI067",
"AI065"
]
},
{
"id": "SR-R-PIPELINE",
@@ -43217,7 +43347,14 @@
"SR-E-quinn",
"SR-E-infragrid"
],
"handling": "建立公司与历史经营信号,但不以访问日充当收入时点;同一公司历史阶段不重复计入横截面。"
"handling": "建立公司与历史经营信号,但不以访问日充当收入时点;同一公司历史阶段不重复计入横截面。",
"scope": "companies",
"companyIds": [
"AI063",
"AI064",
"AI068",
"AI069"
]
},
{
"id": "TECH-GRAD-R-SCOPE",
@@ -43228,7 +43365,11 @@
"TECH-GRAD-TTS",
"TECH-GRAD-METHOD"
],
"handling": "记录榜单快照与区间,明确第三方评测、本轮未复测;不将Elo当百分比、Samples当客户数或折算价格当毛利。"
"handling": "记录榜单快照与区间,明确第三方评测、本轮未复测;不将Elo当百分比、Samples当客户数或折算价格当毛利。",
"scope": "companies",
"companyIds": [
"AI051"
]
}
],
"coverage": {
+1 -1
View File
@@ -1,5 +1,5 @@
{
"sourceVersion": "2026-10-30-benchmark-1",
"sourceVersion": "2026-10-30-review-links-1",
"asOf": "2026-10-30",
"metric": "platform-mrr-usd",
"sampleUnit": "product-or-business",