diff --git a/troubleshooting/251114_gmail_calendar_scope_reconnect_guide.md b/troubleshooting/251114_gmail_calendar_scope_reconnect_guide.md index a509ebe..c298d66 100644 --- a/troubleshooting/251114_gmail_calendar_scope_reconnect_guide.md +++ b/troubleshooting/251114_gmail_calendar_scope_reconnect_guide.md @@ -177,6 +177,96 @@ WHERE user_id = '53529291-5050-4daa-89fb-008b546feb63'; --- -**작업 완료**: 문서 작성 -**다음 단계**: auth-server scope 수정 → 사용자 재인증 +--- + +## 7. 테스트 결과 (2025-11-14) + +### Calendar Scope 추가 성공 ✅ +- auth-server에 calendar scope 추가 완료 +- 김종태 계정 Gmail 재인증 완료 +- Google Cloud Console Calendar API 활성화 완료 +- skill-calendar → Google Calendar API 이벤트 생성 성공 + +### Calendar 통합 테스트 결과 ⚠️ + +#### 성공 케이스 (4/10) +- ✅ "11월 30일 오후 2시 서울역에서 클라이언트 **미팅**" → calendar_event 감지됨 +- ✅ "11월 18일 오전 11시 사무실에서 **회의**" → calendar_event 감지됨 +- ✅ skill-calendar API 직접 호출 시 정상 작동 +- ✅ Google Calendar에 실제 이벤트 생성 확인 + +#### 실패 케이스 (6/10) +- ❌ "11월 20일 오후 3시에 팀 미팅" → intent 감지 실패 (LLM으로 우회) +- ❌ "11월 23일 오후 3시 **카페**" → intent 감지 실패 ("카페"는 패턴에 없음) +- ❌ "11월 18일 14시 개발팀 **스프린트**" → intent 감지 실패 ("스프린트"는 패턴에 없음) +- ❌ 승인 응답 ("네", "좋아", "ㅇㅇ") → approval로 변환 안됨 (컨텍스트 비어있음) + +### 근본 원인 분석 + +#### 1. Intent 패턴 부족 +```python +# decision_engine.py의 calendar_event 패턴 +IntentType.CALENDAR_EVENT: [ + r"\d+월\s*\d+일.*(검진|미팅|회의|회식|약속|일정)", # 현재 + # 부족: 카페, 스프린트, 약속, 미팅, 회의, 점심, 저녁, 피팅 등 +] +``` + +**문제**: 일정 키워드가 제한적이라 다양한 표현 감지 못함 +**해결**: 패턴 확장 + LLM fallback 활용 + +#### 2. Recent Conversations 로딩 실패 +``` +[DecisionEngine] 의도 분석 시작: '네' +Loaded 0 recent conversations for user ... +[Approval] 직전 intent 없음 → UNKNOWN +``` + +**문제**: +- PostgreSQL `conversation_log_pk` 중복 키 에러 발생 중 +- 따라서 conversation_log에 저장이 안 되고, 조회도 빈 배열 +- approval 로직은 recent_conversations에 의존하므로 작동 불가 + +**근본 원인**: +- `conversation_log` 테이블의 `id` 시퀀스가 out-of-sync +- 이미 존재하는 id (1149, 1151, 1153 등)를 insert하려고 시도 + +**해결 방안**: +```sql +-- 51123 서버에서 +SELECT MAX(id) FROM conversation_log; -- 현재 최대값 확인 +SELECT nextval('conversation_log_id_seq'); -- 시퀀스 현재값 확인 +-- 시퀀스를 MAX(id) + 1로 재설정 +SELECT setval('conversation_log_id_seq', (SELECT MAX(id) FROM conversation_log) + 1); +``` + +### 개선 사항 + +#### 우선순위 1: DB 시퀀스 수정 (필수) +- 없이는 approval 로직 완전 불능 +- PostgreSQL 시퀀스 재정렬 필요 + +#### 우선순위 2: Intent 패턴 확장 +```python +IntentType.CALENDAR_EVENT: [ + # 기존 + r"\d+월\s*\d+일.*(검진|미팅|회의|회식|약속|일정)", + # 추가 + r"\d+월\s*\d+일.*\d{1,2}시", # 시간만 있으면 일정으로 간주 + r"(내일|모레|다음주).*(시|점심|저녁|미팅|회의|약속)", + r"\d+월\s*\d+일", # 날짜만 있어도 일정 가능성 고려 +] +``` + +#### 우선순위 3: LLM Fallback 강화 +- calendar_confirm이 이미 LLM 기반으로 파싱 수행 +- Intent 감지 실패 시 LLM에게 "일정인가?" 질문 후 calendar_confirm 호출 + +--- + +**작업 완료**: Gmail Calendar 재인증 성공, skill-calendar API 작동 확인 +**다음 단계**: +1. PostgreSQL `conversation_log` 시퀀스 수정 (필수) +2. calendar_event 패턴 확장 (선택) +3. 전체 E2E 재테스트