소개
시도하고자 했던 것과 그 이유
매일 반복되는 어르신 상담 업무의 효율을 높이기 위해 '전화상담서비스 자동화 시스템' 개발을 시작했습니다. 기존 방식은 Gem으로 리포트를 작성하고, 관리자시스템에 복사해서 붙이는 반자동 방식이었습니다.
목표: 상담 녹취록(STT) 입력 시 AI가 리포트를 생성하고, 관리자 사이트에 자동 입력까지 완료하는 시스템 구축.
이유: 단순 반복 업무를 줄여 상담의 질에 더 집중하기 위함.
현황: Claude Code로 초기 구현을 시도했으나, 관리자 페이지의 보안 및 동적 요소 제어 문제로 인해 Gemini의 방식을 검토해봤습니다.
Claude Code로 개발된 사이트
한국어 웹사이트 스크린샷
진행 방법
도구 및 기술 스택
Claude Code: CLI 기반 에이전트. 터미널에서 직접 코드를 수정하고 실행하는 데 활용.
Gemini 2.5 Flash: 리포트 생성 엔진 및 시스템 아키텍처 가이드.
핵심 라이브러리: Flask(백엔드), Selenium/Playwright(자동화),
google-genai.
핵심 프롬프트 (리포트 생성 엔진)
Plaintext
- 역할: 시니어 케어 전문 리포트 작성 매니저
- 지침: 녹취록을 분석하여 아래 두 항목을 작성할 것.
1. 어르신 한스푼: 직접 인용구를 사용하되 따옴표 제거, 따뜻한 어조.
2. 매니저 한스푼: 관찰 중심의 전문적이고 따뜻한 리포트.
- 제약: 각 800자 이내, 특수기호(", •) 사용 금지.
결과와 배운 점
1. Claude Code vs Gemini: 개발 방식 및 실패 사례 비교
비교 항목
Claude Code (에이전트 구현)
Gemini (구조적 설계)
핵심 도구
claude CLI (터미널 중심)
Gemini API & Blueprint 설계
자동화 도구
Selenium (주로 생성)
Playwright (비동기 처리 권장)
실패 증상
Agentic Loop: 에러 발생 시 유사한 코드를 무한 수정 시도
Implementation Gap: 논리는 완벽하나 코드 이식 필요
로그 메시지
ElementNotInteractableException 발생
세션 유지(Cookie/Session) 전략 부재 경고
접근 철학
Bottom-Up: 즉시 실행하며 오류 수정
Top-Down: 모듈별 역할 분리 및 설계
2. Claude Code의 주요 실패 사례 및 에러 로그
개발 과정에서 Claude Code가 생성한 Selenium 코드는 다음과 같은 기술적 한계에 부딪혔습니다.
에러 1:
ElementNotInteractableException원인: 관리자 페이지의 입력창(
textarea)이 레이어 팝업이나 로딩 애니메이션에 가려져 있을 때 발생.Claude의 대응: 단순히
time.sleep(3)을 추가하거나 셀렉터를 미세하게 조정하는 데 그쳐, 네트워크 상황에 따라 성공과 실패가 반복됨.
에러 2:
TimeoutException및 세션 만료원인: 보안이 강화된 사이트에서 드라이버를 새로 띄울 때마다 로그인을 요구함.
에이전트 루프 현상: Claude Code가 "로그인을 시도합니다" → "실패" → "코드 수정" → "다시 로그인 시도" 과정을 반복하며 API 토큰만 낭비하고 실제 문제(세션 유지)를 해결하지 못함.
3. 시행착오를 통해 얻은 기술적 피드백
Selenium의 한계: 전통적인 Selenium 방식은 동적 웹 요소 대기 로직(
Explicit Wait)을 일일이 수동으로 짜야 하므로 에이전트가 코드를 관리하기에 복잡도가 높습니다.Playwright의 대안: Gemini가 제안한 Playwright는 'Auto-wait' 기능을 제공하여 요소가 상호작용 가능할 때까지 자동으로 기다리므로, 에이전트가 짤 코드가 단순해지고 안정성이 높아집니다.
세션 지속성: 단순히 코드를 짜는 것보다, 브라우저의 쿠키나 컨텍스트를 저장하여 재사용하는 아키텍처 설계가 자동화의 핵심임을 배웠습니다.
앞으로의 계획
Playwright 전환: Gemini의 권고대로 비동기 처리에 강하고 세션 관리가 용이한 Playwright로 전송 로직을 전면 재작성할 예정입니다.
MCP(Model Context Protocol) 도입: Claude Code에 MCP 서버를 연결하여 에이전트가 실제 브라우저 렌더링 화면을 '보고' 디버깅하도록 업그레이드할 계획입니다.
데이터베이스 전환: 현재 텍스트 파일 기반의 데이터 관리를 SQLite로 전환하여 동명이인 처리 및 리포트 이력 관리의 안정성을 높일 예정입니다.