担保系统简介

XXX担保是一个担保贷款系统,其目的是为了帮助客户取得银行贷款,然后从中收取部分手续费。

担保公司由多个系统,担保系统是核心系统,担保系统需要依赖的主要有以下几个系统

  • CRM 系统,主要维护客户的信息。

  • 风控系统,风控系统来判断一笔业务是否可以开展,也决定一次授信的上限。

  • 保后系统,放款完成后的跟踪。

系统核心概念

  • 客户

    • CRM 系统负责

    • 客户分为个人客户和企业客户,主要面向企业客户。

    • 客户的基本信息通过企查查等第三方平台查询。

  • 银行

    • 合作银行,最终放款方

    • 银行产品,对于同一个银行有多个贷款产品。客户真正签约的是银行产品而不是银行。

  • 意向

    • 客户的贷款意向。较为独立的一个域,售前系统负责,会有一些基本信息从售前系统同步过来。

    • 意向表记录的信息会带入到具体的模块,可修改。

    • 基本信息包括如下:

      • 客户基本信息

      • 意向银行产品

      • 预计授信额度

      • 担保物/人

  • 授信

    • 授信是指银行给予客户一定的信用额度,所有的贷款业务不会超过这个额度。(类比为信用卡额度)

    • 授信额度由风控系统计算得出,主要参考客户信用,反担保价值

  • 单比

    • 单比是指的就是每次贷款。(类比每次使用信用卡消费)

  • 反担保物/人

    • 对于银行来说担保公司是担保人,对于担保公司来说,客户需要一定的抵押物或者担保人。这里的担保人叫做反担保人,担保物叫做反担保物。

    • 抵质押物 (包括房产,车子,股票,知识产权等无形资产)

    • 反担保人 个人客户一般是夫妻,直系亲属。企业客户一般是企业法人,实控人。

  • 放款

  • 缴款

我的主要工作内容

  • 重新梳理整个业务流程,做架构设计

  • 放弃流程引擎,改为使用状态机控制。

    • 系统流程并不复杂,并且也很少变动。使用流程引擎没有太大的必要,反而增加开发人员的心智负担。

    • 流程引擎的搜索功能并不好用,不支持全文搜索。把需要搜索的信息放到流程变量后会显著降低搜索速度且难优化。

    • 业务有流程跳转的需求,使用流程引擎跳转实现较为复杂。

  • 根据UML图,重新设计优化数据库表结构,合理使用索引。

    • 根据历史代码,上下文信息,修改bak1 等预留字段为实际的字段名称。

  • 优化服务器文件系统

    • 老系统:服务器磁盘 1T *3 每台服务器即存文件也存日志,和mysql数据

    • 新系统: 文件统一放到 minio 集群 (因为涉及到合格,数据主权等问题,不能用公有云OSS)MySQL Nginx 等中间件使用单独的服务器,应用使用单独的服务器。

  • 代码优化

    • 部分使用DDD模式设计代码结构