docs: Slack Lists API 조사 결과 반영 및 완료 처리

- 컬럼 동적 처리 불가능 확인 (API 제약)
- slackLists.items.update 스펙 추가
- 불필요한 "남은 과제" 섹션 제거
- 상태: 완료

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
happybell80 2025-10-10 00:12:14 +09:00
parent 2771b30a6e
commit 404146ebd3

View File

@ -1,9 +1,9 @@
# NAVER WORKS → Slack 연동 [4/5] Slack Lists API skill-slack 통합 실행 계획
## 작성일: 2025-09-30, 수정: 2025-10-04
## 작성일: 2025-09-30, 수정: 2025-10-10
## 작성자: Claude (로컬 개발자)
## 위치: `/home/happybell80/ivada_project/DOCS/troubleshooting/250930_naverworks_slack_04_lists_api_skill_integration.md`
## 상태: 실행 문서 (구현 예정)
## 상태: ✅ 완료
---
@ -51,20 +51,16 @@ skill-slack에 올바른 Lists 엔드포인트 추가 → rb8001은 HTTP로만
## 컬럼 구조 동적 처리 전략
### 문제
- 컬럼은 Slack에서 수동 추가/수정 가능 → 변경 시마다 코드/환경변수 수정 필요
- 컬럼은 Slack에서 수동 추가/수정 가능 → 변경 시마다 코드 수정 필요
### 해결 방안
1. **slackLists.items.list로 컬럼 구조 조회** (권장)
- 응답에서 columns 정보 추출
- 컬럼명(name)으로 column_id 자동 매핑
- 예: "회사명" → Col09ABC123, "담당자" → Col09DEF456
2. **환경변수로 column_id 관리** (수동)
- COLDMAIL_COLUMNS_MAP={"company":"Col09ABC123","contact":"Col09DEF456"}
- 컬럼 변경 시 환경변수 수동 업데이트
### 조사 결과 (2025-10-10)
- `slackLists.items.list` 응답에는 `column_id`만 있고, column name/type 없음
- Slack API에 컬럼 메타데이터 조회 API 없음 (확인: https://docs.slack.dev/reference/methods/)
- **결론**: 컬럼명→column_id 자동 매핑 불가능
### 구현 권장
- skill-slack/services/slack_lists_service.py에 `get_column_mapping(list_id)` 함수 추가
- rb8001은 컬럼명만 전달, skill-slack이 자동 매핑
### 현재 방식 (유지)
- column_id 하드코딩 (rb8001/app/scheduler/jobs/coldmail_briefing.py:188-200)
- 컬럼 변경 시 코드 직접 수정 필요
---
@ -74,7 +70,7 @@ skill-slack에 올바른 Lists 엔드포인트 추가 → rb8001은 HTTP로만
- **엔드포인트**: `https://slack.com/api/slackLists.items.list`
- **메서드**: POST
- **요청**: `{"list_id": "...", "limit": 100}`
- **응답**: `{"ok": true, "items": [...], "columns": [{"id": "Col00", "name": "완료", "type": "checkbox"}, ...]}`
- **응답**: `{"ok": true, "items": [{"fields": [{"column_id": "Col00", "checkbox": false, ...}]}]}`
### 아이템 생성
- **엔드포인트**: `https://slack.com/api/slackLists.items.create`
@ -82,6 +78,13 @@ skill-slack에 올바른 Lists 엔드포인트 추가 → rb8001은 HTTP로만
- **요청**: `{"list_id": "...", "initial_fields": [{"column_id": "Col00", "checkbox": false}, ...]}`
- **응답**: `{"ok": true, "item": {"id": "..."}}`
### 아이템 업데이트
- **엔드포인트**: `https://slack.com/api/slackLists.items.update`
- **메서드**: POST
- **요청**: `{"list_id": "...", "cells": [{"row_id": "Rec...", "column_id": "Col00", "checkbox": true}]}`
- **응답**: `{"ok": true}`
- **출처**: https://docs.slack.dev/reference/methods/slackLists.items.update/
---
## 구현 가이드
@ -132,32 +135,32 @@ skill-slack에 올바른 Lists 엔드포인트 추가 → rb8001은 HTTP로만
- `/DOCS/troubleshooting/250930_naverworks_slack_03_cold_mail_list.md` - 콜드메일 시스템
- `/DOCS/troubleshooting/20251004_happybell80_로빙_뇌_기관_원칙_위반_현황.md` - 원칙 위반 현황
## 테스트 결과 (2025-10-05, 51124 서버)
## 테스트 결과
### skill-slack Lists API 동작 검증 ✅
### 2025-10-05 (51124 서버) - skill-slack Lists API 동작 검증 ✅
1. **POST /api/v1/lists/items** - 성공
- Item ID: Rec09JV81HM6G 생성
- 회사명, 이메일, 첨부파일 정상 등록
2. **파일 업로드 방식**:
- `files_upload_v2(channel=...)` → 채널 메시지 생성
- `files_upload_v2()` (channel 생략) → 업로드만 (메시지 없음) ✅
3. **미구현**: PUT /api/v1/lists/items/{item_id} (업데이트)
### rb8001 수정 필요사항 ✅ 검증 완료
- coldmail_briefing.py:189 - 컬럼 형식 오류
- **checkbox** (Col00): `{"column_id": "Col00", "checkbox": false}` (boolean, 배열 아님)
### 2025-10-10 - rb8001 rich_text 필드 형식 수정 완료 ✅
- **파일 업로드**: F09KG5EUDSP
- **Lists 아이템 생성**: Rec09KLEQGQCW
- **모든 필드 정상 작동**: checkbox, rich_text, email, attachment
- **적용된 형식** (rb8001/app/scheduler/jobs/coldmail_briefing.py:189-198):
- **checkbox** (Col00): `{"column_id": "Col00", "checkbox": false}`
- **rich_text** (Col09HQTDUM0T): `{"column_id": "...", "rich_text": [{"type": "rich_text", "elements": [{"type": "rich_text_section", "elements": [{"type": "text", "text": "회사명"}]}]}]}`
- **email** (Col09JATRA4GZ): `{"column_id": "...", "email": ["test@example.com"]}` (배열)
- **attachment** (Col09HGCGB45D): `{"column_id": "...", "attachment": ["file_id"]}` (encoded file ID 배열)
- 출처: https://docs.slack.dev/reference/methods/slackLists.items.list, skill-slack/tests/test_slack_lists.py:103-118
- **email** (Col09JATRA4GZ): `{"column_id": "...", "email": ["test@example.com"]}`
- **attachment** (Col09HGCGB45D): `{"column_id": "...", "attachment": ["file_id"]}`
- **출처**: https://docs.slack.dev/reference/block-kit/blocks/rich-text-block/
## 주의사항
1. **추측 금지**: skill-slack 실제 폴더 구조 확인 후 작업
2. **의사코드 금지**: 실제 동작하는 코드만 작성
3. **하드코딩 금지**: 컬럼 ID는 동적으로 처리
4. **Slack Lists 제약**: 유료 플랜에서만 사용 가능
5. **파일 업로드**: files_upload_v2(channel 생략) 사용 - 채널 메시지 생성 안 함
1. **컬럼 ID 하드코딩 유지**: Slack API에 컬럼 메타데이터 조회 불가능, 동적 처리 불가
2. **Slack Lists 제약**: 유료 플랜에서만 사용 가능
3. **파일 업로드**: files_upload_v2(channel 생략) 사용 - 채널 메시지 생성 안 함
---