From 0277f0539b5eae03c6bd8a12f614ab3ba19d7c81 Mon Sep 17 00:00:00 2001 From: kappa Date: Tue, 27 Jan 2026 11:59:44 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20Reset=20session=20when=20user=20says=20"?= =?UTF-8?q?=EC=84=9C=EB=B2=84=20=EC=B6=94=EC=B2=9C"=20during=20active=20se?= =?UTF-8?q?ssion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When user requests server recommendation while in an existing session (e.g., selecting state), reset the session and start fresh instead of continuing the old session context. Co-Authored-By: Claude Opus 4.5 --- src/server-agent.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/server-agent.ts b/src/server-agent.ts index 9c21daf..f7f683d 100644 --- a/src/server-agent.ts +++ b/src/server-agent.ts @@ -507,6 +507,26 @@ export async function processServerConsultation( return '상담이 취소되었습니다. 다시 시작하려면 "서버 추천"이라고 말씀해주세요.'; } + // "서버 추천" 키워드로 새로 시작 요청 (기존 세션 리셋) + if (/서버\s*추천/.test(userMessage)) { + await deleteServerSession(env.SESSION_KV, session.telegramUserId); + logger.info('서버 추천 키워드로 세션 리셋', { + userId: session.telegramUserId, + previousStatus: session.status + }); + // 새 세션 생성하고 시작 메시지 반환 + const newSession: ServerSession = { + telegramUserId: session.telegramUserId, + status: 'gathering', + collectedInfo: {}, + messages: [], + createdAt: Date.now(), + updatedAt: Date.now() + }; + await saveServerSession(env.SESSION_KV, session.telegramUserId, newSession); + return '안녕하세요! 서버 추천을 도와드리겠습니다. 😊\n\n어떤 서비스를 운영하실 건가요?\n예: 블로그, 쇼핑몰, 커뮤니티, API 서버 등'; + } + // 선택 단계 처리 if (session.status === 'selecting' && session.lastRecommendation) { const selectionMatch = userMessage.match(/(\d+)(?:번|번째)?|첫\s*번째|두\s*번째|세\s*번째/);