业务架构视角:以催收系统研发为例,写好需求分析以及概要设计

1,409 阅读7分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 7 天,点击查看活动详情

用户需求和产品PRD是业务语言,身为开发,我们需要去理解业务。需求分析和概要设计是快速理解业务,推进开发进度的关键因素,本文以催收系统的案例,适当简化了部分业务知识,探讨如何去编写需求文档和概要设计。当然每家公司的规范和个人习惯各不相同,软件工程是一门优雅的学科,社区掘友卧虎藏龙,希望可以从社区学习到更加完善的工程文档。

1.引言

1.1 编写目的

催收系统作为一个全新开发的系统,一期的顶层设计直接影响后期的扩展和维护。本文档针对产品经理的需求文档进行分析,希望可以站在全局的角度去梳理清楚整个系统的功能组成以及业务流程。基于此编写的概要设计文档,可以指导后续的详细设计。希望可以将催收系统做到可用可扩展,逐渐丰满起来。

1.2 面向对象

该文档编写出来以后,面向的主要是技术团队的同学,开发,测试,产品经理,一起对业务领域进行反复明确和修正。

1.3 参考文档

参考产品的PRD文档《催收系统一期PRD》

原型《催收系统一期》

2.概述

2.1 开发意图

该系统开发完成之后主要针对一下三个场景:

  1. 催收主管可以管理催收人员,设置并管理置催收人员承担的分单比例。
  2. 每日凌晨,系统可以自动抓取逾期的贷款单,按照设置的分单比例进行分单。
  3. 提供催收查单功能,主管和催收人员按照各自权限进行查单,进催收操作,外呼待催收客户,记录服务日志。

2.2 功能结构图

020-催收分单模块 (3).png

2.3 功能简介

催收系统一期功能主要聚焦于逾期单子的抓取,待催收工单的分配,工单状态的同步;催收人员的查单,对客户的智能外呼,服务日志记录,简单报表查询。二期需要基于一期的功能去处理催收提成的计算,完整报表查询,委外管理,债转管理。

3.用例图

3.1 催收总览&分单记录

3.1.1 用例图

催收总览业务用例图

3.1.2 用例描述
3.1.1.1 批量设置催收单停催

主管在操作催收停催时,可以批量选择催收中的催收单。提交之后,对应的催收单会抹除已分配的催收人员。

3.1.1.2 批量设置取消停催

主管在操作催收停催时,可以批量选择已停催的催收单并可以在可分配的催收人员名单中,指定待分配的各阶段催收人员。提交之后,对应的已停催的催收单会分配到指定的催收人员。

3.2 催收查单

3.2.1 用例图

催收查单业务用例图

3.2.2 用例描述

人员角色分为主管和催收员工,主管拥有所有催收员工的催收数据,可以根据不同维度去查询催收数据。而催收员工只能查询自己分配到的催收工单。

通过催收工单数据,可以通过电话服务对外呼出,并在服务日志页面记录本次通话的服务日志。

3.3 分单设置

3.3.1 用例图

分单设置业务用例图

3.3.2 用例描述
3.3.2.1 移除催收人员
  1. 主管操作移除催收人员名单之后,该催收人员将在自己的所属的催收阶段被移除。
  2. 该催收人员所有的催收中部更新状态为等待分配,并写入记录到逾期单分配表中。

3.4 分单

3.4.1 用例图

分单业务用例图

3.4.2 用例描述
3.4.2.1 手动分单

对于待分配的列表中的逾期单,主管可以进行手动批量选择逾期单,指定催收人员进行分单。

一般存在于待分配的列表中的逾期单来源于以下情况:

  1. 催收人员被移除,迁移出的催收中的全部订单
  2. 定时任务遗留的未能成功分配的逾期单
  3. TOB的逾期单由主管手动分配(满足电话拨打限制的要求)

PS:主管不选择主动进行手动分单,则次日凌晨会进行自动分单。

3.4.2.1 自动分单

按照约定的分单时间,一般在凌晨进行,定时任务会进行分担任务。分单任务的事件流如下:

  1. 按照催收阶段,分批进行重新计算催收阶段操作。涉及逾期单分配表以及催收工单表。

    1. 催收工单表:一旦满足进阶,会进入逾期单分配表,状态为未分配

      1. 催收工单表中的记录状态由催收中变为等待分配

      2. 逾期分配表中新增一笔记录,状态为未分配

      PS: 逾期单分配表,催收工单表在同一个事务中执行。若失败,回滚。

    2. 逾期单分配表:容时期逾期单未进阶,状态为容时中

      容时期逾期单满足逾期进阶,状态由容时中变为未分配

  2. 抓取业务系统所有今日逾期的贷款单(包括容时期),导入逾期单分配表。

    1. 容时期逾期单状态为容时中
    2. 逾期单进入逾期单分配表,状态为未分配
  3. 根据分单比例和算法对所有的未分配的逾期单进行分单操作,分单成功的逾期单状态设置为已分配状态,并记录到分单记录表中。

    1. 分单过程中采用主动检查逾期单的还款状态:

      1. 若已经还款,则跳过分单。默认写入催收成功的记录或者更新等待分配的状态为催收成功到催收工单表中,催收人员为system。

      2. 若未还款。写入催收中的记录或者更新等待分配的状态为催收中到催收工单表中,催收人员为分单指定的人员。

    PS: 逾期单分配表,催收工单表,分单记录表在同一个事务中执行。若失败,回滚。

    TOB的逾期单不进行自动分配。

3.4.2.2 还款状态同步

催收过程中,客户还款成功,需要实时通知到催收系统,拟采用MQ或者API调用实现。

  1. 催收单的状态更新,贷款状态由Funded变为PaidOff,催收状态由催收中更新为催收成功
  2. 逾期单分配表的记录不记录还款状态,采取分单过程中主动检查还款状态来保证状态一致。
3.4.2.3 历史数据初始化分单以及验证

分单核心逻辑和定时分单保持一致。

拟采用新增接口的方式提供初始化分单能力,抓取历史所有逾期的贷款单,按照规则进行分单。

4.核心数据状态流转图

4.1 表设计

催收分单主要涉及三个表的操作:

  1. 逾期单分配表,中转所有需要分单的逾期单

  2. 催收工单表,催收人员的工作单表,是催收人员查单的数据来源。

    PS:一笔逾期单只会对应一笔催收单。同一时间只会处于一个阶段的一个催收人员。

    建议未来催收结算以此表为准。

  3. 分单记录表,主要用来做分单记录追溯,一笔逾期单整个催收的生命周期可以回放事件来追溯。

4.2 表数据状态流转

表数据状态流转 (1)

4.3 领域类图

相关领域类图以及部分字段,具体参照PRD进行详细设计。 领域类图2.png