[VISION] Vision 분석 페이지 인증 fetch 함수 누락 및 JS 로그인 체크 로직 개선#54
Conversation
Summary by CodeRabbit
Walkthrough이 변경사항은 Vision 기능에 사용자 인증과 일일 사용량 제한을 도입합니다. VisionController와 관련 UI가 인증 상태와 사용량을 확인하여, 인증되지 않은 사용자는 로그인하도록 유도하고, 사용량을 초과한 경우 분석 기능을 제한합니다. Google Cloud Vision 의존성도 제거되었습니다. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant Browser
participant VisionController
participant Session
User->>Browser: 페이지 접근 (/vision/upload)
Browser->>VisionController: GET /vision/upload (with session)
VisionController->>Session: 사용량/인증 상태 확인
alt 인증 X
VisionController-->>Browser: 로그인 페이지로 리다이렉트
else 인증 O
VisionController-->>Browser: 사용량 정보 포함 페이지 렌더링
end
User->>Browser: 이미지 업로드 및 분석 요청
Browser->>VisionController: POST /vision/species (with session)
VisionController->>Session: 인증 및 사용량 확인
alt 인증 X
VisionController-->>Browser: 401 Unauthorized
else 사용량 초과
VisionController-->>Browser: 429 Too Many Requests
else 정상
VisionController->>Session: 사용량 증가
VisionController-->>Browser: 분석 결과 반환
end
Possibly related PRs
Poem
✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
|
@CodeRabbit review |
✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (3)
src/main/resources/templates/visionUpload.html (1)
430-436: authenticatedFetch 함수가 적절하게 구현되었습니다.JWT 쿠키를 포함한 인증된 요청을 보내는 래퍼 함수가 잘 작성되었습니다.
향후 여러 페이지에서 재사용이 필요하다면, PR 설명에서 언급한 대로 공통 JS 파일로 이동하는 것을 고려해보세요.
src/main/java/io/github/petty/vision/adapter/in/VisionController.java (2)
36-41: 일일 사용량 제한 설정이 적절합니다.하드코딩된 값(3회) 대신 설정 파일에서 관리하면 더 유연할 것 같습니다.
- private static final int DAILY_LIMIT = 3; + @Value("${vision.daily-limit:3}") + private int DAILY_LIMIT;
application.yml에 다음과 같이 설정할 수 있습니다:vision: daily-limit: 3
161-171: 세션 기반 사용량 추적이 구현되었습니다.현재 구현은 단일 서버 환경에서는 잘 작동할 것입니다. 날짜가 변경되면 자동으로 카운트가 리셋되는 로직도 좋습니다.
향후 확장성을 고려한다면:
- Redis나 DB를 활용한 영구 저장
- 다중 서버 환경 지원
- 사용량 이력 추적
등을 고려해볼 수 있습니다.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (4)
build.gradle(1 hunks)src/main/java/io/github/petty/config/SecurityConfig.java(1 hunks)src/main/java/io/github/petty/vision/adapter/in/VisionController.java(4 hunks)src/main/resources/templates/visionUpload.html(6 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
src/main/java/io/github/petty/vision/adapter/in/VisionController.java (3)
src/main/java/io/github/petty/pipeline/controller/UnifiedFlowController.java (1)
Slf4j(21-191)src/main/java/io/github/petty/vision/helper/ImageValidator.java (1)
Slf4j(23-139)src/main/resources/static/js/common/form.js (2)
petName(195-195)result(243-243)
🔇 Additional comments (8)
build.gradle (1)
65-71: LGTM! Google Cloud Vision 의존성 제거가 적절합니다.AWS Rekognition으로 전환하면서 더 이상 필요하지 않은 Google Cloud Vision 의존성을 제거한 것이 좋습니다. 주석의 이모지 제거도 일관성 있는 코드 스타일을 유지하는데 도움이 됩니다.
src/main/java/io/github/petty/config/SecurityConfig.java (1)
70-71: 보안 설정이 적절하게 구성되었습니다.Vision과 Flow 관련 엔드포인트에 인증을 요구하도록 설정한 것이 좋습니다. 이는 사용량 제한과 사용자 추적을 위한 필수적인 변경사항입니다.
src/main/resources/templates/visionUpload.html (3)
197-216: 사용량 정보 표시 UI가 잘 구현되었습니다.로그인한 사용자에게 남은 분석 횟수를 명확하게 보여주고, 비로그인 사용자에게는 로그인 안내를 제공하는 UI가 사용자 친화적입니다.
306-309: JavaScript 로그인 체크 로직이 개선되었습니다.Thymeleaf의 Boolean 값 바인딩 문제를 문자열 리터럴 비교로 해결한 것이 좋습니다. 이제 로그인 상태를 정확하게 판별할 수 있습니다.
Also applies to: 314-319
359-363: HTTP 상태 코드 처리가 적절합니다.401(인증 실패)과 429(사용량 초과) 상태에 대한 처리가 백엔드 응답과 일치하며, 사용자에게 명확한 피드백을 제공합니다.
Also applies to: 391-401
src/main/java/io/github/petty/vision/adapter/in/VisionController.java (3)
43-63: 페이지 렌더링 메서드가 잘 구현되었습니다.인증 체크와 사용량 정보를 모델에 추가하는 로직이 적절합니다. 로깅도 사용자 추적에 도움이 될 것 같습니다.
96-133: 분석 엔드포인트의 사용량 제한이 잘 구현되었습니다.
- 인증 체크 ✓
- 사용량 제한 체크 ✓
- 적절한 HTTP 상태 코드 반환 ✓
- 사용자 친화적인 에러 메시지 ✓
모든 요구사항이 충족되었습니다.
150-154: 인증 체크 로직이 안전하게 구현되었습니다.AnonymousAuthenticationToken 체크를 포함하여 익명 사용자를 확실하게 걸러내는 것이 좋습니다.
📜 PR 내용 요약
⚒️ 작업 및 변경 내용(상세하게)
📚 기타 참고 사항