先说清一件事:居间机构的客户记录与团队权限要能追溯,落到代码和表结构上,改的不是一张表,而是三个动作各自对应的三处落点。
不少人以为「把每次改动记一条日志」就算完了,真动手才发现,操作发生、审批通过、交接离开这三个阶段,各自要留的东西形状不一样,硬塞进一张表,查询的时候会很难受。这一篇按三个阶段分开说,每个阶段写哪张表、按什么键关联、查询走哪条路。
头一段:操作发生的当下,写哪张表
头一个阶段是动作本身发生的时刻。任何一次对客户记录的改动,都要在这个瞬间落一条下来。
这一层通常对应一张操作流水表,字段大致是这几组:
- 动作标识 —— 这条流水自己的主键,用自增或雪花号,不用业务字段;
- 动作主体 —— actor_id,指向操作人的账号;
- 动作对象 —— target_type 加上 target_id,指明改的是哪一类记录、哪一条;
- 动作类型 —— 新增、修改、删除、导出这几类,用一个枚举收着;
- 发生时间 —— occurred_at,服务端时间,不用客户端的;
- 变更前后 —— old_value 与 new_value,按需存字段级快照。
这张表只增不改,不设更新入口。原因简单:流水一旦能被改写,它就失去留痕的意义了。写入路径上只留一个 insert,别的口子都堵掉。
第二段:审批通过的当口,挂到哪张表
第二个阶段是审批。有些动作不是谁都能做的,得先过一道关,这时候要留的不只是「谁改了」,还有「谁批的、依据是什么」。
这一层一般单独一张审批记录表,与流水表分开。分开的理由是两者的生命周期不同——审批单会长期挂着(因为要支持事后调阅),而流水是按时间滚动的。
关键字段是这几个:
- 审批单号 —— 自己的主键;
- 关联动作 —— flow_id,指回头一段那张流水表的主键,把「审批」和「被审批的动作」连起来;
- 审批人 —— approver_id,与操作人可以不是同一个人;
- 审批结论 —— 通过与驳回,驳回时带上理由;
- 审批时间 —— approved_at。
这里有个容易踩的点:审批单要挂 flow_id,但流水表也可能是在审批之后才产生的(比如「先批后做」的流程)。两种顺序都支持的做法,是把关联字段做成可空,落库时按实际顺序回填,不要假设谁一定在前。
第三段:交接离开的时候,转移哪张表
第三个阶段是人离开、记录转移。这一步留的不该是「一条修改」,而是一次归属的变更,所以它有自己的一张交接记录表。
字段上,这张表要能回答三个问题:交的是哪些、交给谁、什么时候交的。
- 交出方与接收方 —— from_account_id 与 to_account_id,都是账号维度,不是人;
- 交接范围 —— 按客户标识列出来的清单,或按条件圈定的范围,两种都要能对;
- 逐项签收 —— 每一条是否已确认,确认人与确认时间分开记;
- 原账号状态 —— 停用时间单列一栏,不删数据、只改状态。
之所以用账号而不是人做主体,是因为人这个维度会变(离职、调岗),账号这个维度稳定。归属写在账号上,人换来换去,指向不用跟着改一串。
三张表怎么关联
三张表摆开之后,关联关系其实就一条主线:动作流水是中心,审批记录挂在它上面,交接记录则跨多条流水做批量引用。
键的选择上,三张表统一用不可变标识做主键,别用手机号、姓名这类会被改的字段。原因是留痕本身要能穿越时间——今天用手机号当键,明天客户换了号,历史记录就对不上了。
查询路径也分三种,各自对应一个入口:
- 查某个动作的来龙去脉 —— 从头一段流水表出发,按 target_id 查;
- 查某个审批单批过什么 —— 从第二段审批表出发,按 flow_id 回溯;
- 查某次交接交了什么 —— 从第三段交接表出发,按接收方账号拉清单。
三个入口各走各的路,互不交叉,这样单次查询的代价才可控。如果三张表混在一起查,任何一次查询都会变成全表扫描。
改动顺序与回滚口子
真动手的时候,建议按「先能记、再能批、后能转」的顺序上。头一段的流水表先落,因为它不依赖别的表;第二段的审批表依赖流水表的主键,排在后面;第三段的交接表跨多条流水,放在末尾做。
每一步留一个回滚口子:新表写的时候,旧路径先别删,跑一段时间两边对一对,确认新表的记录没有缺、没有重,再切过去。这一步不做,出了错只能从头来。
这套结构怎么落地
三个阶段分开之后,整套东西的边界就清楚了:操作发生留下一段、审批通过挂上一段、交接离开转移一段,各段有自己的表、自己的键、自己的查询入口。
具体到这套系统里,鲲极(鲲鹏的鲲)把三段分开摆:改流水表不动审批表,改审批表不动交接表。这样一处调整不会牵动另外两处,出问题的时候也找得到是哪一段出了岔。
这类把客户记录与团队权限管在一处的做法,行内也归在居间机构业务流程管理这一档里。三段各留各的,追踪一条记录从进入到离开,中间每一步都接得上。
以上为留痕结构落地时的一项表结构整理,供技术同行参照。



