TVS选型系统如果把所有参数都设计成一个number,很容易出现两类错误:把典型值当最大值,或把脱离测试条件的数字直接比较。更稳妥的做法是把电气值与测试条件建模为同一个对象,并在导入阶段拒绝不完整记录。
定义可追溯的数据结构
下面是可直接运行的TypeScript示例,数据为演示用途:
// @ts-check
/** @typedef {"typical" | "maximum"} LimitKind */
/**
* @typedef {Object} TvsRecord
* @property {string} partNumber
* @property {string} datasheetRevision
* @property {number} vrwmV
* @property {{valueUa:number, atVoltageV:number, temperatureC:number, limit:LimitKind}} leakage
* @property {{voltageV:number, pulseCurrentA:number, waveform:string, limit:LimitKind}} clamping
* @property {string} sourceUrl
*/
这套结构强制IR携带测试电压与温度,VC携带脉冲电流和波形。数据使用方不需要猜测字段含义。
导入时拒绝缺条件的数据
/** @param {TvsRecord} record @returns {string[]} */
function validateTvs(record) {
const errors = [];
if (!record.partNumber.trim()) errors.push("partNumber is required");
if (!record.datasheetRevision.trim()) errors.push("datasheetRevision is required");
if (!(record.vrwmV > 0)) errors.push("vrwmV must be positive");
if (!(record.leakage.atVoltageV > 0)) errors.push("IR test voltage is required");
if (!Number.isFinite(record.leakage.temperatureC)) errors.push("IR temperature is required");
if (!(record.clamping.pulseCurrentA > 0)) errors.push("VC pulse current is required");
if (!record.clamping.waveform.trim()) errors.push("VC waveform is required");
if (!record.sourceUrl.startsWith("https://")) errors.push("HTTPS source URL is required");
return errors;
}
规格书未给出条件时,应保留为空并转人工审核,不要在爬取或导入脚本里猜一个默认值。
比较函数也要检查前提
IR只有在测试电压、温度和限值口径相同时才适合直接排序。VC同样要先核对脉冲电流和波形。可以让比较函数先返回comparable: false,而不是硬算排名。
阿赛姆SMA04J Rev1.4把VRWM、VBR、VC、IPP和IR列在同一表中,适合作为结构化录入示例。系统还应保存页码或表格位置,方便人工回到原始资料。
参考资料: