LabHub

자본시장과 결제 · 청산·결제와 카드 승인 · 실습

T+2 대사와 카드 승인·매입 점검

LabHub 에서 이어서 보기

목표

휴장일 표를 읽어 영업일 기준 T+2 결제일을 다시 계산해 틀린 체결을 찾고, 체결 장부와 결제 장부를 네 방향으로 대사하고, 미결제를 사유별로 갈라 금액까지 내고, 카드 승인과 매입의 차이를 남김없이 설명하고 이중 청구를 찾아낼 수 있게 됩니다.

왜 중요한가

증권의 T+2 와 카드의 승인·매입은 다른 도메인이지만 구조가 같습니다. 사건이 둘로 나뉘어 있고, 그 사이에 상태가 살아 있고, 그 상태를 감시하지 않으면 돈이 샙니다. 이 실습은 그 두 구조를 한 바퀴씩 돌아 봅니다.

이 실습이 강제하는 네 가지는 전부 현장의 규칙입니다. 휴장일은 데이터로 둔다 — 코드에 박아 두면 임시공휴일이 지정될 때마다 배포가 필요하고, 배포가 늦으면 그 주에 사고가 납니다. 대사는 건 단위 양방향으로 한다 — 합계만 비교하면 두 방향의 차이가 서로를 지웁니다. 미결제는 사유로 가른다 — 합쳐 세면 담당 부서가 정해지지 않아 아무도 처리하지 않습니다. 이중 청구는 멱등키로 찾는다 — 승인 번호로는 영원히 나오지 않습니다.

이번 사건은 이렇습니다. 정산팀이 9월 둘째 주 미결제 잔고가 평소의 세 배라고 알려 왔고, 같은 주에 특정 가맹점의 이중 청구 민원이 몰렸습니다. 기준일은 2026-09-16 입니다.

영업일 계산 규칙은 이렇습니다. 체결일 다음 날부터 하루씩 나아가면서 토요일·일요일이 아니고 holidays 표에 없는 날을 영업일로 세고, 두 번째 영업일이 결제일입니다. 휴장일은 반드시 holidays 표에서 읽으세요 — 코드에 박으면 이 실습의 요점을 그대로 놓칩니다.

단계

1. /root/cap/settle 을 만들고 정답지의 생성기를 그대로 돌려 /root/cap/settle/settle.db, /root/cap/settle/auth.jsonl, /root/cap/settle/capture.jsonl 을 만드세요.
2. holidays 표를 읽어 영업일 기준 T+2 를 다시 계산하세요. /root/cap/settle/calendar.txttrades=, holidays=, bad_settle_date=, settle_on_nonbusiness= 를, /root/cap/settle/baddate.csvtrade_id,trade_date,recorded_settle_date,correct_settle_date 를 적습니다.
3. tradessettlements 를 대사하세요. /root/cap/settle/recon.txttrades=, settlements=, amount_matched=, amount_mismatch=, amount_mismatch_total=, missing_settlement=, orphan_settlement=, orphan_amount= 여덟 줄을, /root/cap/settle/amountdiff.csvtrade_id,trade_amount,settled_amount,diff 를 적습니다.
4. 결제일이 2026-09-16 전인데 결제가 끝나지 않은 체결을 찾아 /root/cap/settle/fails.csvtrade_id,settle_date,amount,settlement_status 로, /root/cap/settle/fails.txtfail_count=, fail_amount=, no_record=, pending=, failed= 로 적으세요. 결제 기록이 아예 없으면 상태를 none 으로 적습니다.
5. /root/cap/settle/auth.txt 에 여덟 줄을 적으세요. auths=, captures=, approved=, voided=, declined=, full_capture=, partial_capture=, no_capture= 입니다.
6. /root/cap/settle/orphan.csv 에 매입이 없는 approved 승인을 auth_id,merchant,amount,ts 로 적고, /root/cap/settle/orphan.txtno_capture_count=, no_capture_amount=, partial_count=, partial_remaining_amount= 를 적으세요.
7. idempotency_key 로 묶어 승인이 두 건 이상인 키를 찾아 /root/cap/settle/dupcharge.csvidempotency_key,auth_ids,charged_amount 로 적고, /root/cap/settle/dupcharge.txtdup_keys=, double_charged_amount= 를 적으세요. auth_ids 는 파이프(|)로 잇습니다.
8. /root/cap/settle/report.md 에 보고서를 쓰세요. ## 무슨 일이 있었나, ## 결제일 계산, ## 대사 결과, ## 미결제, ## 카드 승인과 매입, ## 무엇을 고쳐야 하나 여섯 절이 필요합니다.

참고

단계 8개

  1. 체결·결제 원장과 카드 로그 만들기
  2. 영업일 기준 T+2 로 결제일 검증하기
  3. 체결 장부와 결제 장부 양방향 대사하기
  4. 미결제를 사유별로 가르기
  5. 승인과 매입의 차이를 사유별로 설명하기
  6. 매입 없는 승인과 부분 매입 잔액 내기
  7. 멱등키로 이중 청구 찾기
  8. 결제 대사 보고서 쓰기