User 서비스 내부 시퀀스 다이어그램 개선

- 회원가입: 사업자번호 암호화 위치 명시, 성능 지표 추가, 에러 코드 표준화 (USER_001, USER_002)
- 로그인: 비동기 처리 설명 추가, Rate Limiting 보안 강화, 성능 목표 추가, 에러 코드 표준화 (AUTH_001)
- 프로필수정: 트랜잭션 범위 명확화, Optimistic Locking 추가, 동시성 제어, 에러 코드 표준화 (USER_003~005)
- 로그아웃: API Gateway 연계 시나리오, 로그아웃 이벤트 발행, 성능 목표 추가, 에러 코드 표준화 (AUTH_002)
- .gitignore 추가: .npm-global 및 기타 임시 파일 제외

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
박세원
2025-10-22 14:37:25 +09:00
parent d876763477
commit f7f16e2d18
5 changed files with 196 additions and 47 deletions
@@ -45,7 +45,7 @@ deactivate UserRepo
alt 중복 사용자 존재
Service --> Controller: throw DuplicateUserException\n("이미 가입된 전화번호입니다")
Controller --> Client: 400 Bad Request\n{"error": "이미 가입된 전화번호입니다"}
Controller --> Client: 400 Bad Request\n{"code": "USER_001",\n"error": "이미 가입된 전화번호입니다"}
deactivate Service
deactivate Controller
else 신규 사용자
@@ -104,7 +104,7 @@ else 신규 사용자
deactivate Validator
Service --> Controller: BusinessNumberInvalidException
Controller --> Client: 400 Bad Request\n{"error": "유효하지 않은 사업자번호입니다.\n휴폐업 여부를 확인해주세요."}
Controller --> Client: 400 Bad Request\n{"code": "USER_002",\n"error": "유효하지 않은 사업자번호입니다.\n휴폐업 여부를 확인해주세요."}
deactivate Service
deactivate Controller
@@ -122,7 +122,13 @@ else 신규 사용자
== 4단계: 사업자번호 암호화 ==
Service -> Service: encryptBusinessNumber(businessNumber)\n(AES-256 암호화)
Service -> Service: EncryptionUtil 호출 준비
note right of Service
**암호화 처리**
- AES-256-GCM 모드 사용
- 환경변수에서 암호화 키 로드
end note
Service -> Service: encryptedBusinessNumber =\nEncryptionUtil.encrypt(businessNumber)
== 5단계: 데이터베이스 트랜잭션 ==
@@ -187,7 +193,16 @@ note over Controller, NTSApi
**보안 처리**
- 비밀번호: bcrypt 해싱 (Cost Factor 10)
- 사업자번호: AES-256 암호화
- 사업자번호: AES-256-GCM 암호화 (EncryptionUtil)
**성능 목표**
- 평균 응답 시간: 2.0초 이내 (국세청 API 포함)
- P95 응답 시간: 3.0초 이내
- 캐시 HIT 시: 0.8초 이내
**에러 코드**
- USER_001: 중복 사용자
- USER_002: 사업자번호 검증 실패
end note
@enduml