카드 정산 업무 규칙과 전환 불변식 추출 (codex-bais-final3-20260713-192718-BAIS-SPRING-ANA-CARD-001)

This commit is contained in:
forge-bot 2026-07-13 10:36:04 +00:00
parent b50dd867f3
commit 7f77947983

View file

@ -0,0 +1,76 @@
package com.bais.card.settlement;
/**
* Settlement Invariants Table Generator
* Markdown 형식의 불변식 생성
*/
public class SettlementInvariantTable {
public static String generateMarkdownTable() {
StringBuilder sb = new StringBuilder();
sb.append("# 카드 정산 불변식 표 (Card Settlement Invariants)\n\n");
sb.append("**범위**: card-settlement-migration\n\n");
sb.append("## 1. 브랜드 정산 불변식\n\n");
sb.append("| ID | 설명 | 수식 | 영향 클래스 | 보존 주의사항 |\n");
sb.append("|---|---|---|---|---|\n");
for (SettlementInvariant.Invariant inv : SettlementInvariant.getAllInvariants()) {
if (inv.getId().startsWith("BRAND_SETTLEMENT") || inv.getId().startsWith("BRAND_COMMISSION")) {
sb.append(String.format("| %s | %s | %s | %s | %s |\n",
inv.getId(), inv.getDescription(), inv.getFormula(),
inv.getAffectedClass(), inv.getPreservationNote()));
}
}
sb.append("\n## 2. IRD 불변식\n\n");
sb.append("| ID | 설명 | 수식 | 영향 클래스 | 보존 주의사항 |\n");
sb.append("|---|---|---|---|---|\n");
for (SettlementInvariant.Invariant inv : SettlementInvariant.getAllInvariants()) {
if (inv.getId().startsWith("IRD")) {
sb.append(String.format("| %s | %s | %s | %s | %s |\n",
inv.getId(), inv.getDescription(), inv.getFormula(),
inv.getAffectedClass(), inv.getPreservationNote()));
}
}
sb.append("\n## 3. 발급사 수수료 불변식\n\n");
sb.append("| ID | 설명 | 수식 | 영향 클래스 | 보존 주의사항 |\n");
sb.append("|---|---|---|---|---|\n");
for (SettlementInvariant.Invariant inv : SettlementInvariant.getAllInvariants()) {
if (inv.getId().startsWith("ISSUER")) {
sb.append(String.format("| %s | %s | %s | %s | %s |\n",
inv.getId(), inv.getDescription(), inv.getFormula(),
inv.getAffectedClass(), inv.getPreservationNote()));
}
}
sb.append("\n## 4. 공통 금액 검증 불변식\n\n");
sb.append("| ID | 설명 | 수식 | 영향 클래스 | 보존 주의사항 |\n");
sb.append("|---|---|---|---|---|\n");
for (SettlementInvariant.Invariant inv : SettlementInvariant.getAllInvariants()) {
if (inv.getId().startsWith("AMOUNT")) {
sb.append(String.format("| %s | %s | %s | %s | %s |\n",
inv.getId(), inv.getDescription(), inv.getFormula(),
inv.getAffectedClass(), inv.getPreservationNote()));
}
}
sb.append("\n## 5. 금액 정밀도 불변식\n\n");
sb.append("| ID | 설명 | 수식 | 영향 클래스 | 보존 주의사항 |\n");
sb.append("|---|---|---|---|---|\n");
for (SettlementInvariant.Invariant inv : SettlementInvariant.getAllInvariants()) {
if (inv.getId().equals("AMOUNT_SCALE") || inv.getId().equals("ROUNDING_MODE")) {
sb.append(String.format("| %s | %s | %s | %s | %s |\n",
inv.getId(), inv.getDescription(), inv.getFormula(),
inv.getAffectedClass(), inv.getPreservationNote()));
}
}
return sb.toString();
}
public static void main(String[] args) {
System.out.println(generateMarkdownTable());
}
}