From 9d8b989273327826841ac933037a98256b21e9c8 Mon Sep 17 00:00:00 2001 From: happybell80 Date: Thu, 4 Sep 2025 13:41:04 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20100%=20=ED=95=B4=EA=B2=B0=EB=90=9C=20?= =?UTF-8?q?=EC=9D=B8=ED=94=84=EB=9D=BC=20=EB=AC=B8=EC=A0=9C=20=EB=AC=B8?= =?UTF-8?q?=EC=84=9C=ED=99=94=20=EB=B0=8F=20=EC=97=85=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Redis TTL, PostgreSQL 소유권, 로그 모니터링 해결 상태 기록 - python-multipart, nginx 권한 문제 해결 완료 표시 - 환경변수 하드코딩 제거 상태 업데이트 - Slack chat display indicator 문서 추가 --- plans/250831_todo_and_tech_debt.md | 41 +++++++----- .../250903_slack_chat_display_indicator.md | 64 +++++++++++++++++++ 2 files changed, 90 insertions(+), 15 deletions(-) create mode 100644 troubleshooting/250903_slack_chat_display_indicator.md diff --git a/plans/250831_todo_and_tech_debt.md b/plans/250831_todo_and_tech_debt.md index 4c667f0..3f44722 100644 --- a/plans/250831_todo_and_tech_debt.md +++ b/plans/250831_todo_and_tech_debt.md @@ -1,7 +1,7 @@ # TODO 및 기술 부채 정리 ## 작성일: 2025년 8월 31일 -## 최종 수정: 2025년 8월 31일 16:35 +## 최종 수정: 2025년 9월 4일 ## 250831 Slack OAuth 구현 완료 후 남은 과제 @@ -27,19 +27,13 @@ response = RedirectResponse(redirect_uri) response.set_cookie("auth_token", jwt_token, secure=True, httponly=True) ``` -### 2. python-multipart 의존성 이슈 🟡 +### ✅ python-multipart 의존성 이슈 해결 완료 -**문제 발생**: -- Slack OIDC의 `response_mode=form_post` 처리 실패 -- `await request.form()` 호출 시 AssertionError 발생 - -**해결**: -- `requirements.txt`에 `python-multipart>=0.0.6` 추가 +**해결일**: 2025-09-04 +**해결 방법**: +- `requirements.txt`에 `python-multipart>=0.0.6` 추가 완료 - Docker 이미지 재빌드 완료 - -**향후 고려사항**: -- CI/CD 파이프라인에 의존성 체크 추가 -- 개발/프로덕션 requirements 분리 검토 +- 의존성 확인 완료 ## 2. 긴급 해결 필요 사항 🔴 @@ -124,6 +118,24 @@ class UserIdentityService: - Frontend: Gmail 방식 (`/auth/verify` 임시 코드) - Slack: JWT 직접 전달 계획 → 임시 코드로 변경 +## 250904 해결된 인프라 문제 ✅ + +### Redis +- **Redis 키 TTL**: 자동 만료 정상 작동 중, 만료된 키 없음 확인 +- **oauth:state 키**: 60초 TTL 정상 작동 + +### PostgreSQL +- **테이블 소유권**: 모든 테이블 robeings 사용자 소유 확인 완료 +- **테이블 목록**: companies, conversation_logs, gmail_audit_logs, gmail_tokens 등 + +### Docker & 로그 +- **로그 모니터링**: /mnt/hdd/logs/ 구조화 저장 중 +- **로그 정리**: 매일 새벽 4시 자동 실행, 30일 보관 + +### 환경변수 +- **Frontend**: VITE_AUTH_SERVER_URL 환경변수 사용 중 +- **auth-server**: .env 파일로 관리 중 + ## 4. 250831 작업 요약 ### 완료된 작업 ✅ @@ -144,14 +156,13 @@ class UserIdentityService: - Gmail과 동일한 방식으로 통일 4. **배포 및 운영** - - python-multipart 의존성 추가 + - ✅ python-multipart 의존성 추가 (2025-09-04 완료) - Docker 이미지 재빌드 - - nginx 권한 문제 해결 + - ✅ nginx 권한 문제 해결 (2025-09-04 확인 - 644 권한 정상) ### 미해결 과제 📋 1. **기술 부채** - 임시 코드 방식 제거 검토 - - 환경변수 하드코딩 제거 - DB 스키마 통일 (companies → workspaces) 2. **개선 사항** diff --git a/troubleshooting/250903_slack_chat_display_indicator.md b/troubleshooting/250903_slack_chat_display_indicator.md new file mode 100644 index 0000000..045d7d2 --- /dev/null +++ b/troubleshooting/250903_slack_chat_display_indicator.md @@ -0,0 +1,64 @@ +# 250903 슬랙 대화 표시 인디케이터 구현 아이디어 + +## 목적 +프론트엔드 대화창에서 슬랙을 통해 입력된 메시지를 시각적으로 구분하여 사용자가 대화 채널을 쉽게 인식할 수 있도록 함 + +## 현재 상황 +- 대화 메시지가 슬랙/웹 구분 없이 동일하게 표시됨 +- 사용자가 어떤 채널로 대화가 이루어졌는지 알기 어려움 +- **확인됨**: conversation_logs 테이블에 slack_user_id 컬럼 존재 (VARCHAR(100)) +- **확인됨**: channel_id가 'C'로 시작하면 슬랙 채널 (tables.md 참조) + +## 구현 아이디어 + +### 1. 시각적 표시 방법 +- **위치**: 각 대화 풍선의 프로필 사진 근처 상단 +- **표시**: 슬랙 SVG 아이콘 (크기: 글자 크기와 유사, **확인 필요**: 정확한 px 크기) +- **배치**: 대화 풍선과 50% 겹치게 배치하여 자연스럽게 통합 + +### 2. 기술적 구현 방향 +``` +대화 컴포넌트 구조: +├── 프로필 영역 (확인 필요: 실제 구조) +│ └── 슬랙 인디케이터 (position: absolute 추천) +└── 메시지 풍선 +``` + +### 3. 데이터 흐름 +1. 백엔드: **확인 필요**: source 필드 추가 vs slack_user_id 활용 결정 +2. 프론트엔드: 슬랙 메시지 판별 로직 구현 +3. CSS: position absolute로 프로필 상단에 배치 (Tailwind CSS 활용 가능) + +### 4. 구현 예상 파일 +- **확인됨**: `frontend-customer/src/components/chat-interface.tsx` (ChatMessage.tsx 아님) +- **확인됨**: `/assets/integrations/slack-logo.svg` 아이콘 존재 +- **확인 필요**: CSS 파일 구조 (별도 chat.css 없음, index.css 또는 Tailwind 사용) + +### 5. 고려사항 +- 모바일/데스크톱 반응형 크기 조정 (**확인 필요**: 반응형 요구사항) +- **확인 필요**: 다크모드 지원 여부 및 아이콘 색상 조정 +- **확인 필요**: 애니메이션 필요성 (현재 요구사항에 없음) + +### 6. 예상 효과 +- 사용자가 대화 출처를 한눈에 파악 가능 +- 멀티채널 지원 시스템임을 시각적으로 어필 +- UX 개선으로 사용자 혼란 감소 + +## 검증된 정보 + +### 데이터베이스 +- conversation_logs 테이블에 slack_user_id 컬럼 존재 (VARCHAR(100)) +- channel_id 패턴: 'C'로 시작 = 슬랙 채널, 'web' = 프론트엔드 +- JWT에서 user_id(UUID) 추출 가능 (chat_history_flow.md 참조) + +### 프론트엔드 +- 메인 컴포넌트: `chat-interface.tsx` +- 슬랙 아이콘 경로: `/assets/integrations/slack-logo.svg` +- CSS 프레임워크: Tailwind CSS 사용 중 + +## 다음 단계 +1. chat-interface.tsx에서 프로필/메시지 구조 확인 +2. 백엔드 API 응답에서 slack_user_id 포함 여부 확인 +3. 슬랙 메시지 판별 로직 결정 (slack_user_id vs channel_id) +4. 프론트엔드 컴포넌트 수정 +5. 테스트 및 반응형 확인 \ No newline at end of file