From 784d00d61c60a56373ed27b142f1001d3787870d Mon Sep 17 00:00:00 2001 From: jade Date: Tue, 18 Aug 2026 21:25:23 +0900 Subject: [PATCH] feat(was-sys): add TeamContactUseCase with branching logic --- .../mcc/biz/iam/dto/TeamContactRequest.java | 10 ++++++ .../biz/iam/usecase/TeamContactUseCase.java | 12 +++++++ .../usecase/impl/TeamContactUseCaseImpl.java | 33 +++++++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/dto/TeamContactRequest.java create mode 100644 dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/TeamContactUseCase.java create mode 100644 dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/impl/TeamContactUseCaseImpl.java diff --git a/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/dto/TeamContactRequest.java b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/dto/TeamContactRequest.java new file mode 100644 index 000000000..a3db3a106 --- /dev/null +++ b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/dto/TeamContactRequest.java @@ -0,0 +1,10 @@ +package io.shinhanlife.dap.mcc.biz.iam.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class TeamContactRequest { + @Schema(description = "조회할 대상 (예: 전체, AX 추진팀, MCP 팀, TOOL 팀, 담당자)", defaultValue = "전체") + private String target; +} diff --git a/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/TeamContactUseCase.java b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/TeamContactUseCase.java new file mode 100644 index 000000000..557747d94 --- /dev/null +++ b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/TeamContactUseCase.java @@ -0,0 +1,12 @@ +package io.shinhanlife.dap.mcc.biz.iam.usecase; + +import io.shinhanlife.dap.lib.annotation.GrowToolHint; +import io.shinhanlife.dap.mcc.biz.iam.dto.TeamContactRequest; +import org.springaicommunity.mcp.annotation.McpTool; + +public interface TeamContactUseCase { + + @McpTool(name = "iam_team_contact", title = "팀 연락처 및 담당자 조회", description = "AX 팀, MCP 팀, TOOL 팀 등 특정 팀이나 전체 팀의 인원 및 담당자 정보를 조회합니다. 대상을 입력하여 원하는 정보만 필터링하여 받을 수 있습니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "iam", mappingId = "DIRECT_IAM_TEAM_CONTACT") + String getTeamContactInfo(TeamContactRequest request); +} diff --git a/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/impl/TeamContactUseCaseImpl.java b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/impl/TeamContactUseCaseImpl.java new file mode 100644 index 000000000..f72e169e0 --- /dev/null +++ b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/biz/iam/usecase/impl/TeamContactUseCaseImpl.java @@ -0,0 +1,33 @@ +package io.shinhanlife.dap.mcc.biz.iam.usecase.impl; + +import io.shinhanlife.dap.mcc.biz.iam.dto.TeamContactRequest; +import io.shinhanlife.dap.mcc.biz.iam.usecase.TeamContactUseCase; +import org.springframework.stereotype.Service; + +@Service +public class TeamContactUseCaseImpl implements TeamContactUseCase { + + @Override + public String getTeamContactInfo(TeamContactRequest request) { + String target = request != null && request.getTarget() != null ? request.getTarget() : "전체"; + + if (target.contains("AX") || target.contains("추진")) { + return "- AX 추진팀: 박세진 프로\n"; + } else if (target.contains("이사") || target.contains("담당자") || target.contains("윤희준")) { + return "- MCP & TOOL 팀 담당자: 윤희준 이사\n"; + } else if (target.contains("MCP")) { + return "- MCP 팀: 고석민 수석, 장효원 책임\n"; + } else if (target.contains("TOOL") || target.contains("툴")) { + return "- TOOL 팀: 김형식 수석, 김영진 책임, 김도겸 대리, 이주희 선임, 문주현 선임, 이보람 대리, 박수빈 대리\n"; + } else { + return "=================================================\n" + + "[ 신한라이프 AX HUB 팀 전체 인원 안내 ]\n" + + "=================================================\n" + + "- AX 추진팀: 박세진 프로\n" + + "- MCP & TOOL 팀 담당자: 윤희준 이사\n" + + "- MCP 팀: 고석민 수석, 장효원 책임\n" + + "- TOOL 팀: 김형식 수석, 김영진 책임, 김도겸 대리, 이주희 선임, 문주현 선임, 이보람 대리, 박수빈 대리\n" + + "================================================="; + } + } +}