ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [4] 대출금 상환 프로그램 설계
    프로젝트/대출금 상환 프로젝트 2026. 5. 4. 18:35

    1. 대출금 상환 이란 ? 

     

    대출이 실행되면, 고객은 약정된 일정에 따라 매달 원금과 이자를 함께 갚아나가게 됩니다. 이것이 바로 대출금 상환입니다.

    하지만 상환이 항상 계획대로 이루어지지는 않습니다. 고객의 사정에 따라 다양한 상황이 발생할 수 있습니다.

    • 납부일이 지났는데 갚지 못하는 연체가 발생하기도 하고
    • 반대로 남은 대출금을 한꺼번에 갚아버리는 중도 상환을 하기도 하고
    • 연체가 길어지면 남은 대출금 전액을 즉시 상환해야 하는 기한이익 상실 상태에 이르기도 합니다

    이처럼 대출 상환은 단순히 "매달 돈을 갚는다" 는 개념을 넘어, 다양한 상황에 따라 유연하게 대응해야 하는 복잡한 도메인입니다.

     

    전체적인 프로젝트 구조는 아래와 같습니다. 

    상환 프로젝트 구조


    2. 핵심 테이블

     

    대출이 실행되면 시스템에는 크게 두 가지 테이블이 생성됩니다.

     

    <LoanAccount (대출 계좌)>

     

    대출 생애 주기동안 계속 변하는 정보를 저장합니다. 

    이 대출이 현재 어떤 상태인지 , 전반적인 상태를 관리 합니다. 

     

     

    <RepaymentSchedule (상환 스케줄)>

     

    대출 실행 시 , 회차 별로 생성되는 상환 계획표입니다. 

    예를들어 24개월 대출이라면 1회차부터 24회차까지 총 24개의 레코드가 생성됩니다. 

     

     

     


    3. 은행 일일 마감 작업 - 상태 전이

     

    대출 상환 시스템에서 가장 핵심이 되는 작업은 상태 전이입니다. 

     

    매일 밤 날짜가 넘어갈 때, 시스템은 2가지의 상태를 갱신 합니다. 

     

    1. RepaymentSchedule(납부 예정일 , 현재 상환금 , 상태) , LoanAccount(상태) 체크 -> RepaymentSchedule(상태) 갱신
    2. RepaymentSchedule(상태) 체크 -> LoanAccount(상태) 갱신 

     

    즉 , 최종적으로는 LoanAccount 의 상태가 갱신 됩니다.

    LoanAccount 의 상태가 중요한 이유는 , 이후의 모든 처리가 여기서 확정된 상태를 기준으로 동작하기 때문입니다.

    • 연체 이자를 어떻게 , 얼마나 누적할 지
    • 고객이 상환 요청했을 때 , 어떤 방식으로 처리 할지  

    모두 현재 상태에 따라 달라집니다. 

     

    그렇다면 , 각각의 상태와 어떤 조건에서 전이가 이루어지는 지 설명 하겠습니다. 

     

    <RepaymentSchedule 상태> 

     

    매달 내야 하는 상환금 스케줄의 상태 입니다.

     

    상환 스케줄의 상태는 크게 정상 계열과 연체 계열로 나뉩니다. 

     

    정상 계열은 말 그대로 문제없이 진행 중인 회차들 입니다.

    아직 납부일이 한참 남은 회차는 PLANNED 이며 , 납부 5일전이 되면 PENDING 으로 바뀌며 상환을 준비합니다.

    그리고 고객이 정상적으로 납부를 완료하면 COMPLETE 가 됩니다.

     

    연체 계열은 납부일이 지나도 갚지 않았을 때 시작 됩니다.

    처음에는 OVERDUE 가 되고, 이 상태가 1개월 이상 지속되면 CRITICAL_OVERDUE 로 심화됩니다.

     

    ACCELERATED , MERGED 예시

     

    연체가 2개월 이상 지속되면 남은 모든 회차는 하나의 ACCELERATED 회차로 통합되고 통합된 회차들은 MERGED 로 상태가 전이 됩니다. 

     

    <LoanAccount 상태> 

     

    현재 대출 계좌의 상태 입니다. 

     

    중요한 점은 이 상태가 RepaymentSchedule의 구성을 기반으로 결정된다는 것입니다.

     

    연체 회차가 없으면 NORMAL , OVERDUE 회차가 1개 생기면 DELINQUENT , 연체가 더 심화되어 CRITICAL_OVERDUE 까지 발생하면 ACCELERATION_NOTICE 로 넘어갑니다. 결국 기한이익이 상실되어 모든 잔여 회차가 하나의 ACCELERATED 로 통합되면 ACCELERATION 이 되고, 대출금을 전부 상환하면 TERMINATED 로 마무리됩니다.

     

     

    <상태 전이>

     

     

    이제 상태 전이에 대해 설명하겠습니다. 

    상태 전이는 크게 RepaymentSchedule 상태 전이 , LoanAccount 상태 전이로 이루어 집니다.

    각각이 어떤 조건에서 어떻게 상태 전이가 되는지는 아래에서 자세히 설명하겠습니다. 

     

    중요한 점은 상태 전이는 반드시 RepaymentSchedule 의 상태 전이가 일어난 이후 , LoanAccount 상태 전이가 일어나야 한다는 것 입니다. 

     

    즉 , RS(RepaymentSchedule) 상태가 확정되지 않은 상태에서 LS(LoanAccount)를 갱신하면 잘못된 상태 전이로 이어집니다. 

     

     

    <1. RepaymentSchedule 상태 전이>

     

     

    가장 먼저 , RepaymentSchedule 상태 전이 입니다. 

     

    각 회차의 상환 스케줄은 예정일 , 승인 여부 , 금액과 대출 계좌의 상태를 기준으로 다음과 같이 전이됩니다.

     

    납부 예정일 5일 전이 되면 PLANNEDPENDING 으로 전환됩니다.

    이 시점 부터 고객은 납부를 할 수 있으며 , 해당 회차에 적용될 금리가 이 시점에 확정됩니다.

    이는 변동 금리 상품을 고려한 것 입니다. 

     

    납부 예정일이 지나도 납부가 이루어지지 않으면, 대출 계좌의 상태에 따라 OVERDUECRITICAL_OVERDUEACCELERATED 순으로 심화됩니다.

    이때 각 전이 조건에는 날짜뿐만 아니라 현재 LoanAccount의 상태가 함께 고려된다는 점이 중요합니다.

     

    예를 들어 OVERDUE 에서 CRITICAL_OVERDUE 로 넘어가려면 단순히 1개월이 지난 것만으로는 부족하고, LoanAccount가 DELINQUENT 상태여야 합니다.

     

    마지막으로 고객이 실제로 납부를 완료하여 해당 회차의 납부 총액(totalAmount)이 0이 되면, COMPLETE 로 전환됩니다.

     

     

    RepaymentSchedule 의 가능한 상태 전이를 나타내면 , 위와 같습니다. 

     

     

    <2. LoanAccount 상태 전이> - 여기서 부터 작성하기 

     

     


     

    4. 은행 일일 마감 작업 - 연체금 갱신 

     

     

     

     

     

     


    5. 고객 - 상환하기 

     

     

     

     

     

     


    6. 로그 기록 - LoanStatusHistory , RepaymentTransaction

     

     

     

     

     

     

Designed by Tistory.