- 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>
1.9 KiB
1.9 KiB
type, tags, last_updated
| type | tags | last_updated | |||||
|---|---|---|---|---|---|---|---|
| workflow |
|
2026-04-06 |
slack_thread_summary_request 워크플로우
목적
Slack 메시지에서 "요약/정리/digest/summary" 의도를 감지하면, skill-slack의 요약 API를 호출하여 결과를 반환한다.
현행 아키텍처
v2 메시지 흐름(IntentClassifier → executor)을 통해 처리된다. n8n Trigger, 별도 webhook은 사용하지 않는다.
흐름
사용자 발화 ("스레드 요약해줘", "대화 정리해줘")
→ message_service_v2.route_message()
→ IntentClassifier.classify()
— SKILL.md 본문에서 skill-slack 트리거 매칭
— IntentResult(skill="skill-slack", action="slack_thread", slots=...)
→ executor.execute()
— registry에서 SKILL_SLACK_URL 환경변수 해소
— POST {SKILL_SLACK_URL}/api/v1/summarize (httpx)
→ _format_as_robeing() — 결과를 자연어로 변환
→ 채널 응답
주요 코드 경로
| 단계 | 코드 |
|---|---|
| 진입 | app/services/message_service_v2.py:route_message() |
| 의도분류 | app/services/brain/intent_classifier.py:IntentClassifier.classify() |
| 스킬 실행 | app/services/skills/executor.py:execute() |
| URL 해소 | app/services/skills/registry.py:SkillMeta.resolve_url() |
| 스킬 정의 | DOCS/skills/skill-slack/SKILL.md (트리거: slack_thread) |
엔드포인트
- 아웃바운드:
POST {SKILL_SLACK_URL}/api/v1/summarize— skill-slack 서비스 SKILL_SLACK_URL환경변수로 해소. IP 하드코딩 없음
관련 문서
- message_flow_v2.md — v2 메시지 흐름
- slack_action_extractor_request.md — 액션 추출 (같은 skill-slack)
- skill-slack SKILL.md — 스킬 계약