diff --git a/README.md b/README.md
index ad967c7..9db124d 100644
--- a/README.md
+++ b/README.md
@@ -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 公司。
界面将公司自述、第三方估算、融资、客户收入和履历收入分开,未知收入不记为零。
保留被撤回的声明作为核查记录,并排除收入比较;并购后业务、管理层预测与历史里程碑单列。
diff --git a/apps/docs/src/components/AICompanyResearch.tsx b/apps/docs/src/components/AICompanyResearch.tsx
index 4ce641c..836687d 100644
--- a/apps/docs/src/components/AICompanyResearch.tsx
+++ b/apps/docs/src/components/AICompanyResearch.tsx
@@ -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() {
离散度用于筛选值得核查的异常,还需排除公司年龄、口径和披露偏差;不能据此认定财务造假。
>}
{tab === "sources" && <>来源链接保留原始位置。相同 URL 的记录可能属于同一披露,不能按记录数计算独立证据数量。
{data.evidence.slice(sourcePage * evidencePageSize, (sourcePage + 1) * evidencePageSize).map((e) => )}
{data.evidence.length > evidencePageSize && }>}
- {tab === "reviews" && }
+ {tab === "reviews" && }
{selectedCompany &&
{selectedCompany.name}
资料入口 {selectedCompany.extraUrl && 额外核验入口}
- 主营业务
- {selectedCompany.business}
- 样本组别
- {selectedCompany.cohort}
- 买家
- {selectedCompany.buyer}
- 收费/交付模式
- {selectedCompany.businessModel ?? "待进一步核验"}
- 收费方式
- {selectedCompany.price}
- 交付证据
- {selectedCompany.delivery}
- 团队口径
- {selectedCompany.teamBasis ?? "本轮未核验人数"}
- 分类依据
- {selectedCompany.classificationBasis ?? "原有个案分类;随研究复核"}
- 技术验证证据
- {technicalReviewLabels[selectedCompany.technicalReview?.level ?? "unreviewed"]}
{selectedCompany.technicalReview?.summary ?? "本轮未形成专项技术评审记录;不表示公司没有技术能力。"}
{selectedCompany.technicalReview && 评审日期:{selectedCompany.technicalReview.reviewedAt}}{selectedCompany.technicalReview?.testScope && 测试范围:{selectedCompany.technicalReview.testScope}
}材料可访问仅确认可查看,不证明性能、可靠性或商业交付质量;不同任务不作统一能力排名。
- 观测主体
- {selectedCompany.entityBasis ?? "公司或经营品牌,法律主体未逐一核验"}
- 身份与限制
- {selectedCompany.notes}
经营与技术观测
- {!!selectedReviews.length && 引用该公司证据的核查记录({selectedReviews.length})
}
+ {!!selectedReviews.length && 关联核查记录({selectedReviews.length})
}
{selectedObservations.length ? | 指标 / 归属 | 原始数值 | 数据时点 | 用途及限制 | 证据 |
{selectedObservations.map((o) => | {o.kind}{o.scope} | {o.bound !== "=" && o.bound}{money(o.value,o.unit)} | {o.timing} | {useLabels[o.selection] ?? o.selection}{o.reason} | {o.evidence} |
)}
: 本轮尚未找到可记录的量化经营指标。收入保持未知。
}
原始证据
{selectedEvidence.map((e) => )}
}
diff --git a/apps/docs/src/lib/ai-research.ts b/apps/docs/src/lib/ai-research.ts
index 1f48de7..64e8134 100644
--- a/apps/docs/src/lib/ai-research.ts
+++ b/apps/docs/src/lib/ai-research.ts
@@ -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);
diff --git a/apps/docs/tests/research.test.ts b/apps/docs/tests/research.test.ts
index 33cc9a6..7482c48 100644
--- a/apps/docs/tests/research.test.ts
+++ b/apps/docs/tests/research.test.ts
@@ -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);
diff --git a/content/research/ai-companies.seed.json b/content/research/ai-companies.seed.json
index 140dc37..9f03291 100644
--- a/content/research/ai-companies.seed.json
+++ b/content/research/ai-companies.seed.json
@@ -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": {
diff --git a/content/research/ai-income-analysis.json b/content/research/ai-income-analysis.json
index 1b661a8..ad8b9c3 100644
--- a/content/research/ai-income-analysis.json
+++ b/content/research/ai-income-analysis.json
@@ -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",