Skip to content

기능 변경에 대한 엔티티 수정#33

Merged
sgn07124 merged 3 commits intomainfrom
refactor/entity
Oct 11, 2025
Merged

기능 변경에 대한 엔티티 수정#33
sgn07124 merged 3 commits intomainfrom
refactor/entity

Conversation

@sgn07124
Copy link
Owner

@sgn07124 sgn07124 commented Oct 11, 2025

User description

관련 이슈 (Related Issues)


PR Type

Enhancement, Tests


Description

  • 인증 테스트용 컨트롤러 추가

  • 쿠폰 이벤트/발급 엔티티 도입

  • 회원 일일 제한 필드 및 엔티티 추가

  • 불필요 회사/채팅 엔티티 제거


Diagram Walkthrough

flowchart LR
  A["Remove company/chat entities"] -- "cleanup" --> B["Add coupon entities"]
  B -- "CouponEvent 1:N CouponIssue" --> C["CouponIssue"]
  D["Member"] -- "add field" --> E["dailyLimit"]
  D -- "1:N" --> F["MemberDailyLimit"]
  G["Auth TestController"] -- "debug/session, test APIs" --> H["SecurityUtil & UserDetails"]
  I["Auth tests"] -- "adapt to new ctor" --> D
Loading

File Walkthrough

Relevant files
Enhancement
5 files
TestController.java
인증 디버그 및 자기정보 조회 엔드포인트 추가                                                               
+61/-0   
CouponEvent.java
쿠폰 이벤트 엔티티 신규 추가                                                                                 
+41/-0   
CouponIssue.java
쿠폰 발급 이력 엔티티 신규 추가                                                                             
+41/-0   
Member.java
회원 일일 제한 필드 추가                                                                                     
+3/-0     
MemberDailyLimit.java
회원 일일 질문 카운트 엔티티 추가                                                                           
+35/-0   
Miscellaneous
7 files
CompanyChatMessage.java
회사 채팅 메시지 엔티티 제거                                                                                 
+0/-32   
CompanyChatRoom.java
회사 채팅방 엔티티 제거                                                                                       
+0/-31   
RoomStatus.java
채팅방 상태 enum 제거                                                                                     
+0/-5     
Company.java
회사 엔티티 제거                                                                                               
+0/-29   
CompanyAnalysisRequest.java
회사 분석 요청 엔티티 제거                                                                                   
+0/-43   
CompanyAnalysisSection.java
회사 분석 섹션 엔티티 제거                                                                                   
+0/-33   
RequestStatus.java
분석 요청 상태 enum 제거                                                                                 
+0/-5     
Tests
1 files
AuthServiceImplSignUpTest.java
Member 생성자 변경 반영하여 테스트 수정                                                               
+3/-3     

@sgn07124 sgn07124 self-assigned this Oct 11, 2025
@sgn07124 sgn07124 added ♻️ Refactor 코드 리팩토링 및 구조 개선 ✅ Test 테스트 코드 추가 및 수정 labels Oct 11, 2025
@sgn07124 sgn07124 linked an issue Oct 11, 2025 that may be closed by this pull request
@github-actions
Copy link

PR Reviewer Guide 🔍

Here are some key observations to aid the review process:

⏱️ Estimated effort to review: 3 🔵🔵🔵⚪⚪
🧪 PR contains tests
🔒 Security concerns

디버그 엔드포인트 노출:
'/debug/session'과 '/test/*'는 세션 ID, 사용자 식별자 등 민감 정보를 반환할 수 있습니다. 현재 @PreAuthorize로 보호되지만 운영 환경에서는 추가적으로 다음을 권장드립니다:

  • spring profile(test/dev) 조건부 빈 등록 또는 RequestMapping에 조건부 매핑
  • 반환 정보 최소화(세션 ID 미노출 등)
  • 로깅 시 마스킹 처리

No

⚡ Recommended focus areas for review

권한 범위

테스트/디버그용 엔드포인트가 프로덕션에 그대로 노출될 수 있습니다. '/debug/session', '/test/*' 경로는 운영 배포 시 비활성화하거나 profile 기반으로 제한하는지 확인이 필요합니다.

    @PreAuthorize("hasAnyRole('USER', 'ADMIN')")
    @GetMapping("/debug/session")
    public ResponseEntity<?> debugSession(@AuthenticationPrincipal CustomUserDetails userDetails, HttpSession session) {  //
        String sessionId = session.getId();
        int sessionExpires = session.getMaxInactiveInterval();
        Long memberId = (userDetails != null) ? userDetails.getMember().getId() : null;

        Map<String, Object> debugInfo = new HashMap<>();
        debugInfo.put("sessionId", sessionId);
        debugInfo.put("sessionExpires", sessionExpires);
        debugInfo.put("loginMemberId", memberId);

        return ResponseEntity.ok(debugInfo);
    }

    @PreAuthorize("hasRole('USER')")
    @GetMapping("/test/secure")
    public String testSecure(@AuthenticationPrincipal CustomUserDetails userDetails) {
        return "로그인한 사용자 ID: " + userDetails.getMember().getId();
    }

    @PreAuthorize("hasRole('USER')")
    @GetMapping("/test/me")
    public ResponseEntity<?> getMe() {
        Member member = securityUtil.getAuthenticatedMember();
        Map<String, Object> info = new HashMap<>();
        info.put("id", member.getId());
        info.put("email", member.getEmail());
        info.put("nickname", member.getNickname());
        info.put("role", member.getRole());
        return ResponseEntity.ok(info);
    }
}
동시성/정합성

'totalCount' 대비 'issuedCount' 증가 시 동시 발급 경쟁 상황에서 초과 발급을 방지하는 락/검증이 필요합니다. 엔티티 레벨의 버전 관리나 DB 제약, 서비스 계층의 동시성 제어를 검토해주세요.

    private String name;
    private int totalCount;
    private int issuedCount;
    private LocalDateTime startTime;
    private LocalDateTime endTime;

    @OneToMany(mappedBy = "couponEvent")
    private List<CouponIssue> issues = new ArrayList<>();
}
기본값 하드코딩

'dailyLimit' 기본값 10이 하드코딩되어 있습니다. 환경/정책에 따라 변경 가능성을 고려해 설정값으로 분리하거나 enum/정책 테이블로 관리하는 방안을 검토해주세요.

@Column(nullable = false)
private int dailyLimit = 10;

@codecov
Copy link

codecov bot commented Oct 11, 2025

Codecov Report

❌ Patch coverage is 0% with 16 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
...ghtPrep/domain/auth/controller/TestController.java 0.00% 16 Missing ⚠️

📢 Thoughts on this report? Let us know!

@sgn07124 sgn07124 merged commit e614d26 into main Oct 11, 2025
2 of 3 checks passed
@sgn07124 sgn07124 deleted the refactor/entity branch October 11, 2025 16:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

♻️ Refactor 코드 리팩토링 및 구조 개선 Review effort 3/5 ✅ Test 테스트 코드 추가 및 수정

Projects

None yet

Development

Successfully merging this pull request may close these issues.

기능 변경에 의한 엔티티 수정

1 participant