DOCS/workflow/02_skills/skill_calendar_request.md
happybell80 9cb0145a4e docs: 01_conversation + 02_skills 워크플로우 문서 현행화 — n8n 제거, SKILL.md+executor 기준 재작성
- coldmail_ir_notification_sync: LangGraph+APScheduler 기반으로 전면 재작성
- slack_action_extractor_request: v2 IntentClassifier→executor 흐름 기준 재작성
- slack_thread_summary_request: 동일
- message_flow_v2: _format_as_robeing() 해석 단계 보완
- skill_calendar/email/news_request: SKILL.md→executor 직접 호출 기준 재작성
- skill_slack_send_message_bridge: slack_sdk 직접 호출 + skill-slack HTTP 이중 경로 기술
- slack_direct_api_send: grounding 개선 사항 반영

Refs: DOCS#8

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 07:57:58 +09:00

65 lines
2.2 KiB
Markdown

---
type: workflow
tags: [workflow, skill-calendar, calendar, executor, intent]
last_updated: 2026-04-06
---
# skill_calendar_request 워크플로우
## 목적
캘린더 스킬 요청 처리. 일정 생성(create), 조회(list/get), 삭제(delete)를 SKILL.md 기반 executor를 통해 skill-calendar 서비스로 전달한다.
## 현행 아키텍처
- **의도분류**: IntentClassifier가 SKILL.md 본문으로 `skill-calendar` 매칭
- **실행**: executor가 `SKILL_CALENDAR_URL` 환경변수에서 URL 해소 후 HTTP 호출
- **메서드 결정**: SKILL.md frontmatter `endpoints`가 action별 HTTP 메서드(GET/POST/DELETE)와 경로를 정의
n8n webhook 브릿지는 사용하지 않는다.
## 흐름
```
사용자 발화 ("내일 2시 미팅 잡아줘")
-> IntentClassifier.classify()
-- IntentResult(skill="skill-calendar", action="create_event", endpoint="/api/events", slots={...})
-> executor.execute()
-- registry.resolve_url() -> SKILL_CALENDAR_URL 환경변수
-- registry.resolve_method("create_event") -> POST (SKILL.md frontmatter)
-- POST {SKILL_CALENDAR_URL}/api/events (httpx, X-User-Id 헤더)
-> _format_as_robeing() -> 응답
```
## SKILL.md 엔드포인트 정의
| action | 메서드 | 경로 |
|--------|--------|------|
| `create_event` | POST | `/api/events` |
| `list_events` | GET | `/api/events` |
| `get_events` | GET | `/api/events` |
| `delete_event` | DELETE | `/api/events/{event_id}` |
경로 파라미터(`{event_id}`)는 executor가 params에서 자동 보간한다.
## 주요 코드 경로
| 단계 | 코드 |
|------|------|
| 스킬 정의 | `DOCS/skills/skill-calendar/SKILL.md` |
| 의도분류 | `app/services/brain/intent_classifier.py` |
| 실행 | `app/services/skills/executor.py:execute()` |
| URL/메서드 해소 | `app/services/skills/registry.py:SkillMeta` |
## 환경변수
| 변수 | 용도 |
|------|------|
| `SKILL_CALENDAR_URL` | skill-calendar 서비스 베이스 URL |
## 관련 문서
- [skill-calendar SKILL.md](/home/admin/robeing/DOCS/skills/skill-calendar/SKILL.md) -- 스킬 계약
- [skill_email_send_request.md](./skill_email_send_request.md)
- [message_flow_v2.md](../01_conversation/message_flow_v2.md) -- v2 메시지 흐름