DOCS/plans/250831_todo_and_tech_debt.md
happybell80 bbf681e744 docs: 헬스체크 엔드포인트 현황 업데이트
- auth-server, frontend-base: /health 구현 확인
- gateway: /healthz (표준) 구현 확인
- 모든 주요 서비스 헬스체크 정상
2025-09-04 15:50:48 +09:00

10 KiB

TODO 및 기술 부채 정리

작성일: 2025년 8월 31일

최종 수정: 2025년 9월 4일

250831 Slack OAuth 구현 완료 후 남은 과제

1. 임시 코드 방식 통일 필요 🔴

현재 상황:

  • Gmail 로그인: 임시 코드 → /auth/verify → JWT
  • Slack 로그인: 임시 코드 → /auth/verify → JWT
  • 프론트엔드가 통일된 방식 사용 중

문제점:

  • 임시 코드 사용이 불필요한 복잡도 추가
  • Redis 의존성 증가
  • 60초 TTL로 인한 타이밍 이슈 가능성

개선 방안:

// Option 1: JWT 직접 전달 (보안 검토 필요)
return RedirectResponse(f"{redirect_uri}#token={jwt_token}")

// Option 2: Secure cookie 사용
response = RedirectResponse(redirect_uri)
response.set_cookie("auth_token", jwt_token, secure=True, httponly=True)

python-multipart 의존성 이슈 해결 완료

해결일: 2025-09-04 해결 방법:

  • requirements.txtpython-multipart>=0.0.6 추가 완료
  • Docker 이미지 재빌드 완료
  • 의존성 확인 완료

2. 긴급 해결 필요 사항 🔴

Git Merge Conflict 해결 완료

해결일: 2025-08-31 16:15 해결 방법:

  • rebase 대신 merge 전략으로 변경
  • git config pull.rebase false 설정
  • 충돌 파일 수동 병합 후 push 완료
  • 커밋: 5bb14a6 - merge: Slack OAuth implementation with upstream changes

DB 스키마 불일치

문제:

  • companies 테이블 vs workspaces 테이블 공존
  • SlackWorkspace 모델이 잘못된 FK 참조
  • Relationship 주석 처리로 임시 해결 중

현재 상태:

-- 실제 DB
slack_workspaces.company_id  companies.id
workspace_members.workspace_id  workspaces.id

-- 모델 파일 (잘못됨)
SlackWorkspace.workspace_id  workspaces.id (실제로는 company_id)

해결 계획:

  1. 데이터 백업
  2. companies 데이터를 workspaces로 마이그레이션
  3. FK 관계 재설정
  4. 모델 파일 통일

3. 환경 변수 하드코딩 제거 필요 🟡

현재 하드코딩된 값들:

# app/providers/slack.py
login_callback_url = "https://auth.ro-being.com/auth/slack/login/callback"  # Line 175
redirect_uri = state_info.get("redirect_uri", "http://localhost:3000")  # Line 268

# frontend-customer/src/contexts/auth-context.tsx
fetch('https://auth.ro-being.com/auth/verify', {  # Line 79

개선 방안:

  • 환경변수로 추출 필요
  • 개발/스테이징/프로덕션 환경 분리

4. 사용자 매핑 로직 개선 필요 🟡

현재 로직:

  1. slack_user_mapping 확인
  2. 없으면 email로 사용자 조회
  3. 없으면 새 사용자 생성

문제점:

  • email이 변경되면 중복 계정 생성 가능
  • workspace 없이 로그인 시 매핑 생성 불가
  • username 생성 로직이 분산됨

개선 방안:

# 통합 사용자 식별 서비스 필요
class UserIdentityService:
    def find_or_create_user(provider, provider_id, email, metadata)
    def link_accounts(user_id, provider, provider_id)
    def merge_duplicate_users(primary_id, duplicate_ids)

3. 중요도 높음 🟡

Frontend-Backend 인증 방식 불일치 해결 완료

해결일: 2025-08-31 16:25 해결 방법:

  • 프론트엔드 코드 수정하여 /auth/verify 엔드포인트 사용
  • Gmail과 Slack 모두 동일한 임시 코드 방식으로 통일
  • 커밋: 4cd28f1 - fix: Slack OAuth 로그인

Frontend-Backend 인증 방식 최종 개선

현재 상태:

  • 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일 보관
  • Docker 이미지 정리: 2025-09-04 dangling 이미지 39개 제거 (3.9GB 회수)

환경변수

  • Frontend: VITE_AUTH_SERVER_URL 환경변수 사용 중
  • auth-server: .env 파일로 관리 중

Git 설정

  • pull.rebase: false 설정 완료 (2025-09-04)
  • 전략: merge 방식으로 통일
  • 적용 범위: 51123 admin, 51124 admin, happybell80

헬스체크 엔드포인트

  • auth-server: /health 구현됨
  • frontend-base: /health 구현됨
  • gateway: /healthz 구현됨 (표준 경로)
  • 상태: 모든 주요 서비스 헬스체크 정상 (2025-09-04 확인)

4. 250831 작업 요약

완료된 작업

  1. Slack OAuth 2.0 (OIDC) 로그인 구현

    • /auth/slack/login 엔드포인트 구현
    • /auth/slack/login/callback POST/GET 지원
    • JWT 토큰 발급 (30일 유효기간)
    • Redis 임시 코드 저장 (60초 TTL)
  2. 사용자 매핑 시스템

    • slack_user_mapping 테이블 활용
    • 하이브리드 접근: Slack ID → Email fallback
    • 자동 사용자 생성
  3. 프론트엔드 통합

    • auth-context.tsx 수정
    • /auth/verify 엔드포인트 사용
    • Gmail과 동일한 방식으로 통일
  4. 배포 및 운영

    • python-multipart 의존성 추가 (2025-09-04 완료)
    • Docker 이미지 재빌드
    • nginx 권한 문제 해결 (2025-09-04 확인 - 644 권한 정상)

미해결 과제 📋

  1. 기술 부채

    • 임시 코드 방식 제거 검토
    • DB 스키마 통일 (companies → workspaces)
  2. 개선 사항

    • 사용자 통합 인증 서비스
    • OAuth 토큰 갱신 로직
    • 에러 핸들링 강화
  3. 문서화

    • API 문서 업데이트
    • 배포 가이드 작성
    • 트러블슈팅 가이드 추가

영향:

  • 불필요한 Redis 호출
  • 60초 시간 제한
  • 복잡한 인증 플로우

해결 방법:

  1. Frontend auth-context.tsx 수정
    • JWT 직접 처리 로직 구현
    • Provider별 분기 처리
  2. 또는 통합 인증 서비스 구현

하드코딩된 설정값

위치 및 내용:

# /home/admin/auth-server/app/providers/slack.py
redirect_uri = "http://localhost:3000"  # 하드코딩
login_callback_url = "https://auth.ro-being.com/auth/slack/login/callback"

# docker-compose.yml
DATABASE_URL=postgresql://robeings:robeings@192.168.219.45/main_db

해결:

  • .env 파일로 이동
  • 환경별 설정 분리 (dev/staging/prod)

3. 개선 사항 🟢

코드 품질

  1. 에러 처리 개선

    • 구체적인 에러 메시지
    • 사용자 친화적 에러 페이지
    • 로깅 강화
  2. 테스트 추가

    • 단위 테스트
    • 통합 테스트
    • E2E 테스트
  3. 문서화

    • API 문서 (OpenAPI/Swagger)
    • 시퀀스 다이어그램
    • 배포 가이드

보안 강화

  1. 토큰 관리

    • Refresh Token 구현
    • 토큰 암호화 저장
    • Rate Limiting
  2. OAuth 개선

    • PKCE 구현
    • State 파라미터 강화
    • Nonce 추가

4. 장기 로드맵 📅

Q4 2025

  • DB 스키마 통일
  • Frontend 인증 방식 통일
  • 환경변수 정리
  • Git 충돌 해결

Q1 2026

  • Multi-tenant 아키텍처
  • SSO 구현
  • 2FA 지원
  • 감사 로그

Q2 2026

  • 마이크로서비스 분리
  • API Gateway 도입
  • 중앙 인증 서버
  • 모니터링 대시보드

5. 현재 작업 중인 파일 목록

수정된 파일 (commit 필요)

/home/admin/auth-server/
├── app/
│   ├── api/gmail_refresh.py (CONFLICT)
│   ├── models/workspace.py
│   ├── providers/
│   │   ├── gmail.py (CONFLICT)
│   │   ├── gmail_passport.py (CONFLICT)
│   │   └── slack.py (NEW IMPLEMENTATION)
├── docker-compose.yml
└── tokens/unknown_gmail.json

/home/heejae/frontend-customer/
└── src/contexts/auth-context.tsx

신규 생성된 문서

/home/heejae/DOCS/
├── troubleshooting/
│   └── 250831_slack_oauth_login_implementation.md
├── 300_architecture/
│   └── 380_authentication_system.md
└── plans/
    └── 250831_todo_and_tech_debt.md (this file)

6. 명령어 참조

Docker 관련

# Auth server 재시작
cd /home/admin/auth-server
docker compose down && docker compose up -d --build

# 로그 확인
docker logs auth-server --tail 100 -f
docker logs auth-redis --tail 50

Git 관련

# 충돌 해결
git status
git diff <file>
git add <file>
git commit -m "fix: resolve conflicts"

# 변경사항 확인
git log --oneline -10
git diff HEAD~1

DB 관련

# PostgreSQL 접속
PGPASSWORD=robeings psql -h localhost -U robeings -d main_db

# 테이블 구조 확인
\d companies
\d workspaces
\d slack_workspaces
\d users
\d slack_user_mapping

# 데이터 확인
SELECT * FROM companies;
SELECT * FROM workspaces;
SELECT * FROM slack_workspaces;

Redis 관련

# Redis CLI
docker exec -it auth-redis redis-cli

# Keys 확인
KEYS oauth:state:*
KEYS auth:temp:*

# TTL 확인
TTL oauth:state:<uuid>

7. 연락처 및 참고

관련 시스템

환경변수 위치

  • /home/admin/auth-server/.env
  • /home/heejae/frontend-customer/.env

주요 문서

8. 체크리스트

배포 전 확인사항

  • Git 충돌 해결
  • 환경변수 설정
  • DB 마이그레이션
  • Docker 이미지 빌드
  • 로그 모니터링
  • 에러 처리 테스트
  • 롤백 계획 수립

테스트 시나리오

  • Gmail 로그인
  • Slack 로그인
  • 기존 사용자 연동
  • 신규 사용자 생성
  • 토큰 만료 처리
  • 에러 케이스
  • 동시 로그인