From 0b9a6dd4a03cb90f82fecd9b3ad05618c2e5049c Mon Sep 17 00:00:00 2001 From: Claude-51124 Date: Sat, 15 Nov 2025 11:35:08 +0900 Subject: [PATCH] docs: record calendar delete intent tests --- ...1114_admin_dynamic_intent_runtime_tests.md | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/troubleshooting/251114_admin_dynamic_intent_runtime_tests.md b/troubleshooting/251114_admin_dynamic_intent_runtime_tests.md index cad51da..2549dff 100644 --- a/troubleshooting/251114_admin_dynamic_intent_runtime_tests.md +++ b/troubleshooting/251114_admin_dynamic_intent_runtime_tests.md @@ -72,3 +72,24 @@ 1. **부분 임베딩 자동화 필요**: 기존 prototypes가 존재하면 새로운 intent는 직접 벡터를 넣어야 하므로, 향후 SemanticIntentClassifier가 누락된 항목만 재임베딩하도록 개선 필요. 2. **슬롯 정보 부족 문제**: “슬랙 메시지 대신 보내줄래?” 처럼 대상/메시지 내용이 없는 경우 응답이 종료되므로, intent 보강과 함께 후속 질문 로직이 필요. +--- + +## 2025-11-15 13:20 - calendar_delete 의도 및 CRUD 검증 +- **추가 의도**: `calendar_delete` (DB + intent_registry.yaml 모두 등록, description 기반 임베딩 저장) +- **신규 저장소**: `calendar_event_log` 테이블을 런타임 초기화하여 최근 일정(event_id, title, start_time)을 기록/삭제 +- **코드 변경** + - `app/state/calendar_event_repository.py`: 일정 로그 CRUD + 매칭 함수 + - `calendar_handler.py`: create 성공 시 로그 적재, delete 요청 시 날짜/시간/“방금” 표현을 파싱해 event_id 역추적 후 skill-calendar DELETE 호출 + - `decision_engine`, `router`, `message_router`, `calendar_skill`: `calendar_delete` intent → `delete_event` 액션까지 연결 +- **대화 시나리오 테스트 (`/api/test/router-message`)** + 1. “11월 30일 오후 3시 15분 강남역에서 고객 미팅 잡아줘” → confirm 템플릿 + 2. “좋아 등록해줘” → 실제 구글 캘린더 생성 (`skill-calendar POST /api/events`) + 3. “3시 15분 일정 삭제해줘” → `calendar_delete` 감지, event_id 역추적 → `skill-calendar DELETE /api/events/{id}` 성공 +- **검증** + - skill-calendar 로그: `Deleted event ...` 기록 + HTTP 200 + - `GET /api/events?start_date=2025-11-30T00:00:00Z&end_date=2025-12-01T23:59:59Z` → `count: 0` 확인 +- **교훈** + 1. 자연어 삭제를 지원하려면 event_id 매핑 저장소가 필수이며, create 시점에 메타데이터를 반드시 남겨야 한다. + 2. 날짜/시간이 불완전한 문장은 최근 일정 fallback이 있어야 UX가 자연스럽다. + 3. intent/skill wiring 완료 후에도 `/api/test/router-message`와 skill 서비스 API를 함께 확인해야 CRUD 전체가 보장된다. +