合同中心系统的重构历程也见证了车金融业务的发展,作为车金融业务线一个非常重要的系统,从最初的研发繁杂且劳累周期长,到后来了简约配置快速上线业务支持,反映了一个划时代的变化。而我也见证了这个业务系统的成长历程,这背后的架构设计与演进蕴含着设计的扩展性与灵活性,我可以分享给各位看官。


车金融|金融产品中心的前世今生

车金融|GPS审核系统的前世今生

车金融|基础数据平台的前世今生

车金融|合同中心系统的前世今生

车金融|金融产品规则引擎的前世今生(上篇)

车金融|金融产品规则引擎的前世今生(中篇)

车金融|金融产品规则引擎的前世今生(下篇)

车金融|我在M公司的那两年

文章目录

  • 零、前言
  • 一、导读
  • 二、入职之初
  • 三、初次革新
  • 四、历史机遇
  • 五、重塑设计
    • 1.资方管理
    • 2.合同管理
    • 3.要素配置
    • 4.要素管理
    • 5.版本管理
    • 6.模板管理
    • 7.签章管理
    • 8.交互示例
  • 六、尾语

零、前言

本文撰写于2020年11月13日至2020年11月22日期间,共计3300余子,内容全部于上下班地铁途中(顺义-大望路)通过手机在有道云笔记编写,后多次修改并润色校稿,并于今日2020年11月22日完成插图。合同重构是业务发展的必然选择,也是其地位的重要性。

一、导读

合同系统作为车金融业务线一个重要的系统,之所以重要在于这些合同从业务上对于意向客户和运营公司具有法律责任特征,因此业务的场景赋予这个系统一个重要的地位,毋庸置疑。

合同伴随着从获客到放款,它伴随着整个业务流程环节。从合同签约的那一刻起,合同系统就会伴随着订单的整个生命周期进行业务就转。

合同包括纸质合同和电子合同,通常一个合同条文的制定以及风险评估会有公司专门负责制定(譬如法务部门)。合同伴随着业务场景的需要,从合同要素根据模板渲染,然后生成电子合同或者纸质合同。

因此合同的管理,包括模板管理,要素配置,逻辑控制,版本控制,不同资方自己业务场景的不同逻辑控制,系统如何设计,如何满足复杂的场景,至关重要。

这篇文章将会介绍重构的历程和背景,以及系统是如何演进的,是如何快速支持业务发展的。同时,又会从架构设计角度来讲,进一步诠释背后的核心设计,对于一些读者将会带来启迪和灵感。

二、入职之初

2017年9月初,我入职了一家公司,属于车金融事业部,我所在的研发团队则是车金融业务线最繁忙而又最重要的核心研发团队。

这个团队支撑整个业务线的需求研发工作,包括APP研发,后端研发,前端研发,测试团队,产品团队,而我属于后端研发的一员。初入职,就是从GPS审核业务模块的需求开始一步步起步的。

最初我们业务线有一个业务系统,就是合同系统,虽然这个系统比较粗糙,但是它具备了模板管理,模板渲染,签章管理等一系列基本功能。

但由于技术架构的局限性,最初的系统承担着需要管理这些合同模板,而模板则基于JSP页面进行维护。每次新增合同或者合同内容调整,需要后端研发自己编写HTML和CSS,而且必须遵守一定的规范,譬如一行不能多于多少字,否则内容生成或者打印的时候超出纸张。

因此合同模板的管理复杂且成本高,这就带来了每次小小的需求迭代都需要花费很多的时间去人工调整合同内容或样式,而且合同对浏览器的版本有一定的要求,对于一些纸质合同预览或者打印,用户必须使用指定的浏览器。

尽管如此,但负责这个系统的研发可谓劳苦功高,日常就是管理维护这些合同,虽然技术没什么含量,但内心肯定不少骂爹,毕竟没办的。

三、初次革新

入职不到半年,团队人员大变更,负责这个研发团队的VP突然离职了,后续研发团队内部的大部分人员也陆续离职。期间,来了一位新领导,负责我们研发团队,然后带领这个团队开山劈林。

而我作为这个研发团队的老员工,尽管入职不到半年,但得到领导的青睐和赏识,被委以重任负责金融产品系统和GPS审核系统。

新老板肯定不能继续容忍合同系统这种架构设计,因此,合同中心的重构迫在眉睫。车金融业务线有个公共服务,CA系统,提供了各业务线对接,管理合同模板以及电子合同的生成以及签章管理。

就这样,合同系统也开始对接CA系统,以进一步剥离出相关功能移植到CA系统中,本身只关注合同要素数据的获取,以及合同影像文件的业务逻辑存储。

合同系统这样技术架构调整后,对于车金融业务线所关注的系统业务职责也逐渐变得清晰。为了提高应对需求迭代的效率,基于XDiamond的合同要素取值配置在新重构的合同系统(Doraemon)得以运用。

四、历史机遇

新的合同系统伴随着越来越多的资金方接入车金融,但是系统基于Xdiamond配置的形式配置变得越来越复杂,日常维护成本提高。

这种配置基于JSON配置结构,采用Spring SPE表达式实现业务逻辑取值和逻辑路由控制。业务场景的复杂性,同时也增加了配置逻辑的复杂性。

譬如对于同一资方,同一金融方案,但是对于新车或者二手车务逻辑场景控制却有很大的不同,因此公司业务为了扩展多样性以及实现不同地域的差异性,无形中使得这个合同系统容易配置越来越容易出错。

合同系统面临的痛点是,没有一个健全的审核流程发布机制和合同版本控制机制,一旦配置出错,则影响线上的电子合同与纸质合同。

事实上讲,线上也因配置出错导致的故障。一旦出现故障,当我们研发收到故障情况时,时间已经非常滞后。

后来,领导开始安排我负责合同与贷后的需求研发管理工作,对于当前系统存在的问题需要做出决策和方案,对下一步工作做详细的规划,以解决当前系统面临的诟病。

初步带领这个团队,了解当前需求情况和日常管理机制,对当前的研发管理工作有了初步的了解。然后,下一步工作就是健全日常的项目管理机制,完善项目流程规范。

在这一方面做出了如下改进措施:

  • 完善项目流程规范机制,通过日常小组会议强调流程规范的重要性。
  • 完善项目研发的review机制,需求研发必须做好技术方案预研和评审工作。
  • 健全系统的监控和诊治工作,自主研发开发了流量复现和样本覆盖功能,对于线上的发布和检测可以弥补功能测试的短板,进一步保障线上发布质量。
  • 自主研发开发了质检中心系统,对于合同与请款做数据质量检测。

诚然,从长远来讲,我们需要对当前合同系统面临的新一轮挑战尽快做出决策,以尽快解决当前面临的问题。

因此,我们研发团队重新梳理了线上的合同业务逻辑和合同要素取值,通过表格化或思维导图形式做出了详尽的梳理并整理到WIKI,对于下一步数据监测和重构系统奠定工作。

同时,与产品团队一起沟通技术设计方案和原型功能设计,对下一步重构工作做总体规划方案。

五、重塑设计

我们摒弃了基于Xdiamond配置的设计方案,是由于我们清晰地认识到,虽然这种配置形式灵活,但是不利于非技术同学的运营维护。为了提高产品同学的方便快捷使用,降低日常运营的成本,因此,我们从交互设计来讲,吸收了金融产品平台的交互设计方案为其所用。

由于不同资方之间合同条文以及业务逻辑的多样性,同为了方便重构后的系统可以方便管理这些合同,在这一方面我们花费了很多构思和想法,为构建一个简单易用的合同系统平台,以进一步提高日常运营效率,快速支持日常业务变更需求上线。

同时我们也要思考另外几个问题,就是合同版本机制的设想。由于需求上线后,对于历史订单的合同则维持原来的业务取值逻辑,但是对于新的订单则运用新的版本控制逻辑。对于这种需求场景迫切诉求,我们在设计合同版本控制的功能设计上,通过团队小组认真研究,做出了不少创新成果。

1.资方管理

资方即金融方案的资金方,不同资金方的合同是有所不同的,因此这是合同系统的第一个大维度,一个资方包含若干合同。

资方的创建,是根据金融产品平台启用的资方进行初次配置的。

2.合同管理

这里的合同管理,即所有资方的全量集合,根据业务划分,有通用类和特殊类两大类。通用类,适用于所有资方,特殊类用于解决特殊资方一下特殊业务场景的应用。

这里的合同,包括自身合同编码,以及对接CA系统的合同编码。CA的合同编码用于调用其系统时,根据合同模板生成合同影像。

同时,合同有一个批次字段,用于标识不同场景阶段所签约的合同,譬如授信阶段或者贷前阶段。

在资方管理可以配置应用已启用的合同集,这里的合同集就是业务规定需要进行签约的所有合同。

3.要素配置

合同创建完成之后,然后应用于资方,即可以对该资方不同的合同配置取值逻辑。取值逻辑可以基于条件场景确定取值配置,多个场景的条件优先级是相同的。

取值配置可以继续数据项或者表达式配置,所有的数据项由系统内部先决决定。

4.要素管理

要素即合同数据字段,一个合同有若干个字段,用来声明合法的字段。这些字段经过填充后,基于合同模板可以最终生成有效的合同影像。

由于要素是合同中最早的业务单位,因此数量比较庞大,所以可以基于不同的组进行管理,以便在合同配置时方便快捷检索使用。

5.版本管理

版本是基于合同管理的,以适用的业务场景的发展需要。

6.模板管理

合同模板最终由产品确定范文内容,然后通过CA系统,上传模板并启用。

7.签章管理

签章即合同上的主体公司,这些签章在CA系统进行管理合同系统调用CA系统,需要声明某个合同的签章关键字。

8.交互示例



六、尾语

一个系统从设计之初,并不可能就是考虑周全且设计完美的。正因为如此,所以我们要不断根据业务实际的发展趋势,不间断地解决系统面临的痛点,重构优化是伴随着从开始到未来,重构优化的目的就是为了系统更好地适应业务的趋势发展,两者的关系紧密相连。

从系统架构的本质来讲,就是通过重构进一步提高系统的扩展性和伸缩性,为迎接下一轮挑战奠定坚实的基础和有效的保障。

车金融|合同中心系统的前世今生相关推荐

  1. 车金融|GPS审核系统的前世今生

    GPS审核系统历经前后几次自主创新重构以及在需求迭代中小规模重构优化,系统最终能持续半年需求不再迭代,这背后多少有重构带来的变化和影响.GPS审核系统并非最初就有,它仅仅只是原先一个庞大既臃肿系统中的 ...

  2. 车金融|我在M公司的那两年

    回顾那段公司的工作经历,经过两年多时间的洗礼,我觉得最大的收获就是遇到一位好老板,得以器重与栽培.自委以重任后,带领金融产品团队进行了一系列的系统重构和改造优化工作,重新塑造了一系列车金融相关业务核心 ...

  3. 每日新闻:抖音杀入小程序战场;懂车帝发布SaaS系统 ; 汉得开源其企业级PaaS平台;甲骨文推出“第二代云” 向AWS发起挑战...

    关注中国软件网 最新鲜的企业级干货聚集地 今日热点 工业和信息化部:前三季度软件业务收入同比增长15% 2018年前三季度,我国软件和信息技术服务业保持稳中向好发展态势,软件产品收入稳定,信息技术服务 ...

  4. 万字长文全解读 | 浅析银行数字化转型之二:打造金融敏捷中心

    本文作者: 刘伟光,蚂蚁金服副总裁,目前致力于蚂蚁金服技术的商业推广和生态建设.在加入蚂蚁金服前,他在企业软件市场深耕多年,创建Pivotal软件大中华区分公司,开创了企业级大数据以及企业级云计算Pa ...

  5. 浅析银行数字化转型:如何打造金融敏捷中心

    2018年7月蚂蚁发布了浅析数字化转型的第一篇万字长文,关于转型路径的分析.经过半年时间的等待,我们的数字化转型系列文章之二- <打造金融敏捷中心>,终于问世了.上一篇我们着力分析了数字化 ...

  6. 万字长文全解读 | 浅析银行数字化转型之二:打造金融敏捷中心 1

    本文作者: 刘伟光,蚂蚁金服副总裁,目前致力于蚂蚁金服技术的商业推广和生态建设.在加入蚂蚁金服前,他在企业软件市场深耕多年,创建Pivotal软件大中华区分公司,开创了企业级大数据以及企业级云计算Pa ...

  7. HBase在大搜车金融业务中的应用实践

    摘要: 2017云栖大会HBase专场,大搜车高级数据架构师申玉宝带来HBase在大搜车金融业务中的应用实践.本文主要从数据大屏开始谈起,进而分享了GPS风控实践,包括架构.聚集分析等,最后还分享了流 ...

  8. 惊艳!亚洲规模最大、标准最高的金融数据中心 |上证所金桥技术中心基地项目...

    上证所金桥技术中心基地项目,是目前亚洲金融行业规模最大.标准最高的新一代数据中心,主要由8栋数据中心机房楼. 2栋动力楼.1栋总降压站及3栋生产辅助楼.1栋行政办公楼等18个单体共同构成. 贴合数据的 ...

  9. 浅谈金融数据中心的消防安全

    结合实践,本文从消防系统建设.消防管控等角度阐释如何防范和应对火灾风险,维护金融数据中心的消防安全. 作为国家安全的重要组成部分,金融安全是经济平稳健康发展的重要基础,如何有效防范金融信息系统运营风险 ...

  10. java洁能租车计算机毕业设计MyBatis+系统+LW文档+源码+调试部署

    java洁能租车计算机毕业设计MyBatis+系统+LW文档+源码+调试部署 java洁能租车计算机毕业设计MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目架构:B/S架构 开发语 ...

最新文章

  1. 深度学习——卷积神经网络 的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)
  2. Jenkins安装目录说明
  3. scala能进入交互模式但是无法执行本地文件、长时间卡住的问题
  4. 普大喜奔 | Azure 免费送网站SSL证书啦!
  5. 阿里云日志服务SLS,打造云原生时代智能运维
  6. 由SGA组件内存移动导致前台业务超时问题处理过程
  7. 利用DIV,实现简单的网页布局
  8. 10款概念手机,哪款是你的最爱
  9. ubuntu 16.04 安装和卸载postman
  10. 【python】10行代码下载B站弹幕
  11. 微信使用OD逆向HOOK的一些心得
  12. 测试用例和缺陷报告模板
  13. 知了课堂Day3——微信小程序基础03——组件的一些笔记
  14. hihocoder 网易游戏2016实习生招聘在线笔试 解题报告
  15. 哪些人需要发表期刊论文
  16. 纸牌游戏——小猫钓鱼(队列、栈)
  17. 最基础的jvav的集合框架组成
  18. 快速串联 RNN / LSTM / Attention / transformer / BERT / GPT
  19. 将字符串转化为ASCII码
  20. Gradle | Gradle构建之Groovy语言基础

热门文章

  1. STM32CubeMX + STM32F407ZG + USB3300 高速USB实验(虚拟串口)
  2. STM32移植USB驱动总结
  3. QTreeView设置branch图标大小
  4. USB 3.0连接器引脚、接口定义及封装尺寸
  5. ubuntu配置IP并且生效
  6. 拷贝速度测试软件,Fastcopy实际拷贝速度PK_硬盘_内存硬盘评测-中关村在线
  7. 电感值、电容值的理解(上)
  8. vue实现登录验证码
  9. ap启动失败 ensp_华为ENSP模拟无线AP配置
  10. 1、AD创建模板和导入