第一百七十五章 边界
冯树下午发来消息:「有一批文件比M-07复杂一些,你们有兴趣跑一下吗?是格松医疗的,刚接手的项目,医疗器械注册证那块文件很乱。」
停了一下,他又发来一条:「你们的工具能处理医疗器械行业的文件吗?」
陆衍想了一下,回:「可以,我把文件清单发给你,你按格式整理好发过来。」
格松医疗的文件清单到的时候是第二天上午——三十一个文件,时间跨度从2019年到2022年,覆盖器械注册证申请、内部技术文件、供应商审计报告、几份内部程序文件。冯树在备注里写:「这家公司文件管理比较混乱,历史上换过人,有些版本记录不完整。」
陆衍把文件清单信息逐条录入,花了将近一个半小时。
工具跑了三分钟出来了,结果是七条高亮。
他把七条从上往下看了一遍。
前六条都是中置信——虚线。涉及版本时序的有三条,签字日期类的有两条,版本一致性类一条。每条的置信度框里都有说明,为什么是中置信:有的是字段不完整,有的是文件里有引用关系但工具没有完整读取到来源文件的所有字段。
第七条,单独看了一下,是系统在比对签字日期和版本信息的时候,发现了一条奇怪的情况——器械技术文件第三版本的签字人是一个叫廖建文的人,签字日期是2022年6月15日。但在同一批文件里,另一份文件(一份设备采购合同)的「经办人变更记录」里,有一条记录:廖建文的职位在2022年3月1日已经移交。
工具把这条标出来,置信度是中置信,说明是:「签字人廖建文在另一份文件中显示已于2022年3月1日完成职位移交,但仍出现在2022年6月15日的技术文件签字栏中——建议核实签字人在签字时是否仍具有相应授权。」
陆衍把这条读完,在本子上停了一会儿。
这条发现,技术上工具做对了——它确实在两份文件里发现了同一个人名出现在两个时间点,并且这两个时间点之间有一个职位移交的记录,这三件事都是从文件里读到的,没有引入任何外部信息。

但这条发现本质上是一个人员管理问题,不是文件逻辑问题。
廖建文三月份职位移交,六月份还在文件上签字——这个问题要查的是:他三月份移交的是什么职位,他六月份签字用的是什么身份,授权是否被撤销,还是他仍然保留了某种签字权。
这些问题,不在文件里能回答。需要查公司的人事系统,需要查授权记录,需要问人。
他把这条发现发给卫越,附了一句:「你觉得这条算不算我们应该发现的东西?」
卫越的回复来得很快:「技术上算,工程上对。但你问它应不应该——不一定。」
「你的意思?」
「工具发现了两份文件之间的人名时序矛盾,这是它应该做的事,」卫越说,「但发现这条之后,用户要核实它,需要去查HR系统,这超出了他手边材料的范围。」
「对,」陆衍说,「如果他用这个工具核查的是文件包本身,那他的期待是「这些文件里有什么问题」,不是「文件包以外还需要查什么」。」
「所以,」卫越说,「这条发现可能是对的,但它会让用户产生一个需要去文件包之外解决的任务——这是不是我们工具的职责?」
陆衍把这个问题想了一会儿。
「不是,」他说,「我们的工具是文件核查,不是尽职调查总协调。如果每条发现都要求用户去查文件包以外的资源,工具的边界就模糊了——它变成一个「告诉你去哪里查」的东西,而不是「核查你手边的材料」的东西。」

「那这条要去掉吗?」
「不去掉,」陆衍说,「但要加边界说明。」
「边界说明,」卫越重复了一下,「你的意思是在报告里注明工具不做什么?」
「是,」陆衍说,「每份报告底部加一句话——比如「本系统仅核查所提供文件包内部的逻辑关系,不核查人员授权记录、HR系统数据或文件包外部资源。涉及人员身份确认的发现,请另行核实。」」
「这样的话,用户看到廖建文那条发现,他知道这条需要他去HR那边确认,而不是工具帮他做到了。」
卫越想了一下,「这个思路对,但有一个问题——如果每条发现都可能需要去查外部系统,用户会不会觉得「发现没有用」?」
「不会,」陆衍说,「因为发现给他的是「需要核实的方向」,不是「已经核实的结论」。他知道要去查HR,比他没有这条发现、完全不知道有这个问题,价值是不同的。」
「工具能做的,是缩短他找到问题的时间,不是替他解决问题,」他补了一句。
下午,另一个问题浮出来。
陆衍把格松医疗的报告整理了一下,准备发给冯树,但他在发之前看了一眼整体——七条发现,一条是签字人问题,剩下六条全是中置信的虚线高亮。
整份报告看起来,全是虚线。

他把这个情况发给卫越:「格松这份,七条全是中置信或特殊类型,没有高置信发现。你觉得用户拿到一份全是虚线的报告,会是什么感受?」
卫越沉默了一下,「他可能会觉得工具没发现什么。」
「是,」陆衍说,「但工具发现了七条——问题是用户对「实线 = 有发现,虚线 = 可能有发现」这个区分理解不够深,他会把全是虚线理解成「没有确定问题」,进而理解成「没有问题」。」
「那你觉得怎么处理?」
陆衍想了一会儿,「报告顶部加一行汇总——「共发现7条需关注项:0条高置信,6条中置信,1条需外部核实。」这样用户一眼就知道发现了多少,置信度分布是什么。他不会因为没有高置信发现就以为什么都没有。」
「汇总行,」卫越说,「这个好加。」
「而且,」陆衍说,「这也是精度原则的一部分。我们没有高置信发现,不是工具没有用——是这批文件的问题没有达到高置信的条件。这本身就是一个信息。」
他把整理好的格松报告发给冯树,附了一段说明:
「共7条,其中0条高置信,6条中置信(建议各自核实),1条涉及签字人授权(需查HR)。报告底部有边界说明,说明了系统不覆盖哪些核查内容。你看一下。」
冯树十五分钟后回:「那条签字人问题我发给我们客户了,他们说要查人事档案。另外六条我们在对。」
「边界说明那一行,」他最后发了一条,「我觉得有必要,这个一直是我们自己做的时候容易漏的地方。」

陆衍把这条消息看了一遍,在本子上写了几行:
「边界说明原则—— 说清楚工具不核查什么,和说清楚工具核查什么,一样重要。 边界不是局限,是诚实。用户知道工具能做什么、不能做什么,才能正确使用它。 加到报告底部的那一行,是这个工具对用户的承诺:只说我能核实的事。」
他把本子合上。
窗外已经暗了,楼道里有人走动的声音。
他发了一条给卫越:「下周你把汇总行和边界说明加进去。」
「好,」卫越回,「等一下,汇总行和边界说明之外——」
他停了一下,然后发来:「你有没有想过,如果客户直接把HR系统的数据也导进来,工具是不是就能做那条签字人的高置信核查了?」
陆衍把这条看完,没有立刻回。
他想了一会儿,回了一个字:「想过。」
然后他补了一条:「先把文件包这件事做好。」