方宁发消息:「有个朋友想见你,董磊,我们集团总部的风控总监,他那边有个需求,我说不太确定你能不能做,但可以先聊聊。」
「什么需求,」陆衍问。
「他想把过去三年的供应商合规做一次追溯,」方宁说,「他们集团下面二十几家子公司,每家都有供应商,三年的文件,量不小。」
「三年,」陆衍说,「历史文件。」
「对,」方宁说,「他的说法是「历史追溯」,从今天回去看过去三年,供应商的认证证书有没有问题,有没有漏掉什么。」
陆衍把这个放在心里放了一会儿,「可以见,」他说,「但我要先想一下这件事的性质。」
他给卫越发消息,说了一下董磊的需求,「你怎么看,」他问。
卫越回得很快:「技术上可以跑——只要文件发过来,不管是三年前的还是三天前的,工具都能扫。」
「对,」陆衍说,「工具可以跑,但扫出来的东西意味着什么,是个问题。」

「怎么说,」卫越问。
「工具发现的是文件里的矛盾,」陆衍说,「日期不对,范围不对,机构名称不一致。但如果文件本身是三年前的,现在扫出来一个矛盾——你知道这个矛盾是当时就有的,还是后来重新整理归档的时候出现的吗?」
卫越停了一下,「不知道,」他说,「工具发现的是文件现在的状态,不是文件生成时的状态。」
「对,」陆衍说,「这就是问题——追溯三年,和持续三年,是两件完全不同性质的事。」
他在本子上写了两行:
持续模式:每个时间点的状态是实时抓取的,可以和下一个时间点比对,可以追踪变化。
历史追溯:文件是现在拿来的,不能确认它们是当时的原始文件,还是后来整理的版本。工具发现矛盾,但矛盾可能来自当时,也可能来自整理过程。
这不是技术限制,是信息论的限制——你只能知道文件里写了什么,无法知道文件的「生成真实性」。
他把本子合上,「约见面,」他给方宁回,「但我见之前要先想清楚能告诉他什么。」

两天后,陆衍见到了董磊。
董磊大约四十出头,说话直,开门见山:「方宁说你们能扫文件找矛盾,我想问的是,能不能帮我把过去三年的供应商认证做一遍历史核查。」
「先问你一个问题,」陆衍说,「你们现在手里的那些历史文件,是当年实时归档的,还是后来补录整理的?」
董磊停了一下,「两种都有,」他说,「核心供应商是当时归档的,有些小的是后来补的。」
「那就要分开说,」陆衍说,「当时归档的,工具能扫,扫出来的矛盾是当时就有的可能性比较大——但也不是百分之百,因为文件可能被更新过,归档的版本不一定是最早版本。」
「那后来补录的呢,」董磊问。
「补录的文件,工具扫出来的矛盾,无法确认矛盾来自当时还是补录过程中,」陆衍说,「我们只能告诉你文件现在的状态,不能告诉你三年前那张证书是不是就这个状态。」
董磊把这个想了一下,「那能发现什么,」他说。

「能发现文件里现在存在的矛盾,」陆衍说,「比如证书日期在公司注册日期之前,比如覆盖范围和采购业务对不上——这些矛盾,不管文件是当年实时的还是后来补录的,只要它们存在,工具就能发现。」
「发现了,,」董磊说,「你告诉我这个矛盾是当时的问题还是现在的问题吗?」
「我告诉不了,」陆衍说,「工具能告诉你「这里有矛盾」,但矛盾的来源,是当年还是后来,需要你们内部核查——看原始凭证,看归档记录,这部分工具没有。」
「所以说,」董磊说,把手指放在桌面上,「你做的是发现矛盾,不是确认历史。」
「对,」陆衍说,「发现矛盾,不做历史定性。这是我能做的,也是我不能超出去的。」
董磊沉默了一会儿,「那这样,」他说,「我觉得还是有用,即便有些矛盾说不清来源,至少知道那里有一个需要查的点——比现在什么都不知道要好。」
「对,」陆衍说,「发现问题存在,和知道问题的性质,是两件事——工具做第一件,第二件是人做的。」
「那我安排人发文件,」董磊说,「按子公司分批,先发一批试试看,」他说,「另外,你刚才那个说法,我回去想了我会和我们法务说一下,「发现矛盾,不做历史定性」——这个边界说清楚,他们才放心让我们用。」
陆衍点了头,「这个边界我会写进报告说明里,每次都附,」他说,「放心。」

送走董磊之后,陆衍给冯树发了一条消息,说了大概:「历史追溯的单子可能要接,但性质和之前不一样,我想让你看一下边界怎么写才合适。」
冯树很快回来:「你刚才在见面里说的那个——「发现矛盾,不做历史定性」——这一句就够了,不用另外写,把这句话放进报告说明第一行就行。」
「他法务要看的,」陆衍说。
「那就是客户自己的判断,」冯树说,「我们只要说清楚我们做的是什么,剩下的是他们的问题。」
「好,」陆衍说。
晚上,本子最后一行:
「历史追溯」模式——工具发现矛盾,但无法确认矛盾的时间性质(是当时的问题还是后来引入的)。不是技术限制,是文件信息本身的限制:你只能知道文件现在写什么,不能还原它当时是什么。
发现问题存在,和知道问题的性质,是两件事。工具做第一件。