feat: add additional iam and pct tools
All checks were successful
Deploy to OCIWP / deploy (push) Successful in 6m31s

This commit is contained in:
jade
2026-08-13 23:54:26 +09:00
parent 58960af817
commit dfaeae7e01
21 changed files with 225 additions and 1 deletions

View File

@@ -26,4 +26,20 @@ public interface SystemStatusUseCase {
@McpTool(name = "iam_session_status", title = "세션 상태 조회", description = "모의 세션 상태를 조회합니다.") @McpTool(name = "iam_session_status", title = "세션 상태 조회", description = "모의 세션 상태를 조회합니다.")
@GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_SESSION_STATUS") @GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_SESSION_STATUS")
SystemStatusResponse getSessionStatus(SystemStatusRequest request); SystemStatusResponse getSessionStatus(SystemStatusRequest request);
@McpTool(name = "iam_identity_provider_list", title = "인증 제공자 목록 조회", description = "모의 인증 제공자 목록을 조회합니다.")
@GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_IDENTITY_PROVIDER_LIST")
SystemStatusResponse getIdentityProviderList(SystemStatusRequest request);
@McpTool(name = "iam_security_event_list", title = "보안 이벤트 목록 조회", description = "모의 보안 이벤트 목록을 조회합니다.")
@GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_SECURITY_EVENT_LIST")
SystemStatusResponse getSecurityEventList(SystemStatusRequest request);
@McpTool(name = "iam_privilege_change_history", title = "권한 변경 이력 조회", description = "모의 권한 변경 이력을 조회합니다.")
@GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_PRIVILEGE_CHANGE_HISTORY")
SystemStatusResponse getPrivilegeChangeHistory(SystemStatusRequest request);
@McpTool(name = "iam_user_group_list", title = "사용자 그룹 목록 조회", description = "모의 사용자 그룹 목록을 조회합니다.")
@GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_USER_GROUP_LIST")
SystemStatusResponse getUserGroupList(SystemStatusRequest request);
} }

View File

@@ -13,6 +13,10 @@ public class SystemStatusUseCaseImpl implements SystemStatusUseCase {
@Override public SystemStatusResponse getDeploymentVersion(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 getAccessPolicy(SystemStatusRequest request) { return getSystemStatus(request); }
@Override public SystemStatusResponse getSessionStatus(SystemStatusRequest request) { return getSystemStatus(request); } @Override public SystemStatusResponse getSessionStatus(SystemStatusRequest request) { return getSystemStatus(request); }
@Override public SystemStatusResponse getIdentityProviderList(SystemStatusRequest request) { return getSystemStatus(request); }
@Override public SystemStatusResponse getSecurityEventList(SystemStatusRequest request) { return getSystemStatus(request); }
@Override public SystemStatusResponse getPrivilegeChangeHistory(SystemStatusRequest request) { return getSystemStatus(request); }
@Override public SystemStatusResponse getUserGroupList(SystemStatusRequest request) { return getSystemStatus(request); }
@Override @Override
public SystemStatusResponse getSystemStatus(SystemStatusRequest request) { public SystemStatusResponse getSystemStatus(SystemStatusRequest request) {
SystemStatusResponse response = new SystemStatusResponse(); SystemStatusResponse response = new SystemStatusResponse();

View File

@@ -29,4 +29,20 @@ public interface SystemNoticeUseCase {
@McpTool(name = "pct_notice_category", title = "공지 분류 조회", description = "모의 공지 분류 정보를 조회합니다.") @McpTool(name = "pct_notice_category", title = "공지 분류 조회", description = "모의 공지 분류 정보를 조회합니다.")
@GrowToolHint(requiresApproval = false, categoryKey = "pct", mappingId = "DIRECT_PCT_NOTICE_CATEGORY") @GrowToolHint(requiresApproval = false, categoryKey = "pct", mappingId = "DIRECT_PCT_NOTICE_CATEGORY")
SystemNoticeResponse getNoticeCategory(SystemNoticeRequest request); SystemNoticeResponse getNoticeCategory(SystemNoticeRequest request);
@McpTool(name = "pct_incident_list", title = "장애 목록 조회", description = "모의 장애 목록을 조회합니다.")
@GrowToolHint(requiresApproval = false, categoryKey = "pct", mappingId = "DIRECT_PCT_INCIDENT_LIST")
SystemNoticeResponse getIncidentList(SystemNoticeRequest request);
@McpTool(name = "pct_change_request_list", title = "변경 요청 목록 조회", description = "모의 변경 요청 목록을 조회합니다.")
@GrowToolHint(requiresApproval = false, categoryKey = "pct", mappingId = "DIRECT_PCT_CHANGE_REQUEST_LIST")
SystemNoticeResponse getChangeRequestList(SystemNoticeRequest request);
@McpTool(name = "pct_operation_calendar", title = "운영 일정 조회", description = "모의 운영 일정을 조회합니다.")
@GrowToolHint(requiresApproval = false, categoryKey = "pct", mappingId = "DIRECT_PCT_OPERATION_CALENDAR")
SystemNoticeResponse getOperationCalendar(SystemNoticeRequest request);
@McpTool(name = "pct_service_request_status", title = "서비스 요청 상태 조회", description = "모의 서비스 요청 상태를 조회합니다.")
@GrowToolHint(requiresApproval = false, categoryKey = "pct", mappingId = "DIRECT_PCT_SERVICE_REQUEST_STATUS")
SystemNoticeResponse getServiceRequestStatus(SystemNoticeRequest request);
} }

View File

@@ -14,6 +14,10 @@ public class SystemNoticeUseCaseImpl implements SystemNoticeUseCase {
@Override public SystemNoticeResponse getAlertList(SystemNoticeRequest request) { return mockResponse(); } @Override public SystemNoticeResponse getAlertList(SystemNoticeRequest request) { return mockResponse(); }
@Override public SystemNoticeResponse getNoticeDetail(SystemNoticeRequest request) { return mockResponse(); } @Override public SystemNoticeResponse getNoticeDetail(SystemNoticeRequest request) { return mockResponse(); }
@Override public SystemNoticeResponse getNoticeCategory(SystemNoticeRequest request) { return mockResponse(); } @Override public SystemNoticeResponse getNoticeCategory(SystemNoticeRequest request) { return mockResponse(); }
@Override public SystemNoticeResponse getIncidentList(SystemNoticeRequest request) { return mockResponse(); }
@Override public SystemNoticeResponse getChangeRequestList(SystemNoticeRequest request) { return mockResponse(); }
@Override public SystemNoticeResponse getOperationCalendar(SystemNoticeRequest request) { return mockResponse(); }
@Override public SystemNoticeResponse getServiceRequestStatus(SystemNoticeRequest request) { return mockResponse(); }
private SystemNoticeResponse mockResponse() { private SystemNoticeResponse mockResponse() {
SystemNoticeResponse.Notice notice = new SystemNoticeResponse.Notice(); SystemNoticeResponse.Notice notice = new SystemNoticeResponse.Notice();

View File

@@ -0,0 +1 @@
{"resultCode":"SUCCESS","data":"{\"toolName\":\"iam_identity_provider_list\",\"title\":\"인증 제공자 목록 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\",\"checkedAt\":\"2026-08-13T09:00:00+09:00\"}"}

View File

@@ -0,0 +1 @@
{"resultCode":"SUCCESS","data":"{\"toolName\":\"iam_privilege_change_history\",\"title\":\"권한 변경 이력 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\",\"checkedAt\":\"2026-08-13T09:00:00+09:00\"}"}

View File

@@ -0,0 +1 @@
{"resultCode":"SUCCESS","data":"{\"toolName\":\"iam_security_event_list\",\"title\":\"보안 이벤트 목록 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\",\"checkedAt\":\"2026-08-13T09:00:00+09:00\"}"}

View File

@@ -0,0 +1 @@
{"resultCode":"SUCCESS","data":"{\"toolName\":\"iam_user_group_list\",\"title\":\"사용자 그룹 목록 조회\",\"systemName\":\"AX Hub IAM\",\"environment\":\"개발\",\"status\":\"정상\",\"checkedAt\":\"2026-08-13T09:00:00+09:00\"}"}

View File

@@ -0,0 +1 @@
{"resultCode":"SUCCESS","data":"{\"toolName\":\"pct_change_request_list\",\"title\":\"변경 요청 목록 조회\",\"notices\":[{\"title\":\"변경 요청 목록 조회\",\"priority\":\"보통\",\"publishedDate\":\"2026-08-13\"}]}"}

View File

@@ -0,0 +1 @@
{"resultCode":"SUCCESS","data":"{\"toolName\":\"pct_incident_list\",\"title\":\"장애 목록 조회\",\"notices\":[{\"title\":\"장애 목록 조회\",\"priority\":\"보통\",\"publishedDate\":\"2026-08-13\"}]}"}

View File

@@ -0,0 +1 @@
{"resultCode":"SUCCESS","data":"{\"toolName\":\"pct_operation_calendar\",\"title\":\"운영 일정 조회\",\"notices\":[{\"title\":\"운영 일정 조회\",\"priority\":\"보통\",\"publishedDate\":\"2026-08-13\"}]}"}

View File

@@ -0,0 +1 @@
{"resultCode":"SUCCESS","data":"{\"toolName\":\"pct_service_request_status\",\"title\":\"서비스 요청 상태 조회\",\"notices\":[{\"title\":\"서비스 요청 상태 조회\",\"priority\":\"보통\",\"publishedDate\":\"2026-08-13\"}]}"}

View File

@@ -0,0 +1,22 @@
name: iam_identity_provider_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

View File

@@ -0,0 +1,22 @@
name: iam_privilege_change_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

View File

@@ -0,0 +1,22 @@
name: iam_security_event_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

View File

@@ -0,0 +1,22 @@
name: iam_user_group_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

View File

@@ -0,0 +1,22 @@
name: pct_change_request_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

View File

@@ -0,0 +1,22 @@
name: pct_incident_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

View File

@@ -0,0 +1,22 @@
name: pct_operation_calendar
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

View File

@@ -0,0 +1,22 @@
name: pct_service_request_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

View File

@@ -57,7 +57,7 @@ class SystemMockToolResourcesTest {
ToolDefinitionRepository repository = new ToolDefinitionRepository(new ObjectMapper(new YAMLFactory()), ToolDefinitionRepository repository = new ToolDefinitionRepository(new ObjectMapper(new YAMLFactory()),
new DefaultResourceLoader(), "classpath*:tool-definitions/**/*.yml"); new DefaultResourceLoader(), "classpath*:tool-definitions/**/*.yml");
assertEquals(42, repository.findAll().size()); assertEquals(50, repository.findAll().size());
assertTrue(repository.findAll().values().stream().allMatch(definition -> assertTrue(repository.findAll().values().stream().allMatch(definition ->
"iam".equals(definition.categoryKey()) || "pct".equals(definition.categoryKey()))); "iam".equals(definition.categoryKey()) || "pct".equals(definition.categoryKey())));
} }