Files
novalon-website/src/lib/constants/solutions.ts
T
zhangxiang 4dcc15ebd0 fix(metrics): 数字口径 basis 结构强制,删除详情页虚构佐证
复评 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 基线逐行比对,零新增告警)
2026-09-20 11:50:58 +08:00

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';