From 7f779479838431216b7842b85417da5955038017 Mon Sep 17 00:00:00 2001 From: forge-bot Date: Mon, 13 Jul 2026 10:36:04 +0000 Subject: [PATCH] =?UTF-8?q?=EC=B9=B4=EB=93=9C=20=EC=A0=95=EC=82=B0=20?= =?UTF-8?q?=EC=97=85=EB=AC=B4=20=EA=B7=9C=EC=B9=99=EA=B3=BC=20=EC=A0=84?= =?UTF-8?q?=ED=99=98=20=EB=B6=88=EB=B3=80=EC=8B=9D=20=EC=B6=94=EC=B6=9C=20?= =?UTF-8?q?(codex-bais-final3-20260713-192718-BAIS-SPRING-ANA-CARD-001)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../settlement/SettlementInvariantTable.java | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 card-settlement-migration/src/main/java/com/bais/card/settlement/SettlementInvariantTable.java diff --git a/card-settlement-migration/src/main/java/com/bais/card/settlement/SettlementInvariantTable.java b/card-settlement-migration/src/main/java/com/bais/card/settlement/SettlementInvariantTable.java new file mode 100644 index 0000000..3da7c20 --- /dev/null +++ b/card-settlement-migration/src/main/java/com/bais/card/settlement/SettlementInvariantTable.java @@ -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()); + } +}