# 📅 카카오톡으로 구글 캘린더를 제어하는 AI 봇 기획하기

- 작성자: [단단한 기록가](https://community.clauders.ai/member/imported-member-oydPoKUSGT)
- 공간: [에이전트 / 노코드 자동화](https://community.clauders.ai/automation)
- 게시: 2025-11-17
- 연재: [카카오톡 업무 봇 개발](https://community.clauders.ai/series/kakao-operations-bot) 1/3편
- 태그: #카톡봇
- 주소: https://community.clauders.ai/automation/post/%EC%B9%B4%EC%B9%B4%EC%98%A4%ED%86%A1%EC%9C%BC%EB%A1%9C-%EA%B5%AC%EA%B8%80-%EC%BA%98%EB%A6%B0%EB%8D%94%EB%A5%BC-%EC%A0%9C%EC%96%B4%ED%95%98%EB%8A%94-ai-%EB%B4%87-%EA%B8%B0%ED%9A%8D%ED%95%98%EA%B8%B0-f957f3f7-5e51-8fde-8d9b-3accfdb4978f

---

### 시도하고자 했던 것과 그 이유

매번 구글 캘린더 앱을 열어서 일정을 확인하거나 추가하는 게 번거로웠습니다.

- "오늘 일정 뭐지?" → 앱 켜기 → 로그인 → 캘린더 확인
- "내일 3시에 미팅 추가해야지" → 앱 켜기 → 날짜 선택 → 시간 입력...

**_"카톡으로 '오늘 일정 보여줘' 한마디면 끝나면 얼마나 좋을까?"_**

이 생각에서 **CaldBot(Calendar Bot)** 프로젝트를 시작했습니다. 카카오톡에서 자연스러운 대화만으로 일정을 조회하고, 추가하고, 수정하고, 삭제할 수 있는 봇을 만들고 싶었어요.

**목표 대화 예시:**

```
나: "오늘 일정 뭐야?"
봇: "📅 2025년 11월 17일 (월) 일정
     • 14:00-16:00 AI 스터디
     • 18:00-19:00 저녁 약속"

나: "내일 오후 3시에 치과 예약 추가해줘"
봇: "✅ 일정이 추가되었습니다."
```

### 1️⃣ 사용한 도구

- **Claude Code**: 설계 문서 작성, 시스템 아키텍처 설계
- **Codex**: 설계 검증, 보안/확장성 리뷰
- **FastAPI: **24/7 시간 구동 가능 서버

### 2️⃣ Claude Code와 Codex 교차검증 프로세스

이번 주는 코드 작성이 아닌,** 탄탄한 설계서**를 만드는 데 집중했어요.

**Step 0: 프로젝트 개요 및 초기 설정**

- 서버 환경 구축
- FastAPI 기본 설치
- Systemd 서비스 등록

**Step 1: 설계서 초안 작성 (Claude Code)**  
먼저 Claude Code에게 프로젝트 전체 구조를 설계하도록 했답니다.

**사용한 프롬프트:**

```
카카오톡으로 구글 캘린더를 제어하는 챗봇을 만들려고 합니다.
다음 요구사항을 포함한 상세 설계 문서(design.md)를 작성해주세요:

1. 프로젝트 개요 및 목표
2. 시스템 아키텍처 (메신저봇R → FastAPI → Google Calendar API)
3. 주요 기능 명세 (일정 조회/추가/수정/삭제)
4. 자연어 처리 흐름 (LLM 활용)
5. 보안 고려사항
6. Phase별 구현 계획

각 섹션마다 구체적인 기술적 결정 사항을 포함해주세요.
```

**결과:**

- `design.md` 파일 생성 (약 500줄 분량)
- 시스템 구조도, API 엔드포인트 설계, Phase별 로드맵까지 포함
- 전체 구조를 시각적으로 명확하게 파악할 수 있었어요

**🔍 Step 2: 설계 검증 (Codex에 리뷰 요청)**

Claude Code가 만든 설계서를 Codex에게 리뷰시켰어요.

**사용한 프롬프트:**

```
[design.md 내용 전체 첨부]

위 설계서를 꼼꼼히 검토하고 다음 관점에서 피드백해주세요:

1. 보안 취약점
2. 확장성 문제
3. 놓친 엣지케이스
4. 더 나은 설계 대안

각 항목마다 구체적인 예시와 개선안을 제시해주세요.
```

**Codex가 지적한 주요 이슈:**

```
🚨 보안 취약점
1. HTTP/HTTPS 혼용 위험
   → 개발 환경에서 HTTP 쓰다가 프로덕션에서도 실수할 수 있음
   → HTTPS를 기본으로, HTTP는 주석 처리

2. Webhook Secret 검증 없음
   → 아무나 서버에 메시지 보낼 수 있음
   → 토큰 검증 필수

⚠️ 확장성 문제
1. 다중 계정 매핑 전략 부재
   → user1/user2 파일만 있고, 누가 어떤 계정 쓸지 매핑 안 됨
   → UserProfile 테이블 필요

2. LLM Fallback 전략 없음
   → LLM API 다운되면 봇 전체 다운
   → Rule-based Fallback 필수

💡 놓친 엣지케이스
1. 대화 상태 관리 없음
   → "그래도 추가할까요?" → "응" (맥락 유지 안 됨)
   → Conversation State 필요

2. 충돌 체크 로직 누락
   → 이미 3시에 일정 있는데 또 추가됨
```

**🔄 Step 3: 설계서 업데이트 및 최종 검증**

여러 차례의 교차 검증 프로세스를 통해 설계서 품질을 크게 높였어요!

**주요 개선사항:**

- ✅ 보안 강화: HTTPS 기본, Webhook Secret, IP 화이트리스트
- ✅ LLM Fallback 전략: LLM 실패 시 Rule-based Parser로 대체
- ✅ 대화 상태 관리: Conversation State (In-Memory → Redis)
- ✅ 다중 계정 매핑: UserProfile 테이블로 sender → calendar_id 매핑
- ✅ 감사 로그: 누가, 언제, 무엇을 했는지 SQLite에 기록
- ✅ 구조화된 로깅: JSON 형식으로 디버깅 용이하게

### 3️⃣ 현재까지의 결과물

**📄 design.md (최종본)**

- 총 약 1,700줄
- 시스템 아키텍처 다이어그램
- API 명세서
- 보안 체크리스트
- Phase별 구현 계획 (Week 1-5)
- 테스트 시나리오
- 예상 이슈 및 해결 방안

**📋 dev-history.md (개발 히스토리)**

- 프로젝트 시작부터 현재까지의 모든 의사결정 기록
- 기술 스택 확정 과정
- 설계 개선 히스토리

## 결과와 배운 점

1️⃣ **AI 교차 검증의 중요성** ⭐⭐⭐

**단 하나의 AI Agent만 사용하는 것은 위험합니다.**

Claude Code만 사용했을 땐,

- 보안 이슈를 놓침 (Webhook Secret 검증 없음)
- 확장성 고려 부족 (다중 계정 매핑 전략 부재)
- 엣지케이스 누락 (대화 상태 관리, LLM Fallback 없음)

**최소 두 개의 AI를 병행하면서 서로의 결과물을 비교 평가하고 피드백을 주고받으면서 결과물의 퀄리티를 높이는 것이 중요합니다.**

**교차 검증 프로세스:**

```
1. Claude Code → 초안 작성
2. Codex → 비판적 리뷰
3. Claude Code → 피드백 반영
4. Codex → 재검증
(필요시 반복)
```

**이렇게 하니까 좋았던 점:**

- 한 AI가 놓친 부분을 다른 AI가 잡아냄
- 서로 다른 관점에서 설계를 바라봄

  - Claude Code: 구조적, 체계적 설계 - 작성자, 설계자, 실무자 역할
  - Codex: 실용적, 비판적 검증 - 감독 및 상사 역할
- 최종 결과물의 완성도가 2배 이상 높아짐

**역할 분담:**

- **Claude Code**: 작성자 (초안 작성, 구조 설계)
- **Codex**: 검증자 (비판, 보완점 제시)
- 이렇게 역할을 나누니까 훨씬 효율적! 👍

**→ 핵심 꿀팁: 지속적인 교차 검증 프로세스를 거쳐 설계 품질을 높여야 향후 불필요한 디버깅을 줄일 수 있습니다!**

2️⃣ **기획서 단계가 80%다**

이번 주는 코드 한 줄 안 짰는데, 오히려 이게 제일 중요한 시간이었어요.

**잘못된 접근 (과거의 나):**

```
"일단 코드부터 짜고 보자!"
→ 나중에 구조 전체를 갈아엎게 됨
→ 3일치 작업이 날아감
```

**올바른 접근 (현재):**

```
1주차: design.md 완성 (교차 검증 포함)
2주차 이후: 단계별 구현
```

**기획서를 탄탄하게 만들면:**

- 코드 작성이 오히려 빠름 (설계서 보고 그대로 구현)
- 버그가 적음 (엣지케이스를 미리 고려)
- 혼자 개발해도 길을 잃지 않음

**→ 꿀팁: 코드 짜기 전에 AI한테 "상세 설계 문서 작성해줘"부터 시키세요! 그리고 반드시 다른 AI로 검증하세요!**

3️⃣ **보안은 나중이 아니라 지금!**

처음엔 "일단 작동만 하게 만들고, 보안은 나중에..." 생각했는데, Codex가 경고했어요:

**Codex의 경고:**

> "개인 캘린더 데이터는 민감 정보입니다. 나중에 보안 추가하려면 코드 전체를 다시 짜야 합니다. 지금 설계에 포함하세요."

**design.md에 포함된 보안 체크리스트:**

- ✅ HTTPS 적용 (프로덕션 필수)
- ✅ Webhook Secret 토큰 검증
- ✅ IP 화이트리스트 (선택)
- ✅ OAuth 토큰 안전 저장 (환경변수)
- ✅ 로그에 민감정보 제외 (토큰 마스킹)

**→ 꿀팁: 개인정보 다루는 프로젝트는 설계 단계부터 보안 체크리스트 필수!**

4️⃣ **Phase별 구현 전략**

모든 기능을 한번에 만들려고 하면 압도당합니다.

**Phase 구분 전략:**

- **Week 1**: 기획 및 설계 (← 현재)
- **Week 2**: 일정 조회만 (MVP)
- **Week 3**: 일정 추가 (LLM 파싱)
- **Week 4**: 일정 수정/삭제
- **Week 5**: 고급 기능 (감사 로그, 구조화된 로깅)

각 Phase마다:

- 작동하는 상태로 완성
- 바로 테스트 가능
- 다음 Phase로 자연스럽게 확장

**→ 꿀팁: 기획서는 탄탄하게, 구현은 단계별로!**

### 🎯 다음에 할 일

**Week 2 계획: Phase 1 구현 (일정 조회)**

- Google Calendar API 연동
- 메신저봇R 연결
- "오늘 일정 보여줘" 작동 확인

**Week 3 이후:**

- 일정 추가 기능 (자연어 파싱)
- 충돌 체크
- 일정 수정/삭제
- 감사 로그 및 구조화된 로깅

## 마치며...

**핵심 메시지:**

1. **AI 교차 검증은 필수!** 최소 2개 이상의 AI로 서로 검증하세요.
2. **기획이 80%** 코드 짜기 전에 탄탄한 설계서부터!
3. **보안은 지금!** 나중으로 미루지 마세요.
4. **Phase별로 구현** 한번에 다 하려고 하지 마세요.

긴 글 읽어주셔서 감사합니다!

`#FastAPI` `#GoogleCalendarAPI` `#메신저봇R` `#ClaudeCode` `#Codex` `#AI교차검증`
