/** 6 个评分维度 */ export type DimensionName = 'integration' | 'coverage' | 'security' | 'flaky' | 'performance' | 'gdscript'; export type DimensionStatus = 'pass' | 'warn' | 'fail' | 'na'; /** 单维度标准化结果(采集器产出,评分函数消费) */ export interface DimensionResult { /** 0-100;NA_SCORE(-1)表示未采集 */ score: number; /** 该维度权重(0-1),来自 WEIGHTS */ weight: number; status: DimensionStatus; /** 原始指标,采集器自行填充 */ raw?: unknown; detail?: string; } /** 硬否决记录:某维度低于红线,无视总分直接 fail */ export interface HardFail { dimension: DimensionName; reason: string; threshold: number; actual: number; } /** check-gdscript 产出 / collectGdscript 消费的共享契约(TS 两侧锁字段) */ export interface GdscriptReport { errors: number; warnings: number; files: number; details: string[]; detailsTotal: number; incomplete?: boolean; reason?: string; } /** 评分产物——PR gate / dashboard / 发版的单一事实源 */ export interface ScoreJson { total: number; pass: boolean; partial: boolean; godotVersion?: string; generatedAt: string; dimensions: Record; unverified: DimensionName[]; hardFails: HardFail[]; } /** collectPerformance 产出 / 消费的共享契约(单位 ms 锁死,wallclockMs 是 score 唯一输入) */ export interface PerformanceReport { wallclockMs: number; testResults: number; }