用余额快照秒级导出实现财务报表

【思考点滴】

作者 : 杨考  微信号 : devin_cn_hd_09_16


做结算的,不做余额快照,那是不可能的事情


仅将自己的实践分享出来,希望能帮到更多结算的工作人员和对结算感兴趣的人员


目标:用余额快照完成资金的无缝对接+财务报表秒级提取


按指定的时间段【日、月、年、或者任意时间段】、指定账户、指定子账户、指定城市、指定订单类型【业务】、指定交易类型统计相应的金额数据、交易频次、出入账金额











1. 快照类比简介



似水流年,回忆过去,照片里有我们年轻的身影,照片可以帮我们找回曾经的记忆。


这里的照片就是当时的一个快照。


账户的余额是实时在变化,我们怎么制作账户余额的快照呢?


2. 业务、数据和需求

2.1 【业务】特征介绍

2.1.1 外卖商户端账户特征



2.1.2 账单

账单包含 : 账户,户名,交易日期,交易机器标号、交易类型、起始金额、发生金额、交易完成后金额 ...


2.2 【需求】对账关注维度




2.3 【紧急需求】实时的、隔日的、月度的余额随时导出


3. 设计


3.1 常见余额快照设计方案



3.2 余额快照准确性的践行之路

一步留神,初始设计就选择了方案1,指定时间对账户的余额直接进行SUM大哭大哭大哭



3.3 余额快照制作思路


可以选择制作期初余额,或者期末余额
如下是以”期初余额制作”图示,相应的”期末余额制作”方法相似。
余额快照准确性校验,”T时刻期初余额”+”N秒内交易入账金额”-”N秒内交易出账金额”=“T+N时刻期初余额




3.4 余额快照制作注意点



3.5 多维度信息存储-数据库动态字段扩展设计


3.5.1 基本信息【含账户、账期、子账户金额、城市 ...】



3.5.2 动态可扩展字段【一种格式化的json数据】

如上的detail_info字段,其中包含了最细的统计维度【trade_type交易类型、flow_type出入账类型】和基础数据【金额、交易笔数】



3.5.3 可扩展性说明

1、格式化的detail_info,以json方式存储,存储了交易类型金额、交易类型数量、当日总的出账金额、当日总的入账金额
2、为格式化的json提供了一套生成深层次信息的lib函数,同时也提供了一个将深层次json扁平化的lib函数。
     例如上如上的 $detailInfo[‘trade_type’][29][‘amount’]   完成到 $detailList[‘trade_type_29_amount’] 的互转
3、统计维度可扩展
   和trade_type, flow_type 并列的统计维度,直接加入一个类似的信息即可
   属于 trade_type, flow_type 的上一级,即直接在将这几个维度再归类到不同的维度下,如加入订单类型维度,按订单类型,可以导出某种订单类型下的指定交易类型的数据


4. 发现的问题


4.1 T日期初余额和T-1日期末余额对不齐


4.2 账单中子账户类型错误


4.3 原始数据错误,金额更新有问题


4.4 余额更新没有按照实际的交易次序进行更新【先交易先更新余额的原则】 


4.5 余额更新跨日,且更新延时严重


5.收益


5.1 通过余额快照数据准确性,发现了深层次的业务设计问题



5.2 余额快照的数据现在已经完全准确,余额快照的准确性已经成为结算的一张王牌。



5.3 余额快照统计的维度,更贴近于财务报表的维度,现在大部分的导数已经停用了,线上秒级完成定制的余额账务信息导出,比传统的财务报表导出快很多【N天】



5.4 余额快照可以对线上业务进行监控







猜你喜欢

转载自blog.csdn.net/yk200808/article/details/80810603