qcast-api/doc/AUTH_ERROR_HANDOVER.md
2026-05-06 15:39:34 +09:00

111 lines
4.0 KiB
Markdown

# 인증 / 로그인 추적 / 에러 저장 인수인계서
> 작성일: 2026-05-06
> 대상: 후임 AI 엔지니어 또는 개발 관리자
> 작업 브랜치: `dev_ysCha`
> **이 문서의 범위**: 로그인·로그아웃 추적, 클라이언트 에러 저장 API 트랙만 다룹니다.
> 다른 트랙은 `HANDOVER_INDEX.md` 참조.
---
## 0. 한 줄 요약
운영 중 **자동 로그인/로그아웃이 의도대로 안 되는 케이스**와 **클라이언트에서 발생한 예외를 잡지 못하는 문제**를 추적하기 위해, 추적 로그와 에러 저장 API를 단계적으로 보강한 트랙입니다.
---
## 1. 로그인 / 로그아웃 추적
### 1.1 한 일
| 단계 | 내용 | 커밋 |
|------|------|------|
| 1차 | 로그인·로그아웃 추적 | `60b84191` |
| 2차 | 자동 로그인 추적 | `1bf777f8` |
### 1.2 추적 로그의 목적
- 어디서 토큰이 사라지는지
- 어디서 자동 로그인 트리거가 안 잡히는지
- 어디서 로그아웃이 누락되는지
> 프론트(qcast-front) 에도 같은 목적의 추적 트랙이 있습니다 (`API_STABILITY_HANDOVER.md` 5절). 프론트와 백엔드 양쪽 로그를 **같은 시점 기준으로 매칭**해서 봐야 원인이 보입니다.
### 1.3 주의
- 추적 로그는 디버깅 목적으로 추가된 것이라, **운영에서 떼어낼지 유지할지** 사용자에게 확인이 필요합니다.
- 토큰/세션 정보를 로그에 그대로 남기면 보안 이슈가 생기므로, 로그 내용에 민감 정보가 안 들어가는지 다시 확인하세요.
---
## 2. 에러 저장 API — `errSave` / `quotationErrSave`
### 2.1 한 일
| 단계 | 내용 | 커밋 |
|------|------|------|
| 1차 | `errSave` API 추가 | `63969fa2` |
| 2차 | `errSave` API 추가 (보강) | `23f70b21` |
| 3차 | `errSave` API 추가 2 | `d22a7508` |
| 별건 | `quotationErrSave` API 추가 (견적서 전용) | `0b9eeb99` |
### 2.2 무엇을 하나
- 클라이언트(프론트)에서 발생한 예외 / 에러를 **백엔드로 전송해 저장**.
- 운영 중 사용자가 알아채지 못하는 에러 추적용.
### 2.3 사용처 (프론트 측)
- 글로벌 에러 핸들러
- 주요 fetch 실패 catch 블록
- 견적서 출력 실패는 `quotationErrSave` 로 분리
### 2.4 주의
- 에러 저장 자체가 또 실패하면 **무한 루프** 가 될 수 있습니다. 저장 실패 시에는 추가 호출을 하지 않도록 막아야 합니다.
- 로그에 사용자 입력값을 통째로 담으면 PII 가 들어갈 수 있어 위험. 필요한 식별자만 남기세요.
---
## 3. 안정성 보강
### 3.1 `itemList` null 체크
- 커밋: `b84e1fd0`
- 견적서 항목 리스트가 null 인 경우 NPE 가 나던 문제. 호출부에서 null 체크 추가.
### 3.2 `HttpMediaTypeNotAcceptableException` 에러
- 커밋: `50d8a9e3`
- 특정 요청에서 Accept 헤더 불일치로 예외 발생 → 컨버터/Producer 설정 보강.
---
## 4. 핵심 파일
| 파일/위치 | 역할 |
|----------|------|
| `com.interplug.qcast.biz.auth.*` | 로그인/세션 관련 |
| `com.interplug.qcast.biz.{도메인}.*ErrSaveController` 또는 Service | errSave 엔드포인트 |
| `com.interplug.qcast.biz.quotation.*ErrSave*` | quotationErrSave 엔드포인트 |
| 글로벌 ExceptionHandler | 알 수 없는 예외 처리 |
> 정확한 클래스명은 변경되었을 수 있으니 IDE 검색으로 `errSave` 키워드 찾는 게 빠릅니다.
---
## 5. 인수 직후 권장 절차
1. 이 문서 통독.
2. `errSave` 키워드로 코드 베이스 검색해서 엔드포인트 위치 확인.
3. 로그인 컨트롤러에서 토큰 발급/검증 흐름 한 번 따라가 보기.
4. 운영 로그에서 `자동 로그인` / `로그아웃` 키워드로 grep 해 어떤 패턴이 잡히는지 확인.
---
## 6. 미해결 / 추적 중
- **자동 로그인 실패 케이스 완전 재현 안 됨**. 추적 로그를 보면 단서가 보이는데, 환경별로 다르게 나타남.
- 인증 추적 로그를 **운영에서 유지/제거**할지 사용자 결정 필요.
끝.