happybell80 2d1503921d docs: 콜드메일 리스트 현황 기록, OCR fallback 자동 동작 명시
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 11:01:50 +09:00

105 lines
4.1 KiB
Markdown

---
name: skill-slack
description: Slack 대화 요약, 스레드 다이제스트, 액션 아이템 추출. 사용자가 "스레드 요약해줘", "대화 정리해줘", "할 일만 뽑아줘" 등 Slack 관련 요청을 할 때 사용.
---
# 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 리스트 접근 불가)