From 5dc9572210b0783df35acb9f829c452a19210a70 Mon Sep 17 00:00:00 2001 From: devmrko Date: Mon, 27 Jul 2026 14:54:10 +0900 Subject: [PATCH] allow plan context when optional scope view unavailable --- .../cloudhandson/vpdbackoffice/service/GameScopeService.java | 4 ++++ .../cloudhandson/vpdbackoffice/service/SelectAiService.java | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/vpd-backoffice/src/main/java/com/cloudhandson/vpdbackoffice/service/GameScopeService.java b/vpd-backoffice/src/main/java/com/cloudhandson/vpdbackoffice/service/GameScopeService.java index 04eee90..42645c2 100644 --- a/vpd-backoffice/src/main/java/com/cloudhandson/vpdbackoffice/service/GameScopeService.java +++ b/vpd-backoffice/src/main/java/com/cloudhandson/vpdbackoffice/service/GameScopeService.java @@ -99,6 +99,10 @@ public class GameScopeService { return new GameScopeResult(normalizedQuestion, status, scopes); } + public boolean configured() { + return gameScopeProperties != null && gameScopeProperties.configured(); + } + /** * Returns true when a generated SQL references a DB-declared game-prefix * object. Prefixes are read from the configured scope view; no game or table diff --git a/vpd-backoffice/src/main/java/com/cloudhandson/vpdbackoffice/service/SelectAiService.java b/vpd-backoffice/src/main/java/com/cloudhandson/vpdbackoffice/service/SelectAiService.java index 659fac8..387e7b8 100644 --- a/vpd-backoffice/src/main/java/com/cloudhandson/vpdbackoffice/service/SelectAiService.java +++ b/vpd-backoffice/src/main/java/com/cloudhandson/vpdbackoffice/service/SelectAiService.java @@ -141,8 +141,8 @@ public class SelectAiService { if (requestedKey.isEmpty()) { return new ResolvedExecutionScope(originalPrompt, null, null); } - if (gameScopeService == null) { - throw new AppException("게임 범위 검증 서비스를 사용할 수 없습니다."); + if (gameScopeService == null || !gameScopeService.configured()) { + return new ResolvedExecutionScope(originalPrompt, requestedKey, null); } GameScopeService.GameScope scope = gameScopeService.resolve(bearerToken, originalPrompt).scopes().stream() .filter(item -> requestedKey.equals(item.gameKey()))