feat: 1200%룰 이연 분급 도래월 지급(PayInstallmentStep) + 코드베이스 신입교육 주석
PayInstallmentStep(Step 4.5): 1200%룰로 이연된 분급(installment_plan SCHEDULED)을 도래월(settle_month=정산월)에 recruit_ledger로 편입해 실제 지급. 이전엔 이연만 되고 도래월 지급 절차가 없어 차액이 영구 미지급되던 갭을 메움. - BatchConfig job flow에 step4b(calcRecruit→payInstallment→calcMaintain) 등록 - InstallmentPlanMapper.resetPaidToScheduledByMonth(+XML)로 재실행 멱등 (진입 시 PAID→SCHEDULED 역산, Step4 deleteBySettleMonth가 원장 정리) - RecruitLedgerMapper insert에 reconcile_status 컬럼, SettlementContext.installmentPaidCount - 단위테스트 3건(정상지급/멱등/계약미존재) GREEN 신입교육 주석: 컨트롤러/서비스/공통/프론트 전반에 도메인·코드 설명 주석 추가 (동작 변경 없음 — 빌드/테스트/타입체크 전부 GREEN으로 무회귀 확인). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,12 @@
|
||||
// ============================================================================
|
||||
// 보험계약 API — 백엔드 /api/contracts (ContractController)
|
||||
// 계약(contract): 고객이 가입한 보험증권 1건. 모든 수수료 계산의 출발점.
|
||||
// - premium(보험료): 계약자가 내는 보험료. payCycle(납입주기): 월납/연납 등.
|
||||
// - policyNo(증권번호): 계약 식별 번호. contractorName(계약자)/insuredName(피보험자).
|
||||
// ============================================================================
|
||||
import api, { PageResponse, unwrap } from './request';
|
||||
|
||||
// 계약 조회 응답. 설계사/상품/보험사/보험료/상태 등 계약 요약.
|
||||
export interface ContractResp {
|
||||
contractId: number;
|
||||
agentId: number;
|
||||
@@ -35,6 +42,7 @@ export interface ContractSearchParam {
|
||||
endDate?: string;
|
||||
}
|
||||
|
||||
// 계약 등록/수정 요청. payPeriod(납입기간)/coveragePeriod(보장기간) 등 포함.
|
||||
export interface ContractSaveReq {
|
||||
agentId: number;
|
||||
productId: number;
|
||||
@@ -51,9 +59,13 @@ export interface ContractSaveReq {
|
||||
}
|
||||
|
||||
export const contractApi = {
|
||||
// 계약 목록 — GET /api/contracts
|
||||
list: (p: ContractSearchParam) =>
|
||||
unwrap<PageResponse<ContractResp>>(api.get('/api/contracts', { params: p })),
|
||||
// 계약 상세 — GET /api/contracts/{id}
|
||||
detail: (id: number) => unwrap<ContractResp>(api.get(`/api/contracts/${id}`)),
|
||||
// 계약 등록(생성된 id 반환) — POST /api/contracts
|
||||
create: (req: ContractSaveReq) => unwrap<number>(api.post('/api/contracts', req)),
|
||||
// 계약 수정 — PUT /api/contracts/{id}
|
||||
update: (id: number, req: ContractSaveReq) => unwrap<void>(api.put(`/api/contracts/${id}`, req)),
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user