复评 P0 收尾:把「每个数字带口径」从个别页自觉升级为结构性强制。 - metrics-basis.ts:METRIC_BASES / METRIC_BASIS_NOTES + resolveMetricBasis (缺失·非法·大小写错一律回落最弱 target)+ weakestBasis(一组数字取最弱者聚合) + FORBIDDEN_PROOF_PHRASES;MetricsBasisNote 收 basis prop - 类型层 Product.metrics / DataProof / ServiceMetric / Solution.outcomes / DataMetric / about keyMetrics 全部加 basis?;9 处调用点改为 basis 驱动 - content-types.ts 新增共享 metricBasisField(select)展开进 9 处字段定义; trustSignals 有意跳过(已有自己的 source)。seed 显式声明 55 条 target - 删除字面虚构佐证:详情页「每一项指标都源自真实客户案例」、「经过实战验证」×3、 「来自真实客户的使用数据」、「经实际场景验证」;给此前完全裸奔的 3 个共享 数字渲染器(DataProofSection / detail-trust / detail-product-value)补上角注 - metrics-basis.test 3→16 例:basis 解析正控制、weakestBasis 次序、seed 全量 显式声明 + 覆盖证明(防空跑假绿)+ 禁任何条目自称 verified + 禁词全源码扫描 - 文档同源:DESIGN.md 立 The Declared-Basis Rule;PRODUCT.md 常驻禁令; CONTEXT.md 记决策并警示 admin 字段需重跑 seed 才激活 边界:CMS 字段定义存 ContentModel.fields(DB 内 JSON),basis 下拉须重跑 seed 才会出现在 admin 表单;本次 DB 与 seed 数据值零改动,渲染端对缺 basis 兜底 target。 Gates: type-check 0 · jest 1594/132 · contrast 7/7 · headings 10/10 lint 0e/128w(与 stash 基线逐行比对,零新增告警)
36 lines
1.0 KiB
TypeScript
36 lines
1.0 KiB
TypeScript
// ============ 解决方案详情数据 ============
|
|
|
|
export interface Solution {
|
|
id: string;
|
|
industry: string;
|
|
title: string;
|
|
subtitle: string;
|
|
description: string;
|
|
challenges: string[];
|
|
solutions: string[];
|
|
relatedProducts: string[];
|
|
heroThemeId?: string;
|
|
valueProposition: {
|
|
headline: string;
|
|
points: { icon: string; title: string; description: string }[];
|
|
};
|
|
suiteCombination: {
|
|
primaryProducts: string[];
|
|
complementaryServices: string[];
|
|
rationale: string;
|
|
};
|
|
// TODO: 初创企业暂无案例数据,待积累后填充
|
|
caseStudies?: import('./cases').CaseStudy[];
|
|
dataProofs?: import('./products').DataProof[];
|
|
certifications?: import('./products').Certification[];
|
|
painPoints?: string[];
|
|
outcomes?: { value: string; label: string; basis?: import('./metrics-basis').MetricBasis }[];
|
|
recommendedProducts?: string[];
|
|
}
|
|
|
|
/**
|
|
* 行业解决方案数据已从硬编码迁移至 CMS 种子文件
|
|
* @see /prisma/seeds/solutions.ts
|
|
*/
|
|
export { SOLUTIONS } from '../../../prisma/seeds/solutions';
|