From a64422424d9e0b19f41e3c4d722676b418217838 Mon Sep 17 00:00:00 2001 From: GerHerMo Date: Tue, 23 Sep 2025 12:25:37 +0900 Subject: [PATCH 01/12] feat: gemini yml add --- .claude/settings.local.json | 12 ++++++++++++ .gitignore | 3 +++ src/main/resources/application.yml | 5 ++++- 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 .claude/settings.local.json diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 00000000..c3a56b0c --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,12 @@ +{ + "permissions": { + "allow": [ + "Bash(tree:*)", + "Read(/G:\\ProjectFile\\DevCourse\\TeamPj\\Final Project\\src\\main\\java\\com\\back/**)", + "Read(/G:\\ProjectFile\\DevCourse\\TeamPj\\Final Project\\src\\main\\java\\com\\back/**)", + "Read(/G:\\ProjectFile\\DevCourse\\TeamPj\\Final Project\\src\\main\\java\\com\\back\\domain/**)" + ], + "deny": [], + "ask": [] + } +} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 791b46b9..f0d96189 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,6 @@ db_dev.trace.db ### Environment Variables ### .env +### Claude AI ### +CLAUDE.md + diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 75bc07f9..93d35a51 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -65,7 +65,10 @@ server: enabled: true force: true - +gemini: + api: + key: ${GEMINI_API_KEY} + model-name: "gemini-1.5-flash-latest" custom: jwt: From 56548e94902add890f084f8cdb93e6a5615fcae4 Mon Sep 17 00:00:00 2001 From: GerHerMo Date: Tue, 23 Sep 2025 12:42:17 +0900 Subject: [PATCH 02/12] feat: add chatbot entity --- build.gradle.kts | 1 + .../chatbot/entity/ChatConversation.java | 38 +++++++++++++++++++ src/main/resources/application.yml | 1 + 3 files changed, 40 insertions(+) create mode 100644 src/main/java/com/back/domain/chatbot/entity/ChatConversation.java diff --git a/build.gradle.kts b/build.gradle.kts index e3ef2cd4..e67e9233 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -28,6 +28,7 @@ dependencies { implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation("org.springframework.boot:spring-boot-starter-validation") implementation("org.springframework.boot:spring-boot-starter-web") + implementation("org.springframework.boot:spring-boot-starter-webflux") implementation("io.github.cdimascio:java-dotenv:5.2.2") implementation("org.springframework.boot:spring-boot-starter-security") implementation("org.springframework.boot:spring-boot-starter-oauth2-client") diff --git a/src/main/java/com/back/domain/chatbot/entity/ChatConversation.java b/src/main/java/com/back/domain/chatbot/entity/ChatConversation.java new file mode 100644 index 00000000..1274010b --- /dev/null +++ b/src/main/java/com/back/domain/chatbot/entity/ChatConversation.java @@ -0,0 +1,38 @@ +package com.back.domain.chatbot.entity; + +import jakarta.persistence.*; +import lombok.*; + +import java.time.LocalDateTime; + +import static jakarta.persistence.GenerationType.IDENTITY; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@ToString +@Entity +public class ChatConversation { + @Id + @GeneratedValue(strategy = IDENTITY) + private Long id; + + private Long userId; + + @Column(columnDefinition = "TEXT") + private String userMessage; + + @Column(columnDefinition = "TEXT") + private String botResponse; + + private String sessionId; + + private LocalDateTime createdAt; + + @PrePersist + protected void onCreate() { + createdAt = LocalDateTime.now(); + } +} \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 93d35a51..947be02f 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -69,6 +69,7 @@ gemini: api: key: ${GEMINI_API_KEY} model-name: "gemini-1.5-flash-latest" + url: "https://generativelanguage.googleapis.com/v1beta/models"Ye custom: jwt: From bff45bafc37d3196fd9a29fd8b666387d67646a8 Mon Sep 17 00:00:00 2001 From: GerHerMo Date: Tue, 23 Sep 2025 12:43:54 +0900 Subject: [PATCH 03/12] feat: add chat double DTO --- .../domain/chatbot/dto/ChatRequestDto.java | 19 ++++++++++++++ .../domain/chatbot/dto/ChatResponseDto.java | 25 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 src/main/java/com/back/domain/chatbot/dto/ChatRequestDto.java create mode 100644 src/main/java/com/back/domain/chatbot/dto/ChatResponseDto.java diff --git a/src/main/java/com/back/domain/chatbot/dto/ChatRequestDto.java b/src/main/java/com/back/domain/chatbot/dto/ChatRequestDto.java new file mode 100644 index 00000000..9b840dfb --- /dev/null +++ b/src/main/java/com/back/domain/chatbot/dto/ChatRequestDto.java @@ -0,0 +1,19 @@ +package com.back.domain.chatbot.dto; + +import jakarta.validation.constraints.NotBlank; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class ChatRequestDto { + + @NotBlank(message = "메시지는 필수입니다.") + private String message; + + private String sessionId; + + private Long userId; +} \ No newline at end of file diff --git a/src/main/java/com/back/domain/chatbot/dto/ChatResponseDto.java b/src/main/java/com/back/domain/chatbot/dto/ChatResponseDto.java new file mode 100644 index 00000000..c2203e7c --- /dev/null +++ b/src/main/java/com/back/domain/chatbot/dto/ChatResponseDto.java @@ -0,0 +1,25 @@ +package com.back.domain.chatbot.dto; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.time.LocalDateTime; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class ChatResponseDto { + + private String response; + private String sessionId; + private LocalDateTime timestamp; + + public ChatResponseDto(String response, String sessionId) { + this.response = response; + this.sessionId = sessionId; + this.timestamp = LocalDateTime.now(); + } +} \ No newline at end of file From 191c211b80bc8e64897b068efb446887186561ee Mon Sep 17 00:00:00 2001 From: GerHerMo Date: Tue, 23 Sep 2025 12:45:11 +0900 Subject: [PATCH 04/12] feat: add gemini doubel DTO --- .../domain/chatbot/dto/GeminiRequestDto.java | 37 +++++++++++++++++ .../domain/chatbot/dto/GeminiResponseDto.java | 41 +++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 src/main/java/com/back/domain/chatbot/dto/GeminiRequestDto.java create mode 100644 src/main/java/com/back/domain/chatbot/dto/GeminiResponseDto.java diff --git a/src/main/java/com/back/domain/chatbot/dto/GeminiRequestDto.java b/src/main/java/com/back/domain/chatbot/dto/GeminiRequestDto.java new file mode 100644 index 00000000..2b22892e --- /dev/null +++ b/src/main/java/com/back/domain/chatbot/dto/GeminiRequestDto.java @@ -0,0 +1,37 @@ +package com.back.domain.chatbot.dto; + +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class GeminiRequestDto { + + private List contents; + + @Getter + @Setter + public static class Content { + private List parts; + + public Content(String text) { + this.parts = List.of(new Part(text)); + } + } + + @Getter + @Setter + public static class Part { + private String text; + + public Part(String text) { + this.text = text; + } + } + + public GeminiRequestDto(String message) { + this.contents = List.of(new Content(message)); + } +} \ No newline at end of file diff --git a/src/main/java/com/back/domain/chatbot/dto/GeminiResponseDto.java b/src/main/java/com/back/domain/chatbot/dto/GeminiResponseDto.java new file mode 100644 index 00000000..c239ccfd --- /dev/null +++ b/src/main/java/com/back/domain/chatbot/dto/GeminiResponseDto.java @@ -0,0 +1,41 @@ +package com.back.domain.chatbot.dto; + +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class GeminiResponseDto { + + private List candidates; + + @Getter + @Setter + public static class Candidate { + private Content content; + } + + @Getter + @Setter + public static class Content { + private List parts; + } + + @Getter + @Setter + public static class Part { + private String text; + } + + public String getGeneratedText() { + if (candidates != null && !candidates.isEmpty() && + candidates.get(0).content != null && + candidates.get(0).content.parts != null && + !candidates.get(0).content.parts.isEmpty()) { + return candidates.get(0).content.parts.get(0).text; + } + return "응답을 생성할 수 없습니다."; + } +} \ No newline at end of file From db3d5200eccfe05c646a30be8c1d87f0e0cc18d2 Mon Sep 17 00:00:00 2001 From: GerHerMo Date: Tue, 23 Sep 2025 12:46:04 +0900 Subject: [PATCH 05/12] feat: chatbot Repository --- .../ChatConversationRepository.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/main/java/com/back/domain/chatbot/repository/ChatConversationRepository.java diff --git a/src/main/java/com/back/domain/chatbot/repository/ChatConversationRepository.java b/src/main/java/com/back/domain/chatbot/repository/ChatConversationRepository.java new file mode 100644 index 00000000..cb139bea --- /dev/null +++ b/src/main/java/com/back/domain/chatbot/repository/ChatConversationRepository.java @@ -0,0 +1,19 @@ +package com.back.domain.chatbot.repository; + +import com.back.domain.chatbot.entity.ChatConversation; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface ChatConversationRepository extends JpaRepository { + + List findBySessionIdOrderByCreatedAtAsc(String sessionId); + + Page findByUserIdOrderByCreatedAtDesc(Long userId, Pageable pageable); + + List findByUserIdAndSessionIdOrderByCreatedAtAsc(Long userId, String sessionId); +} \ No newline at end of file From 89f95c9056ba9d8454af0480c5e08cac0c7b4800 Mon Sep 17 00:00:00 2001 From: GerHerMo Date: Tue, 23 Sep 2025 12:50:01 +0900 Subject: [PATCH 06/12] feat: add Gemini config on Global --- .../back/global/appConfig/GeminiConfig.java | 21 +++++++++++++++++++ src/main/resources/application.yml | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/back/global/appConfig/GeminiConfig.java diff --git a/src/main/java/com/back/global/appConfig/GeminiConfig.java b/src/main/java/com/back/global/appConfig/GeminiConfig.java new file mode 100644 index 00000000..e0e5eb84 --- /dev/null +++ b/src/main/java/com/back/global/appConfig/GeminiConfig.java @@ -0,0 +1,21 @@ +package com.back.global.appConfig; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.reactive.function.client.WebClient; + +@Configuration +public class GeminiConfig { + + @Value("${gemini.api.url:https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent}") + private String geminiApiUrl; + + @Bean + public WebClient geminiWebClient() { + return WebClient.builder() + .baseUrl(geminiApiUrl) + .defaultHeader("Content-Type", "application/json") + .build(); + } +} \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 947be02f..020dcd2f 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -69,7 +69,7 @@ gemini: api: key: ${GEMINI_API_KEY} model-name: "gemini-1.5-flash-latest" - url: "https://generativelanguage.googleapis.com/v1beta/models"Ye + url: "https://generativelanguage.googleapis.com/v1beta/models" custom: jwt: From 9c0751438a75cc83bd201fee356499f3625f06cd Mon Sep 17 00:00:00 2001 From: GerHerMo Date: Tue, 23 Sep 2025 14:00:59 +0900 Subject: [PATCH 07/12] feat: add Geminiservice --- .../chatbot/service/GeminiApiService.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/main/java/com/back/domain/chatbot/service/GeminiApiService.java diff --git a/src/main/java/com/back/domain/chatbot/service/GeminiApiService.java b/src/main/java/com/back/domain/chatbot/service/GeminiApiService.java new file mode 100644 index 00000000..160e93fa --- /dev/null +++ b/src/main/java/com/back/domain/chatbot/service/GeminiApiService.java @@ -0,0 +1,34 @@ +package com.back.domain.chatbot.service; + +import com.back.domain.chatbot.dto.GeminiRequestDto; +import com.back.domain.chatbot.dto.GeminiResponseDto; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Mono; + +@Service +@RequiredArgsConstructor +@Slf4j +public class GeminiApiService { + + private final WebClient geminiWebClient; + + @Value("${gemini.api.key}") + private String apiKey; + + public Mono generateResponse(String userMessage) { + GeminiRequestDto requestDto = new GeminiRequestDto(userMessage); + + return geminiWebClient.post() + .uri("?key=" + apiKey) + .bodyValue(requestDto) + .retrieve() + .bodyToMono(GeminiResponseDto.class) + .map(GeminiResponseDto::getGeneratedText) + .doOnError(error -> log.error("Gemini API 호출 실패: ", error)) + .onErrorReturn("죄송합니다. 현재 응답을 생성할 수 없습니다. 잠시 후 다시 시도해주세요."); + } +} \ No newline at end of file From 9080fd961f02142c073c22521c94b74b0aa21d42 Mon Sep 17 00:00:00 2001 From: GerHerMo Date: Tue, 23 Sep 2025 14:01:31 +0900 Subject: [PATCH 08/12] feat: add chatbot service --- .../chatbot/service/ChatbotService.java | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 src/main/java/com/back/domain/chatbot/service/ChatbotService.java diff --git a/src/main/java/com/back/domain/chatbot/service/ChatbotService.java b/src/main/java/com/back/domain/chatbot/service/ChatbotService.java new file mode 100644 index 00000000..b4308104 --- /dev/null +++ b/src/main/java/com/back/domain/chatbot/service/ChatbotService.java @@ -0,0 +1,85 @@ +package com.back.domain.chatbot.service; + +import com.back.domain.chatbot.dto.ChatRequestDto; +import com.back.domain.chatbot.dto.ChatResponseDto; +import com.back.domain.chatbot.entity.ChatConversation; +import com.back.domain.chatbot.repository.ChatConversationRepository; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.UUID; + +@Service +@RequiredArgsConstructor +@Slf4j +public class ChatbotService { + + private final GeminiApiService geminiApiService; + private final ChatConversationRepository chatConversationRepository; + + @Transactional + public ChatResponseDto sendMessage(ChatRequestDto requestDto) { + String sessionId = requestDto.getSessionId(); + if (sessionId == null || sessionId.isEmpty()) { + sessionId = UUID.randomUUID().toString(); + } + + try { + String contextualMessage = buildContextualMessage(requestDto.getMessage(), sessionId); + + String botResponse = geminiApiService.generateResponse(contextualMessage).block(); + + ChatConversation conversation = ChatConversation.builder() + .userId(requestDto.getUserId()) + .userMessage(requestDto.getMessage()) + .botResponse(botResponse) + .sessionId(sessionId) + .build(); + + chatConversationRepository.save(conversation); + + return new ChatResponseDto(botResponse, sessionId); + + } catch (Exception e) { + log.error("채팅 응답 생성 중 오류 발생: ", e); + return new ChatResponseDto("죄송합니다. 오류가 발생했습니다. 다시 시도해주세요.", sessionId); + } + } + + private String buildContextualMessage(String userMessage, String sessionId) { + List recentConversations = chatConversationRepository + .findBySessionIdOrderByCreatedAtAsc(sessionId); + + if (recentConversations.isEmpty()) { + return "당신은 칵테일 전문 챗봇입니다. 칵테일에 관련된 질문에 친근하고 도움이 되는 답변을 해주세요. 질문: " + userMessage; + } + + StringBuilder contextBuilder = new StringBuilder(); + contextBuilder.append("당신은 칵테일 전문 챗봇입니다. 다음은 이전 대화 내용입니다:\n\n"); + + int maxHistory = Math.min(recentConversations.size(), 5); + for (int i = Math.max(0, recentConversations.size() - maxHistory); i < recentConversations.size(); i++) { + ChatConversation conv = recentConversations.get(i); + contextBuilder.append("사용자: ").append(conv.getUserMessage()).append("\n"); + contextBuilder.append("챗봇: ").append(conv.getBotResponse()).append("\n\n"); + } + + contextBuilder.append("새로운 질문: ").append(userMessage); + contextBuilder.append("\n\n이전 대화 맥락을 고려하여 친근하고 도움이 되는 답변을 해주세요."); + + return contextBuilder.toString(); + } + + @Transactional(readOnly = true) + public List getChatHistory(String sessionId) { + return chatConversationRepository.findBySessionIdOrderByCreatedAtAsc(sessionId); + } + + @Transactional(readOnly = true) + public List getUserChatHistory(Long userId, String sessionId) { + return chatConversationRepository.findByUserIdAndSessionIdOrderByCreatedAtAsc(userId, sessionId); + } +} \ No newline at end of file From d45803a09fc8446dcd2b64d7f31ad6009dcbb4d8 Mon Sep 17 00:00:00 2001 From: GerHerMo Date: Tue, 23 Sep 2025 14:05:29 +0900 Subject: [PATCH 09/12] feat: add chatbot controller --- .../chatbot/controller/ChatbotController.java | 61 +++++++++++++++++++ .../back/global/appConfig/GeminiConfig.java | 7 ++- 2 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/back/domain/chatbot/controller/ChatbotController.java diff --git a/src/main/java/com/back/domain/chatbot/controller/ChatbotController.java b/src/main/java/com/back/domain/chatbot/controller/ChatbotController.java new file mode 100644 index 00000000..b9e12684 --- /dev/null +++ b/src/main/java/com/back/domain/chatbot/controller/ChatbotController.java @@ -0,0 +1,61 @@ +package com.back.domain.chatbot.controller; + +import com.back.domain.chatbot.dto.ChatRequestDto; +import com.back.domain.chatbot.dto.ChatResponseDto; +import com.back.domain.chatbot.entity.ChatConversation; +import com.back.domain.chatbot.service.ChatbotService; +import com.back.global.rsData.RsData; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/api/chatbot") +@RequiredArgsConstructor +@Slf4j +public class ChatbotController { + + private final ChatbotService chatbotService; + + @PostMapping("/chat") + public ResponseEntity> sendMessage(@Valid @RequestBody ChatRequestDto requestDto) { + try { + ChatResponseDto response = chatbotService.sendMessage(requestDto); + return ResponseEntity.ok(RsData.successOf(response)); + } catch (Exception e) { + log.error("채팅 메시지 처리 중 오류 발생: ", e); + return ResponseEntity.internalServerError() + .body(RsData.failOf("서버 오류가 발생했습니다.")); + } + } + + @GetMapping("/history/{sessionId}") + public ResponseEntity>> getChatHistory(@PathVariable String sessionId) { + try { + List history = chatbotService.getChatHistory(sessionId); + return ResponseEntity.ok(RsData.successOf(history)); + } catch (Exception e) { + log.error("채팅 기록 조회 중 오류 발생: ", e); + return ResponseEntity.internalServerError() + .body(RsData.failOf("서버 오류가 발생했습니다.")); + } + } + + @GetMapping("/history/user/{userId}/session/{sessionId}") + public ResponseEntity>> getUserChatHistory( + @PathVariable Long userId, + @PathVariable String sessionId) { + try { + List history = chatbotService.getUserChatHistory(userId, sessionId); + return ResponseEntity.ok(RsData.successOf(history)); + } catch (Exception e) { + log.error("사용자 채팅 기록 조회 중 오류 발생: ", e); + return ResponseEntity.internalServerError() + .body(RsData.failOf("서버 오류가 발생했습니다.")); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/back/global/appConfig/GeminiConfig.java b/src/main/java/com/back/global/appConfig/GeminiConfig.java index e0e5eb84..9695ed7b 100644 --- a/src/main/java/com/back/global/appConfig/GeminiConfig.java +++ b/src/main/java/com/back/global/appConfig/GeminiConfig.java @@ -8,13 +8,16 @@ @Configuration public class GeminiConfig { - @Value("${gemini.api.url:https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent}") + @Value("${gemini.api.url}") private String geminiApiUrl; + @Value("${gemini.api.model-name}") + private String modelName; + @Bean public WebClient geminiWebClient() { return WebClient.builder() - .baseUrl(geminiApiUrl) + .baseUrl(geminiApiUrl + "/" + modelName + ":generateContent") .defaultHeader("Content-Type", "application/json") .build(); } From 554919fd7bc71c6af8543cc379e6862cd1326cce Mon Sep 17 00:00:00 2001 From: GerHerMo Date: Tue, 23 Sep 2025 14:29:52 +0900 Subject: [PATCH 10/12] feat: chatbot endpoint permitAll --- src/main/java/com/back/global/security/SecurityConfig.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/back/global/security/SecurityConfig.java b/src/main/java/com/back/global/security/SecurityConfig.java index dc469757..a81c0e24 100644 --- a/src/main/java/com/back/global/security/SecurityConfig.java +++ b/src/main/java/com/back/global/security/SecurityConfig.java @@ -47,6 +47,7 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { .requestMatchers("/swagger-ui/**", "/api-docs/**").permitAll() .requestMatchers("/api/user/**").permitAll() .requestMatchers("/api/cocktail/**").permitAll() + .requestMatchers("/api/chatbot/**").permitAll() // 회원 or 인증된 사용자만 가능 From ebb957d0d98655b1c5c772a40dfeecfeb6b8d2e0 Mon Sep 17 00:00:00 2001 From: GerHerMo Date: Tue, 23 Sep 2025 14:43:19 +0900 Subject: [PATCH 11/12] feat: ignore add --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index f0d96189..5551411e 100644 --- a/.gitignore +++ b/.gitignore @@ -45,4 +45,4 @@ db_dev.trace.db ### Claude AI ### CLAUDE.md - +.claude/ From f0092d8217d7aa6287fdd57e1c11825c0a103cc6 Mon Sep 17 00:00:00 2001 From: GerHerMo <138726125+GerHerMo@users.noreply.github.com> Date: Tue, 23 Sep 2025 14:44:42 +0900 Subject: [PATCH 12/12] fix: Delete .claude directory --- .claude/settings.local.json | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 .claude/settings.local.json diff --git a/.claude/settings.local.json b/.claude/settings.local.json deleted file mode 100644 index c3a56b0c..00000000 --- a/.claude/settings.local.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "permissions": { - "allow": [ - "Bash(tree:*)", - "Read(/G:\\ProjectFile\\DevCourse\\TeamPj\\Final Project\\src\\main\\java\\com\\back/**)", - "Read(/G:\\ProjectFile\\DevCourse\\TeamPj\\Final Project\\src\\main\\java\\com\\back/**)", - "Read(/G:\\ProjectFile\\DevCourse\\TeamPj\\Final Project\\src\\main\\java\\com\\back\\domain/**)" - ], - "deny": [], - "ask": [] - } -} \ No newline at end of file