diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 9e61c530..be6e64a6 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -12,16 +12,17 @@ jobs: runs-on: ubuntu-latest steps: - - name: Install Node.js (Prerequisite for Github Actions) + - name: Prepare Environment (Install Node.js & Git) run: | - if ! command -v node &> /dev/null; then - echo "Node.js not found. Installing Node.js 20..." - curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - - sudo apt-get install -y nodejs + if command -v apt-get &> /dev/null; then + apt-get update + apt-get install -y nodejs git + elif command -v apk &> /dev/null; then + apk add --no-cache nodejs git fi - name: Checkout Code - uses: actions/checkout@v4 + uses: actions/checkout@v3 - name: Sync Code to Host Volume run: | diff --git a/dap-tool-core/src/test/java/io/shinhanlife/dap/lib/validation/McpToolNameValidatorTest.java b/dap-tool-core/src/test/java/io/shinhanlife/dap/lib/validation/McpToolNameValidatorTest.java index 32cc6052..60089dce 100644 --- a/dap-tool-core/src/test/java/io/shinhanlife/dap/lib/validation/McpToolNameValidatorTest.java +++ b/dap-tool-core/src/test/java/io/shinhanlife/dap/lib/validation/McpToolNameValidatorTest.java @@ -1,6 +1,7 @@ package io.shinhanlife.dap.lib.validation; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -46,6 +47,24 @@ class McpToolNameValidatorTest { assertDoesNotThrow(() -> McpToolNameValidator.assertUnique(findProjectRoot())); } + @Test + void usesDomainSpecificNamesForCustomerBillingAndBondTools() throws IOException { + Path root = findProjectRoot(); + + assertToolName(root, "dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/CustomerInfoUseCase.java", + "customer_detail", "detail"); + assertToolName(root, "dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/BillingProcessUseCase.java", + "billing_process", "process"); + assertToolName(root, "dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/BondIssueUseCase.java", + "bond_issue", "issue"); + } + + private void assertToolName(Path root, String relativePath, String expectedName, String legacyName) throws IOException { + String source = Files.readString(root.resolve(relativePath)); + assertTrue(source.contains("name = \"" + expectedName + "\"")); + assertFalse(source.contains("name = \"" + legacyName + "\"")); + } + private void writeToolSource(String moduleName, String fileName, String className, String toolName) throws IOException { Path source = temporaryRoot.resolve(moduleName).resolve("src/main/java/example").resolve(fileName); Files.createDirectories(source.getParent()); diff --git a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/BillingProcessUseCase.java b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/BillingProcessUseCase.java index a6cf7fe9..d9d88ab9 100644 --- a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/BillingProcessUseCase.java +++ b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/BillingProcessUseCase.java @@ -11,6 +11,6 @@ import io.shinhanlife.dap.mcc.biz.cmm.dto.*; public interface BillingProcessUseCase { Object getStatus(BillingStatusRequest req); - @McpFunction(register = false, displayName = "process 툴", name = "process", description = "청구 처리", prompt = "현재 접수된 청구건에 대한 심사 처리를 진행해.", mappingId = "BILL_002") + @McpFunction(register = false, displayName = "process 툴", name = "billing_process", description = "청구 처리", prompt = "현재 접수된 청구건에 대한 심사 처리를 진행해.", mappingId = "BILL_002") Object processBilling(BillingProcessRequest data); } diff --git a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/BondIssueUseCase.java b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/BondIssueUseCase.java index 2e90fb75..11a08d56 100644 --- a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/BondIssueUseCase.java +++ b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/BondIssueUseCase.java @@ -11,6 +11,6 @@ import io.shinhanlife.dap.mcc.biz.cmm.dto.*; public interface BondIssueUseCase { Object check(BondCheckRequest req); - @McpFunction(displayName = "issue 툴", name = "issue", register = false, description = "증권 발행 테스트1", prompt = "디지털 증권 발행 프로세스를 실행해.", mappingId = "BOND_002") + @McpFunction(displayName = "issue 툴", name = "bond_issue", register = false, description = "증권 발행 테스트1", prompt = "디지털 증권 발행 프로세스를 실행해.", mappingId = "BOND_002") Object issue(BondIssueRequest data); } diff --git a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/CustomerInfoUseCase.java b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/CustomerInfoUseCase.java index 83e129f8..17a1ba08 100644 --- a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/CustomerInfoUseCase.java +++ b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/CustomerInfoUseCase.java @@ -11,6 +11,6 @@ import io.shinhanlife.dap.mcc.biz.cmm.dto.*; public interface CustomerInfoUseCase { Object getGrade(CustomerGradeRequest req); - @McpFunction(register = false, displayName = "detail 툴", name = "detail", description = "고객상세 정보 조회", prompt = "이 고객의 상세 기본정보(주소, 연락처 등)를 알려줘.", mappingId = "CRM_002") + @McpFunction(register = false, displayName = "detail 툴", name = "customer_detail", description = "고객상세 정보 조회", prompt = "이 고객의 상세 기본정보(주소, 연락처 등)를 알려줘.", mappingId = "CRM_002") Object getDetail(CustomerDetailRequest data); }