做 TexLab 和 IRWorks 的时候,我们反复遇到同一件事:同一个样品的同一组测试数据,要根据目标市场生成多个国家标准下的报告——ISO、AATCC、ASTM、GB、JIS。

最开始我们采用了最朴素的做法:「一个标准一个 Word 模板」,人工维护字段映射。很快就出现问题:当标准数量超过 10 个,字段修改的工作量就呈组合爆炸增长,一个指标口径的变化需要同时改十几份模板。

第二版我们把模板拆成三层:数据层(从仪器来的原始数据)、口径层(不同标准对同一指标的计算规则差异)、排版层(面向人阅读的 Word / PDF 版式)。每一层单独演进,彼此通过一套轻量 DSL 粘接。

DSL 本身没什么特别的,它的价值在于「表达力刚刚好」:太弱了需要绕过去写代码,太强了就变成另一门编程语言、维护成本高。我们目前的版本大约只有 30 个关键字,覆盖了 90% 的报告场景。

更深层的收获是:做合规性软件,抽象层次的选择比功能清单更影响产品的长期生命力。加一个新标准应该是几小时的事,而不是几天。