-
[4] 대출금 상환 프로그램 설계프로젝트/대출금 상환 프로젝트 2026. 5. 4. 18:35
1. 대출금 상환 이란 ?
대출이 실행되면, 고객은 약정된 일정에 따라 매달 원금과 이자를 함께 갚아나가게 됩니다. 이것이 바로 대출금 상환입니다.
하지만 상환이 항상 계획대로 이루어지지는 않습니다. 고객의 사정에 따라 다양한 상황이 발생할 수 있습니다.
- 납부일이 지났는데 갚지 못하는 연체가 발생하기도 하고
- 반대로 남은 대출금을 한꺼번에 갚아버리는 중도 상환을 하기도 하고
- 연체가 길어지면 남은 대출금 전액을 즉시 상환해야 하는 기한이익 상실 상태에 이르기도 합니다
이처럼 대출 상환은 단순히 "매달 돈을 갚는다" 는 개념을 넘어, 다양한 상황에 따라 유연하게 대응해야 하는 복잡한 도메인입니다.
전체적인 프로젝트 구조는 아래와 같습니다.

상환 프로젝트 구조
2. 핵심 테이블
대출이 실행되면 시스템에는 크게 두 가지 테이블이 생성됩니다.
<LoanAccount (대출 계좌)>
대출 생애 주기동안 계속 변하는 정보를 저장합니다.
이 대출이 현재 어떤 상태인지 , 전반적인 상태를 관리 합니다.

<RepaymentSchedule (상환 스케줄)>
대출 실행 시 , 회차 별로 생성되는 상환 계획표입니다.
예를들어 24개월 대출이라면 1회차부터 24회차까지 총 24개의 레코드가 생성됩니다.

3. 은행 일일 마감 작업 - 상태 전이
대출 상환 시스템에서 가장 핵심이 되는 작업은 상태 전이입니다.
매일 밤 날짜가 넘어갈 때, 시스템은 2가지의 상태를 갱신 합니다.
- RepaymentSchedule(납부 예정일 , 현재 상환금 , 상태) , LoanAccount(상태) 체크 -> RepaymentSchedule(상태) 갱신
- 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일 전이 되면 PLANNED → PENDING 으로 전환됩니다.
이 시점 부터 고객은 납부를 할 수 있으며 , 해당 회차에 적용될 금리가 이 시점에 확정됩니다.
이는 변동 금리 상품을 고려한 것 입니다.
납부 예정일이 지나도 납부가 이루어지지 않으면, 대출 계좌의 상태에 따라 OVERDUE → CRITICAL_OVERDUE → ACCELERATED 순으로 심화됩니다.
이때 각 전이 조건에는 날짜뿐만 아니라 현재 LoanAccount의 상태가 함께 고려된다는 점이 중요합니다.
예를 들어 OVERDUE 에서 CRITICAL_OVERDUE 로 넘어가려면 단순히 1개월이 지난 것만으로는 부족하고, LoanAccount가 DELINQUENT 상태여야 합니다.
마지막으로 고객이 실제로 납부를 완료하여 해당 회차의 납부 총액(totalAmount)이 0이 되면, COMPLETE 로 전환됩니다.

RepaymentSchedule 의 가능한 상태 전이를 나타내면 , 위와 같습니다.
<2. LoanAccount 상태 전이> - 여기서 부터 작성하기


4. 은행 일일 마감 작업 - 연체금 갱신
5. 고객 - 상환하기
6. 로그 기록 - LoanStatusHistory , RepaymentTransaction
'프로젝트 > 대출금 상환 프로젝트' 카테고리의 다른 글
은행 아키텍처 알아보기 (0) 2026.06.21 [6] 데이터베이스 물리적 모델링 (0) 2026.06.14 [5] 데이터베이스 논리적 모델링2 - 정규화 (0) 2026.06.06 [4] 데이터베이스 논리적 모델링1 - 테이블 설계 (0) 2026.06.03 [3] 데이터베이스 개념적 모델링 (0) 2026.05.31 [2] 가계 대출 상품 설명서 분석 - 2 (0) 2026.05.17 [2] 가계 대출 상품 설명서 분석 - MVP 기능 (0) 2026.05.17 [1] 프로젝트 개요 (0) 2026.05.02