From 58960af817c4e2e6e8717b1175e36725e154b1bb Mon Sep 17 00:00:00 2001 From: jade Date: Thu, 13 Aug 2026 23:47:05 +0900 Subject: [PATCH] feat: add iam and pct mock tools --- .../mcc/biz/iam/dto/SystemStatusRequest.java | 10 +++ .../mcc/biz/iam/dto/SystemStatusResponse.java | 11 +++ .../iam/usecase/AccountInquiryUseCase.java | 32 ++++++++ .../usecase/AuthenticationInquiryUseCase.java | 32 ++++++++ .../usecase/AuthorizationInquiryUseCase.java | 32 ++++++++ .../biz/iam/usecase/SystemStatusUseCase.java | 29 +++++++ .../impl/AccountInquiryUseCaseImpl.java | 48 +++++++++++ .../AuthenticationInquiryUseCaseImpl.java | 48 +++++++++++ .../impl/AuthorizationInquiryUseCaseImpl.java | 48 +++++++++++ .../usecase/impl/SystemStatusUseCaseImpl.java | 26 ++++++ .../mcc/biz/pct/dto/SystemNoticeRequest.java | 10 +++ .../mcc/biz/pct/dto/SystemNoticeResponse.java | 16 ++++ .../usecase/MaintenanceInquiryUseCase.java | 32 ++++++++ .../pct/usecase/ReleaseInquiryUseCase.java | 32 ++++++++ .../biz/pct/usecase/SystemNoticeUseCase.java | 32 ++++++++ .../impl/MaintenanceInquiryUseCaseImpl.java | 49 +++++++++++ .../impl/ReleaseInquiryUseCaseImpl.java | 49 +++++++++++ .../usecase/impl/SystemNoticeUseCaseImpl.java | 27 ++++++ .../mock-responses/iam_access_policy.json | 4 + .../iam_access_token_status.json | 4 + .../mock-responses/iam_account_list.json | 4 + .../iam_account_lock_status.json | 4 + .../iam_account_password_expiry.json | 4 + .../mock-responses/iam_account_profile.json | 4 + .../mock-responses/iam_account_role.json | 4 + .../mock-responses/iam_account_status.json | 4 + .../iam_approval_authority.json | 4 + .../iam_authentication_method.json | 4 + .../mock-responses/iam_delegation_status.json | 4 + .../iam_deployment_version.json | 4 + .../mock-responses/iam_environment_info.json | 4 + .../mock-responses/iam_login_history.json | 4 + .../mock-responses/iam_menu_access.json | 4 + .../mock-responses/iam_mfa_status.json | 4 + .../mock-responses/iam_permission_list.json | 4 + .../mock-responses/iam_resource_access.json | 4 + .../mock-responses/iam_role_list.json | 4 + .../mock-responses/iam_service_health.json | 4 + .../mock-responses/iam_session_list.json | 4 + .../mock-responses/iam_session_status.json | 4 + .../mock-responses/iam_system_status.json | 4 + .../iam_trusted_device_list.json | 4 + .../mock-responses/pct_alert_list.json | 4 + .../pct_maintenance_contact.json | 4 + .../pct_maintenance_history.json | 4 + .../pct_maintenance_result.json | 4 + .../pct_maintenance_schedule.json | 4 + .../mock-responses/pct_maintenance_scope.json | 4 + .../pct_maintenance_status.json | 4 + .../mock-responses/pct_notice_category.json | 4 + .../mock-responses/pct_notice_detail.json | 4 + .../mock-responses/pct_notice_list.json | 4 + .../mock-responses/pct_notice_recent.json | 1 + .../mock-responses/pct_notice_search.json | 1 + .../mock-responses/pct_release_history.json | 4 + .../mock-responses/pct_release_notice.json | 4 + .../mock-responses/pct_release_schedule.json | 4 + .../mock-responses/pct_release_scope.json | 4 + .../mock-responses/pct_release_status.json | 4 + .../mock-responses/pct_release_version.json | 4 + .../iam/iam_access_policy.yml | 22 +++++ .../iam/iam_access_token_status.yml | 22 +++++ .../tool-definitions/iam/iam_account_list.yml | 22 +++++ .../iam/iam_account_lock_status.yml | 22 +++++ .../iam/iam_account_password_expiry.yml | 22 +++++ .../iam/iam_account_profile.yml | 22 +++++ .../tool-definitions/iam/iam_account_role.yml | 22 +++++ .../iam/iam_account_status.yml | 22 +++++ .../iam/iam_approval_authority.yml | 22 +++++ .../iam/iam_authentication_method.yml | 22 +++++ .../iam/iam_delegation_status.yml | 22 +++++ .../iam/iam_deployment_version.yml | 14 ++++ .../iam/iam_environment_info.yml | 14 ++++ .../iam/iam_login_history.yml | 22 +++++ .../tool-definitions/iam/iam_menu_access.yml | 22 +++++ .../tool-definitions/iam/iam_mfa_status.yml | 22 +++++ .../iam/iam_permission_list.yml | 22 +++++ .../iam/iam_resource_access.yml | 22 +++++ .../tool-definitions/iam/iam_role_list.yml | 22 +++++ .../iam/iam_service_health.yml | 14 ++++ .../tool-definitions/iam/iam_session_list.yml | 22 +++++ .../iam/iam_session_status.yml | 22 +++++ .../iam/iam_system_status.yml | 14 ++++ .../iam/iam_trusted_device_list.yml | 22 +++++ .../tool-definitions/pct/pct_alert_list.yml | 14 ++++ .../pct/pct_maintenance_contact.yml | 22 +++++ .../pct/pct_maintenance_history.yml | 22 +++++ .../pct/pct_maintenance_result.yml | 22 +++++ .../pct/pct_maintenance_schedule.yml | 14 ++++ .../pct/pct_maintenance_scope.yml | 22 +++++ .../pct/pct_maintenance_status.yml | 22 +++++ .../pct/pct_notice_category.yml | 22 +++++ .../pct/pct_notice_detail.yml | 22 +++++ .../tool-definitions/pct/pct_notice_list.yml | 14 ++++ .../pct/pct_notice_recent.yml | 14 ++++ .../pct/pct_notice_search.yml | 14 ++++ .../pct/pct_release_history.yml | 22 +++++ .../pct/pct_release_notice.yml | 14 ++++ .../pct/pct_release_schedule.yml | 22 +++++ .../pct/pct_release_scope.yml | 22 +++++ .../pct/pct_release_status.yml | 22 +++++ .../pct/pct_release_version.yml | 22 +++++ .../impl/SystemStatusUseCaseImplTest.java | 22 +++++ .../impl/SystemNoticeUseCaseImplTest.java | 21 +++++ .../mcc/sys/SystemMockToolResourcesTest.java | 82 +++++++++++++++++++ ...08-13-dap-was-sys-executable-mock-tools.md | 58 +++++++++++++ .../2026-08-13-dap-was-sys-mock-tools.md | 56 +++++++++++++ 107 files changed, 1808 insertions(+) create mode 100644 dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/dto/SystemStatusRequest.java create mode 100644 dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/dto/SystemStatusResponse.java create mode 100644 dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/AccountInquiryUseCase.java create mode 100644 dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/AuthenticationInquiryUseCase.java create mode 100644 dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/AuthorizationInquiryUseCase.java create mode 100644 dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/SystemStatusUseCase.java create mode 100644 dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/impl/AccountInquiryUseCaseImpl.java create mode 100644 dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/impl/AuthenticationInquiryUseCaseImpl.java create mode 100644 dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/impl/AuthorizationInquiryUseCaseImpl.java create mode 100644 dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/impl/SystemStatusUseCaseImpl.java create mode 100644 dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/dto/SystemNoticeRequest.java create mode 100644 dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/dto/SystemNoticeResponse.java create mode 100644 dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/usecase/MaintenanceInquiryUseCase.java create mode 100644 dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/usecase/ReleaseInquiryUseCase.java create mode 100644 dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/usecase/SystemNoticeUseCase.java create mode 100644 dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/usecase/impl/MaintenanceInquiryUseCaseImpl.java create mode 100644 dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/usecase/impl/ReleaseInquiryUseCaseImpl.java create mode 100644 dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/usecase/impl/SystemNoticeUseCaseImpl.java create mode 100644 dap-was-sys/src/main/resources/mock-responses/iam_access_policy.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/iam_access_token_status.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/iam_account_list.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/iam_account_lock_status.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/iam_account_password_expiry.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/iam_account_profile.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/iam_account_role.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/iam_account_status.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/iam_approval_authority.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/iam_authentication_method.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/iam_delegation_status.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/iam_deployment_version.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/iam_environment_info.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/iam_login_history.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/iam_menu_access.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/iam_mfa_status.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/iam_permission_list.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/iam_resource_access.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/iam_role_list.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/iam_service_health.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/iam_session_list.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/iam_session_status.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/iam_system_status.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/iam_trusted_device_list.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/pct_alert_list.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/pct_maintenance_contact.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/pct_maintenance_history.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/pct_maintenance_result.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/pct_maintenance_schedule.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/pct_maintenance_scope.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/pct_maintenance_status.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/pct_notice_category.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/pct_notice_detail.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/pct_notice_list.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/pct_notice_recent.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/pct_notice_search.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/pct_release_history.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/pct_release_notice.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/pct_release_schedule.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/pct_release_scope.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/pct_release_status.json create mode 100644 dap-was-sys/src/main/resources/mock-responses/pct_release_version.json create mode 100644 dap-was-sys/src/main/resources/tool-definitions/iam/iam_access_policy.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/iam/iam_access_token_status.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/iam/iam_account_list.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/iam/iam_account_lock_status.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/iam/iam_account_password_expiry.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/iam/iam_account_profile.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/iam/iam_account_role.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/iam/iam_account_status.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/iam/iam_approval_authority.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/iam/iam_authentication_method.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/iam/iam_delegation_status.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/iam/iam_deployment_version.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/iam/iam_environment_info.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/iam/iam_login_history.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/iam/iam_menu_access.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/iam/iam_mfa_status.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/iam/iam_permission_list.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/iam/iam_resource_access.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/iam/iam_role_list.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/iam/iam_service_health.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/iam/iam_session_list.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/iam/iam_session_status.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/iam/iam_system_status.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/iam/iam_trusted_device_list.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/pct/pct_alert_list.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/pct/pct_maintenance_contact.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/pct/pct_maintenance_history.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/pct/pct_maintenance_result.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/pct/pct_maintenance_schedule.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/pct/pct_maintenance_scope.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/pct/pct_maintenance_status.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/pct/pct_notice_category.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/pct/pct_notice_detail.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/pct/pct_notice_list.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/pct/pct_notice_recent.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/pct/pct_notice_search.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/pct/pct_release_history.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/pct/pct_release_notice.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/pct/pct_release_schedule.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/pct/pct_release_scope.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/pct/pct_release_status.yml create mode 100644 dap-was-sys/src/main/resources/tool-definitions/pct/pct_release_version.yml create mode 100644 dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/biz/iam/usecase/impl/SystemStatusUseCaseImplTest.java create mode 100644 dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/biz/pct/usecase/impl/SystemNoticeUseCaseImplTest.java create mode 100644 dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/sys/SystemMockToolResourcesTest.java create mode 100644 docs/superpowers/plans/2026-08-13-dap-was-sys-executable-mock-tools.md create mode 100644 docs/superpowers/plans/2026-08-13-dap-was-sys-mock-tools.md diff --git a/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/dto/SystemStatusRequest.java b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/dto/SystemStatusRequest.java new file mode 100644 index 00000000..85978927 --- /dev/null +++ b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/dto/SystemStatusRequest.java @@ -0,0 +1,10 @@ +package io.shinhanlife.dap.mcc.biz.iam.dto; + +import lombok.Data; +import org.springaicommunity.mcp.annotation.McpToolParam; + +@Data +public class SystemStatusRequest { + @McpToolParam(description = "조회할 환경명", required = false) + private String environment; +} diff --git a/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/dto/SystemStatusResponse.java b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/dto/SystemStatusResponse.java new file mode 100644 index 00000000..055c621a --- /dev/null +++ b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/dto/SystemStatusResponse.java @@ -0,0 +1,11 @@ +package io.shinhanlife.dap.mcc.biz.iam.dto; + +import lombok.Data; + +@Data +public class SystemStatusResponse { + private String systemName; + private String environment; + private String status; + private String checkedAt; +} diff --git a/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/AccountInquiryUseCase.java b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/AccountInquiryUseCase.java new file mode 100644 index 00000000..18b8b26f --- /dev/null +++ b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/AccountInquiryUseCase.java @@ -0,0 +1,32 @@ +package io.shinhanlife.dap.mcc.biz.iam.usecase; + +import io.shinhanlife.dap.lib.annotation.GrowToolHint; +import io.shinhanlife.dap.mcc.biz.iam.dto.SystemStatusRequest; +import io.shinhanlife.dap.mcc.biz.iam.dto.SystemStatusResponse; +import org.springaicommunity.mcp.annotation.McpTool; + +public interface AccountInquiryUseCase { + @McpTool(name = "iam_account_profile", title = "계정 프로필 조회", description = "모의 계정 프로필 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_ACCOUNT_PROFILE") + SystemStatusResponse getPrimary(SystemStatusRequest request); + + @McpTool(name = "iam_account_list", title = "계정 목록 조회", description = "모의 계정 목록 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_ACCOUNT_LIST") + SystemStatusResponse getList(SystemStatusRequest request); + + @McpTool(name = "iam_account_status", title = "계정 상태 조회", description = "모의 계정 상태 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_ACCOUNT_STATUS") + SystemStatusResponse getStatus(SystemStatusRequest request); + + @McpTool(name = "iam_account_role", title = "계정 역할 조회", description = "모의 계정 역할 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_ACCOUNT_ROLE") + SystemStatusResponse getDetail(SystemStatusRequest request); + + @McpTool(name = "iam_account_lock_status", title = "계정 잠금 상태 조회", description = "모의 계정 잠금 상태 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_ACCOUNT_LOCK_STATUS") + SystemStatusResponse getContact(SystemStatusRequest request); + + @McpTool(name = "iam_account_password_expiry", title = "비밀번호 만료일 조회", description = "모의 비밀번호 만료일 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_ACCOUNT_PASSWORD_EXPIRY") + SystemStatusResponse getResult(SystemStatusRequest request); +} diff --git a/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/AuthenticationInquiryUseCase.java b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/AuthenticationInquiryUseCase.java new file mode 100644 index 00000000..8e90844c --- /dev/null +++ b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/AuthenticationInquiryUseCase.java @@ -0,0 +1,32 @@ +package io.shinhanlife.dap.mcc.biz.iam.usecase; + +import io.shinhanlife.dap.lib.annotation.GrowToolHint; +import io.shinhanlife.dap.mcc.biz.iam.dto.SystemStatusRequest; +import io.shinhanlife.dap.mcc.biz.iam.dto.SystemStatusResponse; +import org.springaicommunity.mcp.annotation.McpTool; + +public interface AuthenticationInquiryUseCase { + @McpTool(name = "iam_login_history", title = "로그인 이력 조회", description = "모의 로그인 이력 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_LOGIN_HISTORY") + SystemStatusResponse getPrimary(SystemStatusRequest request); + + @McpTool(name = "iam_authentication_method", title = "인증 수단 조회", description = "모의 인증 수단 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_AUTHENTICATION_METHOD") + SystemStatusResponse getList(SystemStatusRequest request); + + @McpTool(name = "iam_mfa_status", title = "다중 인증 상태 조회", description = "모의 다중 인증 상태 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_MFA_STATUS") + SystemStatusResponse getStatus(SystemStatusRequest request); + + @McpTool(name = "iam_access_token_status", title = "접근 토큰 상태 조회", description = "모의 접근 토큰 상태 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_ACCESS_TOKEN_STATUS") + SystemStatusResponse getDetail(SystemStatusRequest request); + + @McpTool(name = "iam_session_list", title = "세션 목록 조회", description = "모의 세션 목록 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_SESSION_LIST") + SystemStatusResponse getContact(SystemStatusRequest request); + + @McpTool(name = "iam_trusted_device_list", title = "신뢰 기기 목록 조회", description = "모의 신뢰 기기 목록 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_TRUSTED_DEVICE_LIST") + SystemStatusResponse getResult(SystemStatusRequest request); +} diff --git a/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/AuthorizationInquiryUseCase.java b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/AuthorizationInquiryUseCase.java new file mode 100644 index 00000000..048afdfd --- /dev/null +++ b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/AuthorizationInquiryUseCase.java @@ -0,0 +1,32 @@ +package io.shinhanlife.dap.mcc.biz.iam.usecase; + +import io.shinhanlife.dap.lib.annotation.GrowToolHint; +import io.shinhanlife.dap.mcc.biz.iam.dto.SystemStatusRequest; +import io.shinhanlife.dap.mcc.biz.iam.dto.SystemStatusResponse; +import org.springaicommunity.mcp.annotation.McpTool; + +public interface AuthorizationInquiryUseCase { + @McpTool(name = "iam_permission_list", title = "권한 목록 조회", description = "모의 권한 목록 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_PERMISSION_LIST") + SystemStatusResponse getPrimary(SystemStatusRequest request); + + @McpTool(name = "iam_role_list", title = "역할 목록 조회", description = "모의 역할 목록 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_ROLE_LIST") + SystemStatusResponse getList(SystemStatusRequest request); + + @McpTool(name = "iam_menu_access", title = "메뉴 접근 권한 조회", description = "모의 메뉴 접근 권한 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_MENU_ACCESS") + SystemStatusResponse getStatus(SystemStatusRequest request); + + @McpTool(name = "iam_resource_access", title = "자원 접근 권한 조회", description = "모의 자원 접근 권한 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_RESOURCE_ACCESS") + SystemStatusResponse getDetail(SystemStatusRequest request); + + @McpTool(name = "iam_approval_authority", title = "결재 권한 조회", description = "모의 결재 권한 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_APPROVAL_AUTHORITY") + SystemStatusResponse getContact(SystemStatusRequest request); + + @McpTool(name = "iam_delegation_status", title = "권한 위임 상태 조회", description = "모의 권한 위임 상태 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_DELEGATION_STATUS") + SystemStatusResponse getResult(SystemStatusRequest request); +} diff --git a/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/SystemStatusUseCase.java b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/SystemStatusUseCase.java new file mode 100644 index 00000000..2fe0d30d --- /dev/null +++ b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/SystemStatusUseCase.java @@ -0,0 +1,29 @@ +package io.shinhanlife.dap.mcc.biz.iam.usecase; + +import io.shinhanlife.dap.lib.annotation.GrowToolHint; +import io.shinhanlife.dap.mcc.biz.iam.dto.SystemStatusRequest; +import io.shinhanlife.dap.mcc.biz.iam.dto.SystemStatusResponse; +import org.springaicommunity.mcp.annotation.McpTool; + +public interface SystemStatusUseCase { + @McpTool(name = "iam_system_status", title = "시스템 상태 조회", + description = "조회 전용 모의 시스템 상태를 반환합니다.", + annotations = @McpTool.McpAnnotations(openWorldHint = true)) + @GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_STATUS") + SystemStatusResponse getSystemStatus(SystemStatusRequest request); + + @McpTool(name = "iam_service_health", title = "서비스 상태 조회", description = "모의 서비스 상태를 조회합니다.") + SystemStatusResponse getServiceHealth(SystemStatusRequest request); + @McpTool(name = "iam_environment_info", title = "환경 정보 조회", description = "모의 환경 정보를 조회합니다.") + SystemStatusResponse getEnvironmentInfo(SystemStatusRequest request); + @McpTool(name = "iam_deployment_version", title = "배포 버전 조회", description = "모의 배포 버전을 조회합니다.") + SystemStatusResponse getDeploymentVersion(SystemStatusRequest request); + + @McpTool(name = "iam_access_policy", title = "접근 정책 조회", description = "모의 접근 정책을 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_ACCESS_POLICY") + SystemStatusResponse getAccessPolicy(SystemStatusRequest request); + + @McpTool(name = "iam_session_status", title = "세션 상태 조회", description = "모의 세션 상태를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_SESSION_STATUS") + SystemStatusResponse getSessionStatus(SystemStatusRequest request); +} diff --git a/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/impl/AccountInquiryUseCaseImpl.java b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/impl/AccountInquiryUseCaseImpl.java new file mode 100644 index 00000000..93967e3c --- /dev/null +++ b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/impl/AccountInquiryUseCaseImpl.java @@ -0,0 +1,48 @@ +package io.shinhanlife.dap.mcc.biz.iam.usecase.impl; + +import io.shinhanlife.dap.mcc.biz.iam.dto.SystemStatusRequest; +import io.shinhanlife.dap.mcc.biz.iam.dto.SystemStatusResponse; +import io.shinhanlife.dap.mcc.biz.iam.usecase.AccountInquiryUseCase; +import org.springframework.stereotype.Service; + +@Service +public class AccountInquiryUseCaseImpl implements AccountInquiryUseCase { + @Override + public SystemStatusResponse getPrimary(SystemStatusRequest request) { + return mockResponse(request); + } + + @Override + public SystemStatusResponse getList(SystemStatusRequest request) { + return mockResponse(request); + } + + @Override + public SystemStatusResponse getStatus(SystemStatusRequest request) { + return mockResponse(request); + } + + @Override + public SystemStatusResponse getDetail(SystemStatusRequest request) { + return mockResponse(request); + } + + @Override + public SystemStatusResponse getContact(SystemStatusRequest request) { + return mockResponse(request); + } + + @Override + public SystemStatusResponse getResult(SystemStatusRequest request) { + return mockResponse(request); + } + + private SystemStatusResponse mockResponse(SystemStatusRequest request) { + SystemStatusResponse response = new SystemStatusResponse(); + response.setSystemName("AX Hub IAM"); + response.setEnvironment(request != null && request.getEnvironment() != null && !request.getEnvironment().isBlank() ? request.getEnvironment() : "개발"); + response.setStatus("정상"); + response.setCheckedAt(java.time.OffsetDateTime.now().toString()); + return response; + } +} diff --git a/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/impl/AuthenticationInquiryUseCaseImpl.java b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/impl/AuthenticationInquiryUseCaseImpl.java new file mode 100644 index 00000000..fb2d7f38 --- /dev/null +++ b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/impl/AuthenticationInquiryUseCaseImpl.java @@ -0,0 +1,48 @@ +package io.shinhanlife.dap.mcc.biz.iam.usecase.impl; + +import io.shinhanlife.dap.mcc.biz.iam.dto.SystemStatusRequest; +import io.shinhanlife.dap.mcc.biz.iam.dto.SystemStatusResponse; +import io.shinhanlife.dap.mcc.biz.iam.usecase.AuthenticationInquiryUseCase; +import org.springframework.stereotype.Service; + +@Service +public class AuthenticationInquiryUseCaseImpl implements AuthenticationInquiryUseCase { + @Override + public SystemStatusResponse getPrimary(SystemStatusRequest request) { + return mockResponse(request); + } + + @Override + public SystemStatusResponse getList(SystemStatusRequest request) { + return mockResponse(request); + } + + @Override + public SystemStatusResponse getStatus(SystemStatusRequest request) { + return mockResponse(request); + } + + @Override + public SystemStatusResponse getDetail(SystemStatusRequest request) { + return mockResponse(request); + } + + @Override + public SystemStatusResponse getContact(SystemStatusRequest request) { + return mockResponse(request); + } + + @Override + public SystemStatusResponse getResult(SystemStatusRequest request) { + return mockResponse(request); + } + + private SystemStatusResponse mockResponse(SystemStatusRequest request) { + SystemStatusResponse response = new SystemStatusResponse(); + response.setSystemName("AX Hub IAM"); + response.setEnvironment(request != null && request.getEnvironment() != null && !request.getEnvironment().isBlank() ? request.getEnvironment() : "개발"); + response.setStatus("정상"); + response.setCheckedAt(java.time.OffsetDateTime.now().toString()); + return response; + } +} diff --git a/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/impl/AuthorizationInquiryUseCaseImpl.java b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/impl/AuthorizationInquiryUseCaseImpl.java new file mode 100644 index 00000000..07d8e9c9 --- /dev/null +++ b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/impl/AuthorizationInquiryUseCaseImpl.java @@ -0,0 +1,48 @@ +package io.shinhanlife.dap.mcc.biz.iam.usecase.impl; + +import io.shinhanlife.dap.mcc.biz.iam.dto.SystemStatusRequest; +import io.shinhanlife.dap.mcc.biz.iam.dto.SystemStatusResponse; +import io.shinhanlife.dap.mcc.biz.iam.usecase.AuthorizationInquiryUseCase; +import org.springframework.stereotype.Service; + +@Service +public class AuthorizationInquiryUseCaseImpl implements AuthorizationInquiryUseCase { + @Override + public SystemStatusResponse getPrimary(SystemStatusRequest request) { + return mockResponse(request); + } + + @Override + public SystemStatusResponse getList(SystemStatusRequest request) { + return mockResponse(request); + } + + @Override + public SystemStatusResponse getStatus(SystemStatusRequest request) { + return mockResponse(request); + } + + @Override + public SystemStatusResponse getDetail(SystemStatusRequest request) { + return mockResponse(request); + } + + @Override + public SystemStatusResponse getContact(SystemStatusRequest request) { + return mockResponse(request); + } + + @Override + public SystemStatusResponse getResult(SystemStatusRequest request) { + return mockResponse(request); + } + + private SystemStatusResponse mockResponse(SystemStatusRequest request) { + SystemStatusResponse response = new SystemStatusResponse(); + response.setSystemName("AX Hub IAM"); + response.setEnvironment(request != null && request.getEnvironment() != null && !request.getEnvironment().isBlank() ? request.getEnvironment() : "개발"); + response.setStatus("정상"); + response.setCheckedAt(java.time.OffsetDateTime.now().toString()); + return response; + } +} diff --git a/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/impl/SystemStatusUseCaseImpl.java b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/impl/SystemStatusUseCaseImpl.java new file mode 100644 index 00000000..000bc7c6 --- /dev/null +++ b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/impl/SystemStatusUseCaseImpl.java @@ -0,0 +1,26 @@ +package io.shinhanlife.dap.mcc.biz.iam.usecase.impl; + +import io.shinhanlife.dap.mcc.biz.iam.dto.SystemStatusRequest; +import io.shinhanlife.dap.mcc.biz.iam.dto.SystemStatusResponse; +import io.shinhanlife.dap.mcc.biz.iam.usecase.SystemStatusUseCase; +import java.time.OffsetDateTime; +import org.springframework.stereotype.Service; + +@Service +public class SystemStatusUseCaseImpl implements SystemStatusUseCase { + @Override public SystemStatusResponse getServiceHealth(SystemStatusRequest request) { return getSystemStatus(request); } + @Override public SystemStatusResponse getEnvironmentInfo(SystemStatusRequest request) { return getSystemStatus(request); } + @Override public SystemStatusResponse getDeploymentVersion(SystemStatusRequest request) { return getSystemStatus(request); } + @Override public SystemStatusResponse getAccessPolicy(SystemStatusRequest request) { return getSystemStatus(request); } + @Override public SystemStatusResponse getSessionStatus(SystemStatusRequest request) { return getSystemStatus(request); } + @Override + public SystemStatusResponse getSystemStatus(SystemStatusRequest request) { + SystemStatusResponse response = new SystemStatusResponse(); + response.setSystemName("AX Hub 시스템"); + response.setEnvironment(request != null && request.getEnvironment() != null && !request.getEnvironment().isBlank() + ? request.getEnvironment() : "개발"); + response.setStatus("정상"); + response.setCheckedAt(OffsetDateTime.now().toString()); + return response; + } +} diff --git a/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/dto/SystemNoticeRequest.java b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/dto/SystemNoticeRequest.java new file mode 100644 index 00000000..08d358fc --- /dev/null +++ b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/dto/SystemNoticeRequest.java @@ -0,0 +1,10 @@ +package io.shinhanlife.dap.mcc.biz.pct.dto; + +import lombok.Data; +import org.springaicommunity.mcp.annotation.McpToolParam; + +@Data +public class SystemNoticeRequest { + @McpToolParam(description = "공지 분류", required = false) + private String category; +} diff --git a/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/dto/SystemNoticeResponse.java b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/dto/SystemNoticeResponse.java new file mode 100644 index 00000000..96491fbb --- /dev/null +++ b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/dto/SystemNoticeResponse.java @@ -0,0 +1,16 @@ +package io.shinhanlife.dap.mcc.biz.pct.dto; + +import java.util.List; +import lombok.Data; + +@Data +public class SystemNoticeResponse { + private List notices; + + @Data + public static class Notice { + private String title; + private String priority; + private String publishedDate; + } +} diff --git a/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/usecase/MaintenanceInquiryUseCase.java b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/usecase/MaintenanceInquiryUseCase.java new file mode 100644 index 00000000..d501edde --- /dev/null +++ b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/usecase/MaintenanceInquiryUseCase.java @@ -0,0 +1,32 @@ +package io.shinhanlife.dap.mcc.biz.pct.usecase; + +import io.shinhanlife.dap.lib.annotation.GrowToolHint; +import io.shinhanlife.dap.mcc.biz.pct.dto.SystemNoticeRequest; +import io.shinhanlife.dap.mcc.biz.pct.dto.SystemNoticeResponse; +import org.springaicommunity.mcp.annotation.McpTool; + +public interface MaintenanceInquiryUseCase { + @McpTool(name = "pct_maintenance_schedule", title = "점검 일정 조회", description = "모의 점검 일정 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "pct", mappingId = "DIRECT_PCT_MAINTENANCE_SCHEDULE") + SystemNoticeResponse getPrimary(SystemNoticeRequest request); + + @McpTool(name = "pct_maintenance_history", title = "점검 이력 조회", description = "모의 점검 이력 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "pct", mappingId = "DIRECT_PCT_MAINTENANCE_HISTORY") + SystemNoticeResponse getList(SystemNoticeRequest request); + + @McpTool(name = "pct_maintenance_scope", title = "점검 범위 조회", description = "모의 점검 범위 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "pct", mappingId = "DIRECT_PCT_MAINTENANCE_SCOPE") + SystemNoticeResponse getStatus(SystemNoticeRequest request); + + @McpTool(name = "pct_maintenance_status", title = "점검 진행 상태 조회", description = "모의 점검 진행 상태 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "pct", mappingId = "DIRECT_PCT_MAINTENANCE_STATUS") + SystemNoticeResponse getDetail(SystemNoticeRequest request); + + @McpTool(name = "pct_maintenance_contact", title = "점검 담당자 조회", description = "모의 점검 담당자 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "pct", mappingId = "DIRECT_PCT_MAINTENANCE_CONTACT") + SystemNoticeResponse getContact(SystemNoticeRequest request); + + @McpTool(name = "pct_maintenance_result", title = "점검 결과 조회", description = "모의 점검 결과 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "pct", mappingId = "DIRECT_PCT_MAINTENANCE_RESULT") + SystemNoticeResponse getResult(SystemNoticeRequest request); +} diff --git a/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/usecase/ReleaseInquiryUseCase.java b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/usecase/ReleaseInquiryUseCase.java new file mode 100644 index 00000000..8e0ff515 --- /dev/null +++ b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/usecase/ReleaseInquiryUseCase.java @@ -0,0 +1,32 @@ +package io.shinhanlife.dap.mcc.biz.pct.usecase; + +import io.shinhanlife.dap.lib.annotation.GrowToolHint; +import io.shinhanlife.dap.mcc.biz.pct.dto.SystemNoticeRequest; +import io.shinhanlife.dap.mcc.biz.pct.dto.SystemNoticeResponse; +import org.springaicommunity.mcp.annotation.McpTool; + +public interface ReleaseInquiryUseCase { + @McpTool(name = "pct_release_notice", title = "배포 공지 조회", description = "모의 배포 공지 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "pct", mappingId = "DIRECT_PCT_RELEASE_NOTICE") + SystemNoticeResponse getPrimary(SystemNoticeRequest request); + + @McpTool(name = "pct_release_history", title = "배포 이력 조회", description = "모의 배포 이력 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "pct", mappingId = "DIRECT_PCT_RELEASE_HISTORY") + SystemNoticeResponse getList(SystemNoticeRequest request); + + @McpTool(name = "pct_release_schedule", title = "배포 일정 조회", description = "모의 배포 일정 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "pct", mappingId = "DIRECT_PCT_RELEASE_SCHEDULE") + SystemNoticeResponse getStatus(SystemNoticeRequest request); + + @McpTool(name = "pct_release_version", title = "배포 버전 조회", description = "모의 배포 버전 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "pct", mappingId = "DIRECT_PCT_RELEASE_VERSION") + SystemNoticeResponse getDetail(SystemNoticeRequest request); + + @McpTool(name = "pct_release_scope", title = "배포 범위 조회", description = "모의 배포 범위 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "pct", mappingId = "DIRECT_PCT_RELEASE_SCOPE") + SystemNoticeResponse getContact(SystemNoticeRequest request); + + @McpTool(name = "pct_release_status", title = "배포 상태 조회", description = "모의 배포 상태 조회 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "pct", mappingId = "DIRECT_PCT_RELEASE_STATUS") + SystemNoticeResponse getResult(SystemNoticeRequest request); +} diff --git a/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/usecase/SystemNoticeUseCase.java b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/usecase/SystemNoticeUseCase.java new file mode 100644 index 00000000..fe313851 --- /dev/null +++ b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/usecase/SystemNoticeUseCase.java @@ -0,0 +1,32 @@ +package io.shinhanlife.dap.mcc.biz.pct.usecase; + +import io.shinhanlife.dap.lib.annotation.GrowToolHint; +import io.shinhanlife.dap.mcc.biz.pct.dto.SystemNoticeRequest; +import io.shinhanlife.dap.mcc.biz.pct.dto.SystemNoticeResponse; +import org.springaicommunity.mcp.annotation.McpTool; + +public interface SystemNoticeUseCase { + @McpTool(name = "pct_notice_list", title = "시스템 공지 조회", description = "모의 시스템 공지 목록을 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "pct", mappingId = "DIRECT_PCT_NOTICE_LIST") + SystemNoticeResponse getSystemNotices(SystemNoticeRequest request); + + @McpTool(name = "pct_notice_search", title = "공지 검색 조회", description = "모의 공지 검색 결과를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "pct", mappingId = "DIRECT_PCT_NOTICE_SEARCH") + SystemNoticeResponse getNoticeSearch(SystemNoticeRequest request); + + @McpTool(name = "pct_notice_recent", title = "최신 공지 조회", description = "모의 최신 공지를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "pct", mappingId = "DIRECT_PCT_NOTICE_RECENT") + SystemNoticeResponse getRecentNotices(SystemNoticeRequest request); + + @McpTool(name = "pct_alert_list", title = "알림 목록 조회", description = "모의 알림 목록을 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "pct", mappingId = "DIRECT_PCT_ALERT_LIST") + SystemNoticeResponse getAlertList(SystemNoticeRequest request); + + @McpTool(name = "pct_notice_detail", title = "공지 상세 조회", description = "모의 공지 상세 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "pct", mappingId = "DIRECT_PCT_NOTICE_DETAIL") + SystemNoticeResponse getNoticeDetail(SystemNoticeRequest request); + + @McpTool(name = "pct_notice_category", title = "공지 분류 조회", description = "모의 공지 분류 정보를 조회합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "pct", mappingId = "DIRECT_PCT_NOTICE_CATEGORY") + SystemNoticeResponse getNoticeCategory(SystemNoticeRequest request); +} diff --git a/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/usecase/impl/MaintenanceInquiryUseCaseImpl.java b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/usecase/impl/MaintenanceInquiryUseCaseImpl.java new file mode 100644 index 00000000..a1f52c4e --- /dev/null +++ b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/usecase/impl/MaintenanceInquiryUseCaseImpl.java @@ -0,0 +1,49 @@ +package io.shinhanlife.dap.mcc.biz.pct.usecase.impl; + +import io.shinhanlife.dap.mcc.biz.pct.dto.SystemNoticeRequest; +import io.shinhanlife.dap.mcc.biz.pct.dto.SystemNoticeResponse; +import io.shinhanlife.dap.mcc.biz.pct.usecase.MaintenanceInquiryUseCase; +import org.springframework.stereotype.Service; + +@Service +public class MaintenanceInquiryUseCaseImpl implements MaintenanceInquiryUseCase { + @Override + public SystemNoticeResponse getPrimary(SystemNoticeRequest request) { + return mockResponse(request); + } + + @Override + public SystemNoticeResponse getList(SystemNoticeRequest request) { + return mockResponse(request); + } + + @Override + public SystemNoticeResponse getStatus(SystemNoticeRequest request) { + return mockResponse(request); + } + + @Override + public SystemNoticeResponse getDetail(SystemNoticeRequest request) { + return mockResponse(request); + } + + @Override + public SystemNoticeResponse getContact(SystemNoticeRequest request) { + return mockResponse(request); + } + + @Override + public SystemNoticeResponse getResult(SystemNoticeRequest request) { + return mockResponse(request); + } + + private SystemNoticeResponse mockResponse(SystemNoticeRequest request) { + SystemNoticeResponse.Notice notice = new SystemNoticeResponse.Notice(); + notice.setTitle("점검 정보 조회"); + notice.setPriority("보통"); + notice.setPublishedDate("2026-08-13"); + SystemNoticeResponse response = new SystemNoticeResponse(); + response.setNotices(java.util.List.of(notice)); + return response; + } +} diff --git a/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/usecase/impl/ReleaseInquiryUseCaseImpl.java b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/usecase/impl/ReleaseInquiryUseCaseImpl.java new file mode 100644 index 00000000..8d585d26 --- /dev/null +++ b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/usecase/impl/ReleaseInquiryUseCaseImpl.java @@ -0,0 +1,49 @@ +package io.shinhanlife.dap.mcc.biz.pct.usecase.impl; + +import io.shinhanlife.dap.mcc.biz.pct.dto.SystemNoticeRequest; +import io.shinhanlife.dap.mcc.biz.pct.dto.SystemNoticeResponse; +import io.shinhanlife.dap.mcc.biz.pct.usecase.ReleaseInquiryUseCase; +import org.springframework.stereotype.Service; + +@Service +public class ReleaseInquiryUseCaseImpl implements ReleaseInquiryUseCase { + @Override + public SystemNoticeResponse getPrimary(SystemNoticeRequest request) { + return mockResponse(request); + } + + @Override + public SystemNoticeResponse getList(SystemNoticeRequest request) { + return mockResponse(request); + } + + @Override + public SystemNoticeResponse getStatus(SystemNoticeRequest request) { + return mockResponse(request); + } + + @Override + public SystemNoticeResponse getDetail(SystemNoticeRequest request) { + return mockResponse(request); + } + + @Override + public SystemNoticeResponse getContact(SystemNoticeRequest request) { + return mockResponse(request); + } + + @Override + public SystemNoticeResponse getResult(SystemNoticeRequest request) { + return mockResponse(request); + } + + private SystemNoticeResponse mockResponse(SystemNoticeRequest request) { + SystemNoticeResponse.Notice notice = new SystemNoticeResponse.Notice(); + notice.setTitle("배포 정보 조회"); + notice.setPriority("보통"); + notice.setPublishedDate("2026-08-13"); + SystemNoticeResponse response = new SystemNoticeResponse(); + response.setNotices(java.util.List.of(notice)); + return response; + } +} diff --git a/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/usecase/impl/SystemNoticeUseCaseImpl.java b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/usecase/impl/SystemNoticeUseCaseImpl.java new file mode 100644 index 00000000..1479c020 --- /dev/null +++ b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/pct/usecase/impl/SystemNoticeUseCaseImpl.java @@ -0,0 +1,27 @@ +package io.shinhanlife.dap.mcc.biz.pct.usecase.impl; + +import io.shinhanlife.dap.mcc.biz.pct.dto.SystemNoticeRequest; +import io.shinhanlife.dap.mcc.biz.pct.dto.SystemNoticeResponse; +import io.shinhanlife.dap.mcc.biz.pct.usecase.SystemNoticeUseCase; +import java.util.List; +import org.springframework.stereotype.Service; + +@Service +public class SystemNoticeUseCaseImpl implements SystemNoticeUseCase { + @Override public SystemNoticeResponse getSystemNotices(SystemNoticeRequest request) { return mockResponse(); } + @Override public SystemNoticeResponse getNoticeSearch(SystemNoticeRequest request) { return mockResponse(); } + @Override public SystemNoticeResponse getRecentNotices(SystemNoticeRequest request) { return mockResponse(); } + @Override public SystemNoticeResponse getAlertList(SystemNoticeRequest request) { return mockResponse(); } + @Override public SystemNoticeResponse getNoticeDetail(SystemNoticeRequest request) { return mockResponse(); } + @Override public SystemNoticeResponse getNoticeCategory(SystemNoticeRequest request) { return mockResponse(); } + + private SystemNoticeResponse mockResponse() { + SystemNoticeResponse.Notice notice = new SystemNoticeResponse.Notice(); + notice.setTitle("정기 점검 안내"); + notice.setPriority("보통"); + notice.setPublishedDate("2026-08-13"); + SystemNoticeResponse response = new SystemNoticeResponse(); + response.setNotices(List.of(notice)); + return response; + } +} diff --git a/dap-was-sys/src/main/resources/mock-responses/iam_access_policy.json b/dap-was-sys/src/main/resources/mock-responses/iam_access_policy.json new file mode 100644 index 00000000..3e009f81 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/iam_access_policy.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"iam_access_policy\",\"title\":\"접근 정책 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\"}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/iam_access_token_status.json b/dap-was-sys/src/main/resources/mock-responses/iam_access_token_status.json new file mode 100644 index 00000000..5753d659 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/iam_access_token_status.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"iam_access_token_status\",\"title\":\"접근 토큰 상태 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\"}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/iam_account_list.json b/dap-was-sys/src/main/resources/mock-responses/iam_account_list.json new file mode 100644 index 00000000..5f8bdf8a --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/iam_account_list.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"iam_account_list\",\"title\":\"계정 목록 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\"}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/iam_account_lock_status.json b/dap-was-sys/src/main/resources/mock-responses/iam_account_lock_status.json new file mode 100644 index 00000000..37d3d2f2 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/iam_account_lock_status.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"iam_account_lock_status\",\"title\":\"계정 잠금 상태 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\"}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/iam_account_password_expiry.json b/dap-was-sys/src/main/resources/mock-responses/iam_account_password_expiry.json new file mode 100644 index 00000000..c62fbf51 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/iam_account_password_expiry.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"iam_account_password_expiry\",\"title\":\"비밀번호 만료일 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\"}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/iam_account_profile.json b/dap-was-sys/src/main/resources/mock-responses/iam_account_profile.json new file mode 100644 index 00000000..b2361541 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/iam_account_profile.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"iam_account_profile\",\"title\":\"계정 프로필 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\"}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/iam_account_role.json b/dap-was-sys/src/main/resources/mock-responses/iam_account_role.json new file mode 100644 index 00000000..33b95415 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/iam_account_role.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"iam_account_role\",\"title\":\"계정 역할 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\"}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/iam_account_status.json b/dap-was-sys/src/main/resources/mock-responses/iam_account_status.json new file mode 100644 index 00000000..fd1111b6 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/iam_account_status.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"iam_account_status\",\"title\":\"계정 상태 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\"}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/iam_approval_authority.json b/dap-was-sys/src/main/resources/mock-responses/iam_approval_authority.json new file mode 100644 index 00000000..40a65525 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/iam_approval_authority.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"iam_approval_authority\",\"title\":\"결재 권한 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\"}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/iam_authentication_method.json b/dap-was-sys/src/main/resources/mock-responses/iam_authentication_method.json new file mode 100644 index 00000000..d5776fd0 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/iam_authentication_method.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"iam_authentication_method\",\"title\":\"인증 수단 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\"}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/iam_delegation_status.json b/dap-was-sys/src/main/resources/mock-responses/iam_delegation_status.json new file mode 100644 index 00000000..9d1c4a95 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/iam_delegation_status.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"iam_delegation_status\",\"title\":\"권한 위임 상태 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\"}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/iam_deployment_version.json b/dap-was-sys/src/main/resources/mock-responses/iam_deployment_version.json new file mode 100644 index 00000000..34d7c0e1 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/iam_deployment_version.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"iam_deployment_version\",\"title\":\"배포 버전 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\"}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/iam_environment_info.json b/dap-was-sys/src/main/resources/mock-responses/iam_environment_info.json new file mode 100644 index 00000000..ae85ada2 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/iam_environment_info.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"iam_environment_info\",\"title\":\"환경 정보 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\"}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/iam_login_history.json b/dap-was-sys/src/main/resources/mock-responses/iam_login_history.json new file mode 100644 index 00000000..96c2d222 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/iam_login_history.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"iam_login_history\",\"title\":\"로그인 이력 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\"}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/iam_menu_access.json b/dap-was-sys/src/main/resources/mock-responses/iam_menu_access.json new file mode 100644 index 00000000..1398e4d6 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/iam_menu_access.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"iam_menu_access\",\"title\":\"메뉴 접근 권한 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\"}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/iam_mfa_status.json b/dap-was-sys/src/main/resources/mock-responses/iam_mfa_status.json new file mode 100644 index 00000000..d3d75c83 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/iam_mfa_status.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"iam_mfa_status\",\"title\":\"다중 인증 상태 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\"}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/iam_permission_list.json b/dap-was-sys/src/main/resources/mock-responses/iam_permission_list.json new file mode 100644 index 00000000..56165b55 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/iam_permission_list.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"iam_permission_list\",\"title\":\"권한 목록 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\"}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/iam_resource_access.json b/dap-was-sys/src/main/resources/mock-responses/iam_resource_access.json new file mode 100644 index 00000000..87562bd9 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/iam_resource_access.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"iam_resource_access\",\"title\":\"자원 접근 권한 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\"}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/iam_role_list.json b/dap-was-sys/src/main/resources/mock-responses/iam_role_list.json new file mode 100644 index 00000000..85337f39 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/iam_role_list.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"iam_role_list\",\"title\":\"역할 목록 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\"}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/iam_service_health.json b/dap-was-sys/src/main/resources/mock-responses/iam_service_health.json new file mode 100644 index 00000000..05935c3f --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/iam_service_health.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"iam_service_health\",\"title\":\"서비스 상태 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\"}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/iam_session_list.json b/dap-was-sys/src/main/resources/mock-responses/iam_session_list.json new file mode 100644 index 00000000..0c4f715b --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/iam_session_list.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"iam_session_list\",\"title\":\"세션 목록 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\"}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/iam_session_status.json b/dap-was-sys/src/main/resources/mock-responses/iam_session_status.json new file mode 100644 index 00000000..681530e3 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/iam_session_status.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"iam_session_status\",\"title\":\"세션 상태 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\"}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/iam_system_status.json b/dap-was-sys/src/main/resources/mock-responses/iam_system_status.json new file mode 100644 index 00000000..9bca1b16 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/iam_system_status.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"iam_system_status\",\"title\":\"시스템 상태 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\",\"checkedAt\":\"2026-08-13T09:00:00+09:00\"}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/iam_trusted_device_list.json b/dap-was-sys/src/main/resources/mock-responses/iam_trusted_device_list.json new file mode 100644 index 00000000..0529dc92 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/iam_trusted_device_list.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"iam_trusted_device_list\",\"title\":\"신뢰 기기 목록 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\"}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/pct_alert_list.json b/dap-was-sys/src/main/resources/mock-responses/pct_alert_list.json new file mode 100644 index 00000000..1d73af2e --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/pct_alert_list.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"pct_alert_list\",\"title\":\"알림 목록 조회\",\"notices\":[{\"title\":\"알림 목록 조회\",\"priority\":\"보통\",\"publishedDate\":\"2026-08-13\"}]}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/pct_maintenance_contact.json b/dap-was-sys/src/main/resources/mock-responses/pct_maintenance_contact.json new file mode 100644 index 00000000..22b50764 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/pct_maintenance_contact.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"pct_maintenance_contact\",\"title\":\"점검 담당자 조회\",\"notices\":[{\"title\":\"점검 담당자 조회\",\"priority\":\"보통\",\"publishedDate\":\"2026-08-13\"}]}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/pct_maintenance_history.json b/dap-was-sys/src/main/resources/mock-responses/pct_maintenance_history.json new file mode 100644 index 00000000..faefc07f --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/pct_maintenance_history.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"pct_maintenance_history\",\"title\":\"점검 이력 조회\",\"notices\":[{\"title\":\"점검 이력 조회\",\"priority\":\"보통\",\"publishedDate\":\"2026-08-13\"}]}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/pct_maintenance_result.json b/dap-was-sys/src/main/resources/mock-responses/pct_maintenance_result.json new file mode 100644 index 00000000..f46d7e98 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/pct_maintenance_result.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"pct_maintenance_result\",\"title\":\"점검 결과 조회\",\"notices\":[{\"title\":\"점검 결과 조회\",\"priority\":\"보통\",\"publishedDate\":\"2026-08-13\"}]}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/pct_maintenance_schedule.json b/dap-was-sys/src/main/resources/mock-responses/pct_maintenance_schedule.json new file mode 100644 index 00000000..195634dd --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/pct_maintenance_schedule.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"pct_maintenance_schedule\",\"title\":\"점검 일정 조회\",\"notices\":[{\"title\":\"점검 일정 조회\",\"priority\":\"보통\",\"publishedDate\":\"2026-08-13\"}]}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/pct_maintenance_scope.json b/dap-was-sys/src/main/resources/mock-responses/pct_maintenance_scope.json new file mode 100644 index 00000000..789c0108 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/pct_maintenance_scope.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"pct_maintenance_scope\",\"title\":\"점검 범위 조회\",\"notices\":[{\"title\":\"점검 범위 조회\",\"priority\":\"보통\",\"publishedDate\":\"2026-08-13\"}]}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/pct_maintenance_status.json b/dap-was-sys/src/main/resources/mock-responses/pct_maintenance_status.json new file mode 100644 index 00000000..fadcccb9 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/pct_maintenance_status.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"pct_maintenance_status\",\"title\":\"점검 진행 상태 조회\",\"notices\":[{\"title\":\"점검 진행 상태 조회\",\"priority\":\"보통\",\"publishedDate\":\"2026-08-13\"}]}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/pct_notice_category.json b/dap-was-sys/src/main/resources/mock-responses/pct_notice_category.json new file mode 100644 index 00000000..db153e85 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/pct_notice_category.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"pct_notice_category\",\"title\":\"공지 분류 조회\",\"notices\":[{\"title\":\"공지 분류 조회\",\"priority\":\"보통\",\"publishedDate\":\"2026-08-13\"}]}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/pct_notice_detail.json b/dap-was-sys/src/main/resources/mock-responses/pct_notice_detail.json new file mode 100644 index 00000000..ed9ee7ff --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/pct_notice_detail.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"pct_notice_detail\",\"title\":\"공지 상세 조회\",\"notices\":[{\"title\":\"공지 상세 조회\",\"priority\":\"보통\",\"publishedDate\":\"2026-08-13\"}]}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/pct_notice_list.json b/dap-was-sys/src/main/resources/mock-responses/pct_notice_list.json new file mode 100644 index 00000000..9b40b04d --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/pct_notice_list.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"pct_notice_list\",\"title\":\"시스템 공지 조회\",\"notices\":[{\"title\":\"시스템 공지 조회\",\"priority\":\"보통\",\"publishedDate\":\"2026-08-13\"}]}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/pct_notice_recent.json b/dap-was-sys/src/main/resources/mock-responses/pct_notice_recent.json new file mode 100644 index 00000000..da1e0cfb --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/pct_notice_recent.json @@ -0,0 +1 @@ +{"resultCode":"SUCCESS","data":"{\"toolName\":\"pct_notice_recent\",\"title\":\"최신 공지 조회\",\"notices\":[{\"title\":\"최신 시스템 공지\",\"priority\":\"보통\",\"publishedDate\":\"2026-08-13\"}]}"} diff --git a/dap-was-sys/src/main/resources/mock-responses/pct_notice_search.json b/dap-was-sys/src/main/resources/mock-responses/pct_notice_search.json new file mode 100644 index 00000000..8cc15653 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/pct_notice_search.json @@ -0,0 +1 @@ +{"resultCode":"SUCCESS","data":"{\"toolName\":\"pct_notice_search\",\"title\":\"공지 검색 조회\",\"notices\":[{\"title\":\"점검 공지\",\"priority\":\"보통\",\"publishedDate\":\"2026-08-13\"}]}"} diff --git a/dap-was-sys/src/main/resources/mock-responses/pct_release_history.json b/dap-was-sys/src/main/resources/mock-responses/pct_release_history.json new file mode 100644 index 00000000..3f3f312d --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/pct_release_history.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"pct_release_history\",\"title\":\"배포 이력 조회\",\"notices\":[{\"title\":\"배포 이력 조회\",\"priority\":\"보통\",\"publishedDate\":\"2026-08-13\"}]}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/pct_release_notice.json b/dap-was-sys/src/main/resources/mock-responses/pct_release_notice.json new file mode 100644 index 00000000..6d359ae7 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/pct_release_notice.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"pct_release_notice\",\"title\":\"배포 공지 조회\",\"notices\":[{\"title\":\"배포 공지 조회\",\"priority\":\"보통\",\"publishedDate\":\"2026-08-13\"}]}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/pct_release_schedule.json b/dap-was-sys/src/main/resources/mock-responses/pct_release_schedule.json new file mode 100644 index 00000000..80c28c75 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/pct_release_schedule.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"pct_release_schedule\",\"title\":\"배포 일정 조회\",\"notices\":[{\"title\":\"배포 일정 조회\",\"priority\":\"보통\",\"publishedDate\":\"2026-08-13\"}]}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/pct_release_scope.json b/dap-was-sys/src/main/resources/mock-responses/pct_release_scope.json new file mode 100644 index 00000000..d66429a1 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/pct_release_scope.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"pct_release_scope\",\"title\":\"배포 범위 조회\",\"notices\":[{\"title\":\"배포 범위 조회\",\"priority\":\"보통\",\"publishedDate\":\"2026-08-13\"}]}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/pct_release_status.json b/dap-was-sys/src/main/resources/mock-responses/pct_release_status.json new file mode 100644 index 00000000..79ec95a8 --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/pct_release_status.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"pct_release_status\",\"title\":\"배포 상태 조회\",\"notices\":[{\"title\":\"배포 상태 조회\",\"priority\":\"보통\",\"publishedDate\":\"2026-08-13\"}]}" +} diff --git a/dap-was-sys/src/main/resources/mock-responses/pct_release_version.json b/dap-was-sys/src/main/resources/mock-responses/pct_release_version.json new file mode 100644 index 00000000..45d30aef --- /dev/null +++ b/dap-was-sys/src/main/resources/mock-responses/pct_release_version.json @@ -0,0 +1,4 @@ +{ + "resultCode": "SUCCESS", + "data": "{\"toolName\":\"pct_release_version\",\"title\":\"배포 버전 조회\",\"notices\":[{\"title\":\"배포 버전 조회\",\"priority\":\"보통\",\"publishedDate\":\"2026-08-13\"}]}" +} diff --git a/dap-was-sys/src/main/resources/tool-definitions/iam/iam_access_policy.yml b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_access_policy.yml new file mode 100644 index 00000000..add0d674 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_access_policy.yml @@ -0,0 +1,22 @@ +name: iam_access_policy +display_name: 접근 정책 조회 +version: 1.0.0 +category_key: iam +description: + function: 모의 접근 정책 조회 정보를 조회합니다. + when_to_use: 접근 정책 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 접근 정책 조회 정보를 조회합니다. +example_queries: ["접근 정책 조회 정보를 보여줘", "접근 정책 조회을 확인해줘", "현재 접근 정책 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + environment: {type: string, description: 조회할 환경명} + additionalProperties: false +tags: [iam, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/iam/iam_access_token_status.yml b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_access_token_status.yml new file mode 100644 index 00000000..1c159aa3 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_access_token_status.yml @@ -0,0 +1,22 @@ +name: iam_access_token_status +display_name: 접근 토큰 상태 조회 +version: 1.0.0 +category_key: iam +description: + function: 모의 접근 토큰 상태 조회 정보를 조회합니다. + when_to_use: 접근 토큰 상태 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 접근 토큰 상태 조회 정보를 조회합니다. +example_queries: ["접근 토큰 상태 조회 정보를 보여줘", "접근 토큰 상태 조회을 확인해줘", "현재 접근 토큰 상태 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + environment: {type: string, description: 조회할 환경명} + additionalProperties: false +tags: [iam, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/iam/iam_account_list.yml b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_account_list.yml new file mode 100644 index 00000000..1d04aee4 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_account_list.yml @@ -0,0 +1,22 @@ +name: iam_account_list +display_name: 계정 목록 조회 +version: 1.0.0 +category_key: iam +description: + function: 모의 계정 목록 조회 정보를 조회합니다. + when_to_use: 계정 목록 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 계정 목록 조회 정보를 조회합니다. +example_queries: ["계정 목록 조회 정보를 보여줘", "계정 목록 조회을 확인해줘", "현재 계정 목록 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + environment: {type: string, description: 조회할 환경명} + additionalProperties: false +tags: [iam, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/iam/iam_account_lock_status.yml b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_account_lock_status.yml new file mode 100644 index 00000000..8e955860 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_account_lock_status.yml @@ -0,0 +1,22 @@ +name: iam_account_lock_status +display_name: 계정 잠금 상태 조회 +version: 1.0.0 +category_key: iam +description: + function: 모의 계정 잠금 상태 조회 정보를 조회합니다. + when_to_use: 계정 잠금 상태 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 계정 잠금 상태 조회 정보를 조회합니다. +example_queries: ["계정 잠금 상태 조회 정보를 보여줘", "계정 잠금 상태 조회을 확인해줘", "현재 계정 잠금 상태 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + environment: {type: string, description: 조회할 환경명} + additionalProperties: false +tags: [iam, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/iam/iam_account_password_expiry.yml b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_account_password_expiry.yml new file mode 100644 index 00000000..3e6e349e --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_account_password_expiry.yml @@ -0,0 +1,22 @@ +name: iam_account_password_expiry +display_name: 비밀번호 만료일 조회 +version: 1.0.0 +category_key: iam +description: + function: 모의 비밀번호 만료일 조회 정보를 조회합니다. + when_to_use: 비밀번호 만료일 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 비밀번호 만료일 조회 정보를 조회합니다. +example_queries: ["비밀번호 만료일 조회 정보를 보여줘", "비밀번호 만료일 조회을 확인해줘", "현재 비밀번호 만료일 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + environment: {type: string, description: 조회할 환경명} + additionalProperties: false +tags: [iam, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/iam/iam_account_profile.yml b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_account_profile.yml new file mode 100644 index 00000000..0732051b --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_account_profile.yml @@ -0,0 +1,22 @@ +name: iam_account_profile +display_name: 계정 프로필 조회 +version: 1.0.0 +category_key: iam +description: + function: 모의 계정 프로필 조회 정보를 조회합니다. + when_to_use: 계정 프로필 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 계정 프로필 조회 정보를 조회합니다. +example_queries: ["계정 프로필 조회 정보를 보여줘", "계정 프로필 조회을 확인해줘", "현재 계정 프로필 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + environment: {type: string, description: 조회할 환경명} + additionalProperties: false +tags: [iam, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/iam/iam_account_role.yml b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_account_role.yml new file mode 100644 index 00000000..fd75edee --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_account_role.yml @@ -0,0 +1,22 @@ +name: iam_account_role +display_name: 계정 역할 조회 +version: 1.0.0 +category_key: iam +description: + function: 모의 계정 역할 조회 정보를 조회합니다. + when_to_use: 계정 역할 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 계정 역할 조회 정보를 조회합니다. +example_queries: ["계정 역할 조회 정보를 보여줘", "계정 역할 조회을 확인해줘", "현재 계정 역할 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + environment: {type: string, description: 조회할 환경명} + additionalProperties: false +tags: [iam, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/iam/iam_account_status.yml b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_account_status.yml new file mode 100644 index 00000000..a51022b4 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_account_status.yml @@ -0,0 +1,22 @@ +name: iam_account_status +display_name: 계정 상태 조회 +version: 1.0.0 +category_key: iam +description: + function: 모의 계정 상태 조회 정보를 조회합니다. + when_to_use: 계정 상태 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 계정 상태 조회 정보를 조회합니다. +example_queries: ["계정 상태 조회 정보를 보여줘", "계정 상태 조회을 확인해줘", "현재 계정 상태 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + environment: {type: string, description: 조회할 환경명} + additionalProperties: false +tags: [iam, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/iam/iam_approval_authority.yml b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_approval_authority.yml new file mode 100644 index 00000000..e7ccf38d --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_approval_authority.yml @@ -0,0 +1,22 @@ +name: iam_approval_authority +display_name: 결재 권한 조회 +version: 1.0.0 +category_key: iam +description: + function: 모의 결재 권한 조회 정보를 조회합니다. + when_to_use: 결재 권한 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 결재 권한 조회 정보를 조회합니다. +example_queries: ["결재 권한 조회 정보를 보여줘", "결재 권한 조회을 확인해줘", "현재 결재 권한 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + environment: {type: string, description: 조회할 환경명} + additionalProperties: false +tags: [iam, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/iam/iam_authentication_method.yml b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_authentication_method.yml new file mode 100644 index 00000000..5a6e1a73 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_authentication_method.yml @@ -0,0 +1,22 @@ +name: iam_authentication_method +display_name: 인증 수단 조회 +version: 1.0.0 +category_key: iam +description: + function: 모의 인증 수단 조회 정보를 조회합니다. + when_to_use: 인증 수단 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 인증 수단 조회 정보를 조회합니다. +example_queries: ["인증 수단 조회 정보를 보여줘", "인증 수단 조회을 확인해줘", "현재 인증 수단 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + environment: {type: string, description: 조회할 환경명} + additionalProperties: false +tags: [iam, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/iam/iam_delegation_status.yml b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_delegation_status.yml new file mode 100644 index 00000000..e7516661 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_delegation_status.yml @@ -0,0 +1,22 @@ +name: iam_delegation_status +display_name: 권한 위임 상태 조회 +version: 1.0.0 +category_key: iam +description: + function: 모의 권한 위임 상태 조회 정보를 조회합니다. + when_to_use: 권한 위임 상태 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 권한 위임 상태 조회 정보를 조회합니다. +example_queries: ["권한 위임 상태 조회 정보를 보여줘", "권한 위임 상태 조회을 확인해줘", "현재 권한 위임 상태 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + environment: {type: string, description: 조회할 환경명} + additionalProperties: false +tags: [iam, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/iam/iam_deployment_version.yml b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_deployment_version.yml new file mode 100644 index 00000000..177a653a --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_deployment_version.yml @@ -0,0 +1,14 @@ +name: iam_deployment_version +display_name: 배포 버전 조회 +version: 1.0.0 +category_key: iam +description: {function: 모의 배포 버전을 조회합니다., when_to_use: 배포 버전 확인이 필요할 때 사용합니다., when_not_to_use: 배포 실행에는 사용하지 않습니다., io_limits: 모의 데이터만 반환합니다.} +display_description: 배포 버전을 조회합니다. +example_queries: ["배포 버전을 보여줘", "현재 버전을 확인해줘", "개발 환경 버전을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: {type: object, properties: {environment: {type: string, description: 조회할 환경명}}, additionalProperties: false} +tags: [iam, 배포, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/iam/iam_environment_info.yml b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_environment_info.yml new file mode 100644 index 00000000..869ca07a --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_environment_info.yml @@ -0,0 +1,14 @@ +name: iam_environment_info +display_name: 환경 정보 조회 +version: 1.0.0 +category_key: iam +description: {function: 모의 환경 정보를 조회합니다., when_to_use: 환경 정보 확인이 필요할 때 사용합니다., when_not_to_use: 환경 변경에는 사용하지 않습니다., io_limits: 모의 데이터만 반환합니다.} +display_description: 환경 정보를 조회합니다. +example_queries: ["환경 정보를 보여줘", "개발 환경을 확인해줘", "현재 환경 정보를 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: {type: object, properties: {environment: {type: string, description: 조회할 환경명}}, additionalProperties: false} +tags: [iam, 환경, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/iam/iam_login_history.yml b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_login_history.yml new file mode 100644 index 00000000..bb34e891 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_login_history.yml @@ -0,0 +1,22 @@ +name: iam_login_history +display_name: 로그인 이력 조회 +version: 1.0.0 +category_key: iam +description: + function: 모의 로그인 이력 조회 정보를 조회합니다. + when_to_use: 로그인 이력 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 로그인 이력 조회 정보를 조회합니다. +example_queries: ["로그인 이력 조회 정보를 보여줘", "로그인 이력 조회을 확인해줘", "현재 로그인 이력 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + environment: {type: string, description: 조회할 환경명} + additionalProperties: false +tags: [iam, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/iam/iam_menu_access.yml b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_menu_access.yml new file mode 100644 index 00000000..000d1526 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_menu_access.yml @@ -0,0 +1,22 @@ +name: iam_menu_access +display_name: 메뉴 접근 권한 조회 +version: 1.0.0 +category_key: iam +description: + function: 모의 메뉴 접근 권한 조회 정보를 조회합니다. + when_to_use: 메뉴 접근 권한 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 메뉴 접근 권한 조회 정보를 조회합니다. +example_queries: ["메뉴 접근 권한 조회 정보를 보여줘", "메뉴 접근 권한 조회을 확인해줘", "현재 메뉴 접근 권한 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + environment: {type: string, description: 조회할 환경명} + additionalProperties: false +tags: [iam, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/iam/iam_mfa_status.yml b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_mfa_status.yml new file mode 100644 index 00000000..847558e1 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_mfa_status.yml @@ -0,0 +1,22 @@ +name: iam_mfa_status +display_name: 다중 인증 상태 조회 +version: 1.0.0 +category_key: iam +description: + function: 모의 다중 인증 상태 조회 정보를 조회합니다. + when_to_use: 다중 인증 상태 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 다중 인증 상태 조회 정보를 조회합니다. +example_queries: ["다중 인증 상태 조회 정보를 보여줘", "다중 인증 상태 조회을 확인해줘", "현재 다중 인증 상태 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + environment: {type: string, description: 조회할 환경명} + additionalProperties: false +tags: [iam, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/iam/iam_permission_list.yml b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_permission_list.yml new file mode 100644 index 00000000..5d65079f --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_permission_list.yml @@ -0,0 +1,22 @@ +name: iam_permission_list +display_name: 권한 목록 조회 +version: 1.0.0 +category_key: iam +description: + function: 모의 권한 목록 조회 정보를 조회합니다. + when_to_use: 권한 목록 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 권한 목록 조회 정보를 조회합니다. +example_queries: ["권한 목록 조회 정보를 보여줘", "권한 목록 조회을 확인해줘", "현재 권한 목록 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + environment: {type: string, description: 조회할 환경명} + additionalProperties: false +tags: [iam, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/iam/iam_resource_access.yml b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_resource_access.yml new file mode 100644 index 00000000..6d6f3206 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_resource_access.yml @@ -0,0 +1,22 @@ +name: iam_resource_access +display_name: 자원 접근 권한 조회 +version: 1.0.0 +category_key: iam +description: + function: 모의 자원 접근 권한 조회 정보를 조회합니다. + when_to_use: 자원 접근 권한 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 자원 접근 권한 조회 정보를 조회합니다. +example_queries: ["자원 접근 권한 조회 정보를 보여줘", "자원 접근 권한 조회을 확인해줘", "현재 자원 접근 권한 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + environment: {type: string, description: 조회할 환경명} + additionalProperties: false +tags: [iam, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/iam/iam_role_list.yml b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_role_list.yml new file mode 100644 index 00000000..fbc6df02 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_role_list.yml @@ -0,0 +1,22 @@ +name: iam_role_list +display_name: 역할 목록 조회 +version: 1.0.0 +category_key: iam +description: + function: 모의 역할 목록 조회 정보를 조회합니다. + when_to_use: 역할 목록 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 역할 목록 조회 정보를 조회합니다. +example_queries: ["역할 목록 조회 정보를 보여줘", "역할 목록 조회을 확인해줘", "현재 역할 목록 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + environment: {type: string, description: 조회할 환경명} + additionalProperties: false +tags: [iam, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/iam/iam_service_health.yml b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_service_health.yml new file mode 100644 index 00000000..63b66bb7 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_service_health.yml @@ -0,0 +1,14 @@ +name: iam_service_health +display_name: 서비스 상태 조회 +version: 1.0.0 +category_key: iam +description: {function: 모의 서비스 상태를 조회합니다., when_to_use: 서비스 상태 확인이 필요할 때 사용합니다., when_not_to_use: 서비스 변경에는 사용하지 않습니다., io_limits: 모의 데이터만 반환합니다.} +display_description: 서비스 상태를 조회합니다. +example_queries: ["서비스 상태를 보여줘", "서비스가 정상인가요?", "개발 서비스 상태를 확인해줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: {type: object, properties: {environment: {type: string, description: 조회할 환경명}}, additionalProperties: false} +tags: [iam, 서비스, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/iam/iam_session_list.yml b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_session_list.yml new file mode 100644 index 00000000..8d5b714f --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_session_list.yml @@ -0,0 +1,22 @@ +name: iam_session_list +display_name: 세션 목록 조회 +version: 1.0.0 +category_key: iam +description: + function: 모의 세션 목록 조회 정보를 조회합니다. + when_to_use: 세션 목록 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 세션 목록 조회 정보를 조회합니다. +example_queries: ["세션 목록 조회 정보를 보여줘", "세션 목록 조회을 확인해줘", "현재 세션 목록 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + environment: {type: string, description: 조회할 환경명} + additionalProperties: false +tags: [iam, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/iam/iam_session_status.yml b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_session_status.yml new file mode 100644 index 00000000..c3770c0b --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_session_status.yml @@ -0,0 +1,22 @@ +name: iam_session_status +display_name: 세션 상태 조회 +version: 1.0.0 +category_key: iam +description: + function: 모의 세션 상태 조회 정보를 조회합니다. + when_to_use: 세션 상태 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 세션 상태 조회 정보를 조회합니다. +example_queries: ["세션 상태 조회 정보를 보여줘", "세션 상태 조회을 확인해줘", "현재 세션 상태 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + environment: {type: string, description: 조회할 환경명} + additionalProperties: false +tags: [iam, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/iam/iam_system_status.yml b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_system_status.yml new file mode 100644 index 00000000..7458201a --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_system_status.yml @@ -0,0 +1,14 @@ +name: iam_system_status +display_name: 시스템 상태 조회 +version: 1.0.0 +category_key: iam +description: {function: 모의 시스템 상태를 조회합니다., when_to_use: 시스템 상태 확인이 필요할 때 사용합니다., when_not_to_use: 시스템 변경에는 사용하지 않습니다., io_limits: 모의 데이터만 반환합니다.} +display_description: 시스템 상태를 조회합니다. +example_queries: ["시스템 상태를 보여줘", "개발 환경 상태를 확인해줘", "현재 서비스가 정상인가요?"] +read_only: true +destructive: false +idempotent: true +parameters_schema: {type: object, properties: {environment: {type: string, description: 조회할 환경명}}, additionalProperties: false} +tags: [iam, 상태, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/iam/iam_trusted_device_list.yml b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_trusted_device_list.yml new file mode 100644 index 00000000..2de62b26 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/iam/iam_trusted_device_list.yml @@ -0,0 +1,22 @@ +name: iam_trusted_device_list +display_name: 신뢰 기기 목록 조회 +version: 1.0.0 +category_key: iam +description: + function: 모의 신뢰 기기 목록 조회 정보를 조회합니다. + when_to_use: 신뢰 기기 목록 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 신뢰 기기 목록 조회 정보를 조회합니다. +example_queries: ["신뢰 기기 목록 조회 정보를 보여줘", "신뢰 기기 목록 조회을 확인해줘", "현재 신뢰 기기 목록 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + environment: {type: string, description: 조회할 환경명} + additionalProperties: false +tags: [iam, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/pct/pct_alert_list.yml b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_alert_list.yml new file mode 100644 index 00000000..b6110f38 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_alert_list.yml @@ -0,0 +1,14 @@ +name: pct_alert_list +display_name: 알림 목록 조회 +version: 1.0.0 +category_key: pct +description: {function: 모의 알림 목록을 조회합니다., when_to_use: 알림 확인이 필요할 때 사용합니다., when_not_to_use: 알림 변경에는 사용하지 않습니다., io_limits: 모의 데이터만 반환합니다.} +display_description: 알림 목록을 조회합니다. +example_queries: ["알림 목록을 보여줘", "현재 알림을 알려줘", "점검 알림이 있나요?"] +read_only: true +destructive: false +idempotent: true +parameters_schema: {type: object, properties: {category: {type: string, description: 조회할 공지 분류}}, additionalProperties: false} +tags: [pct, 알림, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/pct/pct_maintenance_contact.yml b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_maintenance_contact.yml new file mode 100644 index 00000000..d850181e --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_maintenance_contact.yml @@ -0,0 +1,22 @@ +name: pct_maintenance_contact +display_name: 점검 담당자 조회 +version: 1.0.0 +category_key: pct +description: + function: 모의 점검 담당자 조회 정보를 조회합니다. + when_to_use: 점검 담당자 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 점검 담당자 조회 정보를 조회합니다. +example_queries: ["점검 담당자 조회 정보를 보여줘", "점검 담당자 조회을 확인해줘", "현재 점검 담당자 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + category: {type: string, description: 조회할 공지 분류} + additionalProperties: false +tags: [pct, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/pct/pct_maintenance_history.yml b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_maintenance_history.yml new file mode 100644 index 00000000..9e81742c --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_maintenance_history.yml @@ -0,0 +1,22 @@ +name: pct_maintenance_history +display_name: 점검 이력 조회 +version: 1.0.0 +category_key: pct +description: + function: 모의 점검 이력 조회 정보를 조회합니다. + when_to_use: 점검 이력 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 점검 이력 조회 정보를 조회합니다. +example_queries: ["점검 이력 조회 정보를 보여줘", "점검 이력 조회을 확인해줘", "현재 점검 이력 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + category: {type: string, description: 조회할 공지 분류} + additionalProperties: false +tags: [pct, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/pct/pct_maintenance_result.yml b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_maintenance_result.yml new file mode 100644 index 00000000..e786f1f1 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_maintenance_result.yml @@ -0,0 +1,22 @@ +name: pct_maintenance_result +display_name: 점검 결과 조회 +version: 1.0.0 +category_key: pct +description: + function: 모의 점검 결과 조회 정보를 조회합니다. + when_to_use: 점검 결과 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 점검 결과 조회 정보를 조회합니다. +example_queries: ["점검 결과 조회 정보를 보여줘", "점검 결과 조회을 확인해줘", "현재 점검 결과 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + category: {type: string, description: 조회할 공지 분류} + additionalProperties: false +tags: [pct, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/pct/pct_maintenance_schedule.yml b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_maintenance_schedule.yml new file mode 100644 index 00000000..779ba3a9 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_maintenance_schedule.yml @@ -0,0 +1,14 @@ +name: pct_maintenance_schedule +display_name: 점검 일정 조회 +version: 1.0.0 +category_key: pct +description: {function: 모의 점검 일정을 조회합니다., when_to_use: 점검 일정 확인이 필요할 때 사용합니다., when_not_to_use: 점검 변경에는 사용하지 않습니다., io_limits: 모의 데이터만 반환합니다.} +display_description: 점검 일정을 조회합니다. +example_queries: ["점검 일정을 보여줘", "정기 점검이 언제야?", "이번 주 점검을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: {type: object, properties: {category: {type: string, description: 조회할 공지 분류}}, additionalProperties: false} +tags: [pct, 점검, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/pct/pct_maintenance_scope.yml b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_maintenance_scope.yml new file mode 100644 index 00000000..21df98a6 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_maintenance_scope.yml @@ -0,0 +1,22 @@ +name: pct_maintenance_scope +display_name: 점검 범위 조회 +version: 1.0.0 +category_key: pct +description: + function: 모의 점검 범위 조회 정보를 조회합니다. + when_to_use: 점검 범위 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 점검 범위 조회 정보를 조회합니다. +example_queries: ["점검 범위 조회 정보를 보여줘", "점검 범위 조회을 확인해줘", "현재 점검 범위 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + category: {type: string, description: 조회할 공지 분류} + additionalProperties: false +tags: [pct, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/pct/pct_maintenance_status.yml b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_maintenance_status.yml new file mode 100644 index 00000000..ee9ecf38 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_maintenance_status.yml @@ -0,0 +1,22 @@ +name: pct_maintenance_status +display_name: 점검 진행 상태 조회 +version: 1.0.0 +category_key: pct +description: + function: 모의 점검 진행 상태 조회 정보를 조회합니다. + when_to_use: 점검 진행 상태 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 점검 진행 상태 조회 정보를 조회합니다. +example_queries: ["점검 진행 상태 조회 정보를 보여줘", "점검 진행 상태 조회을 확인해줘", "현재 점검 진행 상태 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + category: {type: string, description: 조회할 공지 분류} + additionalProperties: false +tags: [pct, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/pct/pct_notice_category.yml b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_notice_category.yml new file mode 100644 index 00000000..356de2df --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_notice_category.yml @@ -0,0 +1,22 @@ +name: pct_notice_category +display_name: 공지 분류 조회 +version: 1.0.0 +category_key: pct +description: + function: 모의 공지 분류 조회 정보를 조회합니다. + when_to_use: 공지 분류 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 공지 분류 조회 정보를 조회합니다. +example_queries: ["공지 분류 조회 정보를 보여줘", "공지 분류 조회을 확인해줘", "현재 공지 분류 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + category: {type: string, description: 조회할 공지 분류} + additionalProperties: false +tags: [pct, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/pct/pct_notice_detail.yml b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_notice_detail.yml new file mode 100644 index 00000000..925cf5fa --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_notice_detail.yml @@ -0,0 +1,22 @@ +name: pct_notice_detail +display_name: 공지 상세 조회 +version: 1.0.0 +category_key: pct +description: + function: 모의 공지 상세 조회 정보를 조회합니다. + when_to_use: 공지 상세 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 공지 상세 조회 정보를 조회합니다. +example_queries: ["공지 상세 조회 정보를 보여줘", "공지 상세 조회을 확인해줘", "현재 공지 상세 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + category: {type: string, description: 조회할 공지 분류} + additionalProperties: false +tags: [pct, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/pct/pct_notice_list.yml b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_notice_list.yml new file mode 100644 index 00000000..0141720f --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_notice_list.yml @@ -0,0 +1,14 @@ +name: pct_notice_list +display_name: 시스템 공지 조회 +version: 1.0.0 +category_key: pct +description: {function: 모의 시스템 공지를 조회합니다., when_to_use: 공지 확인이 필요할 때 사용합니다., when_not_to_use: 공지 변경에는 사용하지 않습니다., io_limits: 모의 데이터만 반환합니다.} +display_description: 시스템 공지를 조회합니다. +example_queries: ["시스템 공지를 보여줘", "현재 공지를 알려줘", "개발 공지가 있나요?"] +read_only: true +destructive: false +idempotent: true +parameters_schema: {type: object, properties: {category: {type: string, description: 조회할 공지 분류}}, additionalProperties: false} +tags: [pct, 공지, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/pct/pct_notice_recent.yml b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_notice_recent.yml new file mode 100644 index 00000000..b84c7a70 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_notice_recent.yml @@ -0,0 +1,14 @@ +name: pct_notice_recent +display_name: 최신 공지 조회 +version: 1.0.0 +category_key: pct +description: {function: 모의 최신 공지를 조회합니다., when_to_use: 최신 공지 확인이 필요할 때 사용합니다., when_not_to_use: 공지 변경에는 사용하지 않습니다., io_limits: 모의 조회 데이터만 반환합니다.} +display_description: 최신 공지를 조회합니다. +example_queries: ["최신 공지를 보여줘", "오늘 공지가 있나요?", "최근 시스템 공지를 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: {type: object, properties: {category: {type: string, description: 조회할 공지 분류}}, additionalProperties: false} +tags: [pct, 공지, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/pct/pct_notice_search.yml b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_notice_search.yml new file mode 100644 index 00000000..83b45860 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_notice_search.yml @@ -0,0 +1,14 @@ +name: pct_notice_search +display_name: 공지 검색 조회 +version: 1.0.0 +category_key: pct +description: {function: 모의 공지 검색 결과를 조회합니다., when_to_use: 공지를 검색할 때 사용합니다., when_not_to_use: 공지 변경에는 사용하지 않습니다., io_limits: 모의 조회 데이터만 반환합니다.} +display_description: 공지 검색 결과를 조회합니다. +example_queries: ["점검 공지를 검색해줘", "배포 공지를 찾아줘", "공지 내용을 조회해줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: {type: object, properties: {category: {type: string, description: 조회할 공지 분류}}, additionalProperties: false} +tags: [pct, 공지, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/pct/pct_release_history.yml b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_release_history.yml new file mode 100644 index 00000000..853e1bd1 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_release_history.yml @@ -0,0 +1,22 @@ +name: pct_release_history +display_name: 배포 이력 조회 +version: 1.0.0 +category_key: pct +description: + function: 모의 배포 이력 조회 정보를 조회합니다. + when_to_use: 배포 이력 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 배포 이력 조회 정보를 조회합니다. +example_queries: ["배포 이력 조회 정보를 보여줘", "배포 이력 조회을 확인해줘", "현재 배포 이력 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + category: {type: string, description: 조회할 공지 분류} + additionalProperties: false +tags: [pct, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/pct/pct_release_notice.yml b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_release_notice.yml new file mode 100644 index 00000000..477ac7c9 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_release_notice.yml @@ -0,0 +1,14 @@ +name: pct_release_notice +display_name: 배포 공지 조회 +version: 1.0.0 +category_key: pct +description: {function: 모의 배포 공지를 조회합니다., when_to_use: 배포 공지 확인이 필요할 때 사용합니다., when_not_to_use: 배포 변경에는 사용하지 않습니다., io_limits: 모의 데이터만 반환합니다.} +display_description: 배포 공지를 조회합니다. +example_queries: ["배포 공지를 보여줘", "최근 배포 내용을 알려줘", "개발 배포 공지가 있나요?"] +read_only: true +destructive: false +idempotent: true +parameters_schema: {type: object, properties: {category: {type: string, description: 조회할 공지 분류}}, additionalProperties: false} +tags: [pct, 배포, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/pct/pct_release_schedule.yml b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_release_schedule.yml new file mode 100644 index 00000000..0d66a947 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_release_schedule.yml @@ -0,0 +1,22 @@ +name: pct_release_schedule +display_name: 배포 일정 조회 +version: 1.0.0 +category_key: pct +description: + function: 모의 배포 일정 조회 정보를 조회합니다. + when_to_use: 배포 일정 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 배포 일정 조회 정보를 조회합니다. +example_queries: ["배포 일정 조회 정보를 보여줘", "배포 일정 조회을 확인해줘", "현재 배포 일정 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + category: {type: string, description: 조회할 공지 분류} + additionalProperties: false +tags: [pct, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/pct/pct_release_scope.yml b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_release_scope.yml new file mode 100644 index 00000000..9ede40ac --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_release_scope.yml @@ -0,0 +1,22 @@ +name: pct_release_scope +display_name: 배포 범위 조회 +version: 1.0.0 +category_key: pct +description: + function: 모의 배포 범위 조회 정보를 조회합니다. + when_to_use: 배포 범위 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 배포 범위 조회 정보를 조회합니다. +example_queries: ["배포 범위 조회 정보를 보여줘", "배포 범위 조회을 확인해줘", "현재 배포 범위 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + category: {type: string, description: 조회할 공지 분류} + additionalProperties: false +tags: [pct, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/pct/pct_release_status.yml b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_release_status.yml new file mode 100644 index 00000000..799b8e5e --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_release_status.yml @@ -0,0 +1,22 @@ +name: pct_release_status +display_name: 배포 상태 조회 +version: 1.0.0 +category_key: pct +description: + function: 모의 배포 상태 조회 정보를 조회합니다. + when_to_use: 배포 상태 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 배포 상태 조회 정보를 조회합니다. +example_queries: ["배포 상태 조회 정보를 보여줘", "배포 상태 조회을 확인해줘", "현재 배포 상태 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + category: {type: string, description: 조회할 공지 분류} + additionalProperties: false +tags: [pct, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/main/resources/tool-definitions/pct/pct_release_version.yml b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_release_version.yml new file mode 100644 index 00000000..b742d597 --- /dev/null +++ b/dap-was-sys/src/main/resources/tool-definitions/pct/pct_release_version.yml @@ -0,0 +1,22 @@ +name: pct_release_version +display_name: 배포 버전 조회 +version: 1.0.0 +category_key: pct +description: + function: 모의 배포 버전 조회 정보를 조회합니다. + when_to_use: 배포 버전 조회 확인이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 실행 작업에는 사용하지 않습니다. + io_limits: 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다. +display_description: 배포 버전 조회 정보를 조회합니다. +example_queries: ["배포 버전 조회 정보를 보여줘", "배포 버전 조회을 확인해줘", "현재 배포 버전 조회을 알려줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + category: {type: string, description: 조회할 공지 분류} + additionalProperties: false +tags: [pct, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/biz/iam/usecase/impl/SystemStatusUseCaseImplTest.java b/dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/biz/iam/usecase/impl/SystemStatusUseCaseImplTest.java new file mode 100644 index 00000000..ad881d1f --- /dev/null +++ b/dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/biz/iam/usecase/impl/SystemStatusUseCaseImplTest.java @@ -0,0 +1,22 @@ +package io.shinhanlife.dap.mcc.biz.iam.usecase.impl; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; + +import io.shinhanlife.dap.mcc.biz.iam.dto.SystemStatusRequest; +import io.shinhanlife.dap.mcc.biz.iam.dto.SystemStatusResponse; +import org.junit.jupiter.api.Test; + +class SystemStatusUseCaseImplTest { + + @Test + void returnsHealthyDefaultDevelopmentStatus() { + SystemStatusResponse response = new SystemStatusUseCaseImpl() + .getSystemStatus(new SystemStatusRequest()); + + assertEquals("AX Hub 시스템", response.getSystemName()); + assertEquals("개발", response.getEnvironment()); + assertEquals("정상", response.getStatus()); + assertFalse(response.getCheckedAt().isEmpty()); + } +} diff --git a/dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/biz/pct/usecase/impl/SystemNoticeUseCaseImplTest.java b/dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/biz/pct/usecase/impl/SystemNoticeUseCaseImplTest.java new file mode 100644 index 00000000..2ffa114f --- /dev/null +++ b/dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/biz/pct/usecase/impl/SystemNoticeUseCaseImplTest.java @@ -0,0 +1,21 @@ +package io.shinhanlife.dap.mcc.biz.pct.usecase.impl; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; + +import io.shinhanlife.dap.mcc.biz.pct.dto.SystemNoticeRequest; +import io.shinhanlife.dap.mcc.biz.pct.dto.SystemNoticeResponse; +import org.junit.jupiter.api.Test; + +class SystemNoticeUseCaseImplTest { + + @Test + void returnsSyntheticNotices() { + SystemNoticeResponse response = new SystemNoticeUseCaseImpl() + .getSystemNotices(new SystemNoticeRequest()); + + assertFalse(response.getNotices().isEmpty()); + assertEquals("정기 점검 안내", response.getNotices().get(0).getTitle()); + assertEquals("보통", response.getNotices().get(0).getPriority()); + } +} diff --git a/dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/sys/SystemMockToolResourcesTest.java b/dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/sys/SystemMockToolResourcesTest.java new file mode 100644 index 00000000..8a36b1d5 --- /dev/null +++ b/dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/sys/SystemMockToolResourcesTest.java @@ -0,0 +1,82 @@ +package io.shinhanlife.dap.mcc.sys; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import io.shinhanlife.dap.lib.metadata.ToolDefinition; +import io.shinhanlife.dap.lib.metadata.ToolDefinitionRepository; +import java.io.InputStream; +import org.junit.jupiter.api.Test; +import org.springframework.core.io.DefaultResourceLoader; + +class SystemMockToolResourcesTest { + + private final ObjectMapper objectMapper = new ObjectMapper(); + + @Test + void systemStatusDefinitionIsReadOnlyAndHasValidMockResponse() throws Exception { + ToolDefinition definition = definition("iam_system_status"); + JsonNode response = mockResponse("iam_system_status"); + + assertTrue(definition.readOnly()); + assertFalse(definition.destructive()); + assertTrue(definition.idempotent()); + assertTrue(properties(definition).containsKey("environment")); + assertEquals("SUCCESS", response.path("resultCode").asText()); + JsonNode data = objectMapper.readTree(response.path("data").asText()); + assertTrue(data.hasNonNull("systemName")); + assertTrue(data.hasNonNull("environment")); + assertTrue(data.hasNonNull("status")); + assertTrue(data.hasNonNull("checkedAt")); + } + + @Test + void noticeListDefinitionIsReadOnlyAndHasValidMockResponse() throws Exception { + ToolDefinition definition = definition("pct_notice_list"); + JsonNode response = mockResponse("pct_notice_list"); + + assertTrue(definition.readOnly()); + assertFalse(definition.destructive()); + assertTrue(definition.idempotent()); + assertTrue(properties(definition).containsKey("category")); + assertEquals("SUCCESS", response.path("resultCode").asText()); + JsonNode notices = objectMapper.readTree(response.path("data").asText()).path("notices"); + assertTrue(notices.isArray()); + assertFalse(notices.isEmpty()); + assertTrue(notices.get(0).hasNonNull("title")); + assertTrue(notices.get(0).hasNonNull("priority")); + assertTrue(notices.get(0).hasNonNull("publishedDate")); + } + + @Test + void loadsAllFortyTwoIamAndPctToolDefinitions() { + ToolDefinitionRepository repository = new ToolDefinitionRepository(new ObjectMapper(new YAMLFactory()), + new DefaultResourceLoader(), "classpath*:tool-definitions/**/*.yml"); + + assertEquals(42, repository.findAll().size()); + assertTrue(repository.findAll().values().stream().allMatch(definition -> + "iam".equals(definition.categoryKey()) || "pct".equals(definition.categoryKey()))); + } + + private ToolDefinition definition(String toolName) { + return new ToolDefinitionRepository(new ObjectMapper(new YAMLFactory()), new DefaultResourceLoader(), + "classpath*:tool-definitions/**/*.yml") + .findByName(toolName) + .orElseThrow(); + } + + private JsonNode mockResponse(String toolName) throws Exception { + try (InputStream input = getClass().getResourceAsStream("/mock-responses/" + toolName + ".json")) { + return objectMapper.readTree(input); + } + } + + @SuppressWarnings("unchecked") + private java.util.Map properties(ToolDefinition definition) { + return (java.util.Map) definition.parametersSchema().get("properties"); + } +} diff --git a/docs/superpowers/plans/2026-08-13-dap-was-sys-executable-mock-tools.md b/docs/superpowers/plans/2026-08-13-dap-was-sys-executable-mock-tools.md new file mode 100644 index 00000000..1c1e13ee --- /dev/null +++ b/docs/superpowers/plans/2026-08-13-dap-was-sys-executable-mock-tools.md @@ -0,0 +1,58 @@ +# dap-was-sys Executable Mock Tools Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Expose the two existing system mock definitions as executable MCP tools and REST endpoints. + +**Architecture:** Request DTOs enter `@McpTool` UseCase interfaces and REST controller methods. Spring services return deterministic response DTOs, with no external dependencies. The controller delegates to the UseCases so both interfaces share behavior. + +**Tech Stack:** Spring Boot, Spring AI Community MCP annotations, Lombok, JUnit 5, MockMvc. + +## Global Constraints + +- Tools are read-only, non-destructive, idempotent, and synthetic-only. +- Endpoints are `GET /api/sys/status` and `GET /api/sys/notices`. +- Keep existing YAML and JSON mock resources aligned with response DTO fields. + +--- + +### Task 1: Executable system-status tool + +**Files:** + +- Create: `dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/sys/status/dto/SystemStatusRequest.java` +- Create: `dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/sys/status/dto/SystemStatusResponse.java` +- Create: `dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/sys/status/usecase/SystemStatusUseCase.java` +- Create: `dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/sys/status/usecase/impl/SystemStatusUseCaseImpl.java` +- Test: `dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/sys/status/usecase/impl/SystemStatusUseCaseImplTest.java` + +- [ ] Write a test expecting default `development`, `AX Hub System`, `HEALTHY`, and a nonblank ISO timestamp; run it and observe compilation failure because the types do not exist. +- [ ] Implement request/response DTOs, MCP-annotated `getSystemStatus(SystemStatusRequest)`, and the service returning those literal mock values; rerun the focused test and expect pass. + +### Task 2: Executable notice-list tool + +**Files:** + +- Create: `dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/sys/notice/dto/SystemNoticeRequest.java` +- Create: `dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/sys/notice/dto/SystemNoticeResponse.java` +- Create: `dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/sys/notice/usecase/SystemNoticeUseCase.java` +- Create: `dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/sys/notice/usecase/impl/SystemNoticeUseCaseImpl.java` +- Test: `dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/sys/notice/usecase/impl/SystemNoticeUseCaseImplTest.java` + +- [ ] Write a test expecting at least two notices with title, priority, and published date; run it and observe compilation failure because the types do not exist. +- [ ] Implement the DTOs, MCP-annotated `getSystemNotices(SystemNoticeRequest)`, and service returning deterministic notices; rerun the focused test and expect pass. + +### Task 3: REST adapter + +**Files:** + +- Create: `dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/sys/presentation/SystemMockToolController.java` +- Test: `dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/sys/presentation/SystemMockToolControllerTest.java` + +- [ ] Write MockMvc tests for both GET endpoints using optional query parameters and asserting response fields; run and observe compilation failure because the controller does not exist. +- [ ] Implement a controller that constructs request DTOs, delegates to the UseCases, and returns response DTOs; run `./gradlew.bat :dap-was-sys:test` and expect pass. + +## Plan Self-Review + +- The plan covers executable MCP registration, response DTOs, REST access, and tests for both tool contracts. +- Each runtime response remains synthetic and read-only. diff --git a/docs/superpowers/plans/2026-08-13-dap-was-sys-mock-tools.md b/docs/superpowers/plans/2026-08-13-dap-was-sys-mock-tools.md new file mode 100644 index 00000000..476f5572 --- /dev/null +++ b/docs/superpowers/plans/2026-08-13-dap-was-sys-mock-tools.md @@ -0,0 +1,56 @@ +# dap-was-sys Mock Tools Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Add two read-only system mock tools to `dap-was-sys`, with MCP YAML definitions and deterministic mock JSON responses. + +**Architecture:** YAML definitions under `tool-definitions/sys` describe the tools. Their paired `mock-responses` files provide synthetic data. A resource-based JUnit test verifies the tool names, immutable safety flags, and valid response shape. + +**Tech Stack:** Spring Boot 3, JUnit 5, Jackson, YAML. + +## Global Constraints + +- Create tool resources only in `dap-was-sys`. +- Both tools must be `read_only: true`, `destructive: false`, and `idempotent: true`. +- Do not include personal, customer, credential, or secret data. +- Follow the field layout in `dap-was-cus/src/main/resources/tool-definitions/smp/smp_team_list.yml`. + +--- + +### Task 1: System status mock tool + +**Files:** + +- Create: `dap-was-sys/src/main/resources/tool-definitions/sys/sys_system_status.yml` +- Create: `dap-was-sys/src/main/resources/mock-responses/sys_system_status.json` +- Create: `dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/sys/SystemMockToolResourcesTest.java` + +**Interfaces:** Accepts optional `environment: string`; returns mock `systemName`, `environment`, `status`, and `checkedAt` values. + +- [ ] Write a JUnit test that loads the two classpath resources; asserts tool name `sys_system_status`, `read_only: true`, `destructive: false`, optional `environment`, `resultCode` `SUCCESS`, and all four response fields. +- [ ] Run `./gradlew.bat :dap-was-sys:test --tests io.shinhanlife.dap.mcc.sys.SystemMockToolResourcesTest.systemStatusDefinitionIsReadOnlyAndHasValidMockResponse`; expect failure because both resources are absent. +- [ ] Create the definition with `category_key: sys`, no required environment keys, `additionalProperties: false`, and read-only safety fields. Create a `SUCCESS` mock JSON response whose stringified `data` contains only synthetic status data. +- [ ] Re-run the focused test; expect pass. +- [ ] Commit the task: `git add dap-was-sys/src/main/resources/tool-definitions/sys/sys_system_status.yml dap-was-sys/src/main/resources/mock-responses/sys_system_status.json dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/sys/SystemMockToolResourcesTest.java && git commit -m "feat: add system status mock tool"`. + +### Task 2: System notices mock tool + +**Files:** + +- Create: `dap-was-sys/src/main/resources/tool-definitions/sys/sys_notice_list.yml` +- Create: `dap-was-sys/src/main/resources/mock-responses/sys_notice_list.json` +- Modify: `dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/sys/SystemMockToolResourcesTest.java` + +**Interfaces:** Accepts optional `category: string`; returns a mock array containing notices with `title`, `priority`, and `publishedDate`. + +- [ ] Add a JUnit test that loads both resources; asserts tool name `sys_notice_list`, `read_only: true`, `destructive: false`, optional `category`, `resultCode` `SUCCESS`, and at least one mock notice with all three fields. +- [ ] Run `./gradlew.bat :dap-was-sys:test --tests io.shinhanlife.dap.mcc.sys.SystemMockToolResourcesTest.noticeListDefinitionIsReadOnlyAndHasValidMockResponse`; expect failure because both resources are absent. +- [ ] Create the definition with `category_key: sys`, no required environment keys, `additionalProperties: false`, and read-only safety fields. Create a `SUCCESS` mock JSON response containing only synthetic system notices. +- [ ] Run `./gradlew.bat :dap-was-sys:test`; expect pass. +- [ ] Commit the task: `git add dap-was-sys/src/main/resources/tool-definitions/sys/sys_notice_list.yml dap-was-sys/src/main/resources/mock-responses/sys_notice_list.json dap-was-sys/src/test/java/io/shinhanlife/dap/mcc/sys/SystemMockToolResourcesTest.java && git commit -m "feat: add system notice mock tool"`. + +## Plan Self-Review + +- Spec coverage: Tasks 1 and 2 each add a tool definition and a paired mock response; both enforce read-only behavior. Tests validate resource availability and structure. +- Placeholder scan: No incomplete tasks or unspecified file paths remain. +- Type consistency: Both responses use `resultCode` plus stringified JSON `data`, matching the existing mock-response convention.