明确核查范围并补齐公司明细关联
This commit is contained in:
@@ -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>}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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,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",
|
||||
|
||||
Reference in New Issue
Block a user