- 전 스킬 SKILL.md에 runtime (kind, service_url_env) frontmatter 추가 - calendar-delete/event/query 3분할 → skill-calendar 단일 스킬로 통합 - general_chat 스킬 신규 추가 - goosefarm-query, skill-translate 머지 충돌 마커 제거 - 용어집 정리 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
108 lines
4.2 KiB
Markdown
108 lines
4.2 KiB
Markdown
---
|
|
name: skill-slack
|
|
description: Slack 대화 요약, 스레드 다이제스트, 액션 아이템 추출. 사용자가 "스레드 요약해줘", "대화 정리해줘", "할 일만 뽑아줘" 등 Slack 관련 요청을 할 때 사용.
|
|
runtime:
|
|
kind: external_http
|
|
service_url_env: SKILL_SLACK_URL
|
|
---
|
|
|
|
# skill-slack
|
|
|
|
Slack 통합 스킬. 포트 8502.
|
|
|
|
## Trigger
|
|
|
|
- `slack_thread`: 스레드 요약, 대화 정리
|
|
- `action_extractor`: 할 일 추출, TODO 리스트, 액션 아이템
|
|
|
|
## Do
|
|
|
|
- Slack 채널/스레드 요약
|
|
- 액션 아이템 자동 추출
|
|
- LLM Gateway 연동 (Gemini)
|
|
|
|
## Do Not
|
|
|
|
- Slack API 토큰 없이 호출 금지
|
|
- 비공개 채널은 권한 확인 후 처리
|
|
|
|
## API
|
|
|
|
- `POST /api/v1/summarize` - 스레드 요약
|
|
- `POST /api/v1/actions` - 액션 아이템 추출
|
|
- `GET /api/v1/lists/{list_id}/items` - 리스트 아이템 조회 (헤더: `X-Team-Id`)
|
|
- `POST /api/v1/lists/items` - 리스트 아이템 생성
|
|
- `POST /api/v1/lists/items/update` - 리스트 아이템 수정
|
|
|
|
## 슬랙 리스트 (컴퍼니엑스 콜드메일)
|
|
|
|
- 워크스페이스: `T09C98KB933` (companyx)
|
|
- 콜드메일 리스트 ID: `F09L4S2C6BG`
|
|
- 채널: `C09LA0D6M1C`
|
|
- 봇 토큰은 DB(`slack_workspace` 테이블)로 관리. 기본 토큰은 컴퍼니엑스.
|
|
- 현재 상태: ✅ 정상 동작 (260320 기본 토큰을 컴퍼니엑스로 전환)
|
|
|
|
### 컬럼 매핑 (DB: `coldmail_list_config`)
|
|
|
|
| 순서 | 컬럼명 | column_id | 타입 | DB 필드 |
|
|
|------|--------|-----------|------|---------|
|
|
| 1 | 회사명 | `Col09L0GMH1DZ` | rich_text | `name_col_id` |
|
|
| 2 | 날짜 | `Col09LAF4ETC4` | date | `date_col_id` |
|
|
| 3 | 로빙평가 | `Col0AMTB4N8AJ` | rich_text | `eval_col_id` |
|
|
| 4 | 대표 | `Col09L6V3U4CA` | rich_text | `contact_col_id` |
|
|
| 5 | 이메일 | `Col09L4SH6YK0` | email | `email_col_id` |
|
|
| 6 | IR deck | `Col09L0GUSEBV` | attachment | `attach_col_id` |
|
|
| 7 | 확인 | `Col09L3F6PBFF` | checkbox | `check_col_id` |
|
|
|
|
### 로빙평가 흐름
|
|
|
|
1. 콜드메일 수신 → IR덱 첨부 → `ir_deck_evaluations` 평가 실행
|
|
2. 평가 결과: `grade` (A/B/C/D) + `total_score`
|
|
3. 슬랙 리스트 "로빙평가" 컬럼에 등급 링크 기록 (rich_text + link)
|
|
- 표시: `B(75)` 형태
|
|
- 클릭 → `https://ro-being.com/ir-valuation/?evaluation_id={eval_id}`
|
|
- 링크 형식: `{"type":"link","url":"https://ro-being.com/ir-valuation/?evaluation_id={eval_id}","text":"B(75)"}`
|
|
4. DB `coldmail_memory_email`에 `evaluation_id`, `document_id`, `ir_deck_path`, `robeing_evaluation` 저장
|
|
|
|
### 평가 결과 페이지 (`ro-being.com/ir-valuation`)
|
|
|
|
- 레포: `frontend-ir-valuation` (Vite + React + TypeScript, 23서버 배포)
|
|
- 직접 접근: `https://ro-being.com/ir-valuation/?evaluation_id={eval_id}`
|
|
- 표시 순서: 1.점수/등급 → 2.종합결론(summary) → 3.장표별 평가(page_evaluations)
|
|
- 백엔드 API: `GET /api/ir-deck/evaluation/{id}` (rb8001)
|
|
|
|
### 평가 결과 DB 구조
|
|
|
|
| 테이블 | 내용 |
|
|
|--------|------|
|
|
| `ir_deck_evaluations` | grade, total_score, summary, story_scores(Sequoia 10가지), investment_opinion |
|
|
| `ir_deck_page_evaluations` | 장표별 page_number, score, strengths[], weaknesses[], page_topic |
|
|
| `coldmail_memory_email` | evaluation_id, document_id, ir_deck_path, robeing_evaluation |
|
|
|
|
### 현황 (260320)
|
|
|
|
- 슬랙 리스트: 57건 (고유 53개 회사), 전건 평가 완료
|
|
- DB(`coldmail_memory_email`): 60건 (테스트 3건 포함), 59건 평가+문서 연결
|
|
- 중복 기업: 에듀온(3), 누리광장(2), 담을거야(2), NAVER(2)
|
|
- OCR fallback 적용: 이미지 기반 PDF도 Gemini 2.0 Flash로 평가 가능
|
|
|
|
### 확인 방법
|
|
|
|
```bash
|
|
# 리스트 조회
|
|
curl -s -H "X-API-Key: skill-slack-api-key-2025" \
|
|
"http://localhost:8502/api/v1/lists/F09L4S2C6BG/items?limit=100"
|
|
|
|
# DB 컬럼 매핑 확인
|
|
psql main_db -c "SELECT * FROM coldmail_list_config WHERE list_id='F09L4S2C6BG';"
|
|
|
|
# DB 콜드메일 데이터 확인
|
|
psql main_db -c "SELECT subject, sender, robeing_evaluation FROM coldmail_memory_email ORDER BY received_at DESC LIMIT 10;"
|
|
```
|
|
|
|
## 환경변수
|
|
|
|
- `GEMINI_API_KEY`, `SKILL_SLACK_API_KEY` (rb8001→skill 호출 시)
|
|
- `SLACK_BOT_TOKEN` — 기본 워크스페이스 토큰
|
|
- `SLACK_TEAM_ID` — 기본 워크스페이스 ID (미설정 시 companyx 리스트 접근 불가)
|