@@ -68,7 +68,7 @@ public ResponseEntity<ApiResponse<DateListResponse, Void>> deleteDate(@PathVaria
6868 /* ===== 팀 목록 (리드=본인 팀만 / 관리자=전체) ===== */
6969 @ GetMapping ("/teams" )
7070 public ResponseEntity <ApiResponse <List <TeamResponse >, PageMeta >> getTeams (@ AuthenticationPrincipal CustomUserDetails me ) {
71- List <TeamResponse > list = (me .getRole () == UserRole .LEAD ) ? service .getTeamsForLead (requiredTeamFrom (me )) : service .getTeamsForOrganizerOrAdmin ();
71+ List <TeamResponse > list = (me .getRole () == UserRole .LEAD && me . getTeam () != TeamType . HR ) ? service .getTeamsForLead (requiredTeamFrom (me )) : service .getTeamsForOrganizerOrAdmin ();
7272
7373 var page = new PageImpl <>(list , PageRequest .of (0 , Math .max (1 , list .size ()), Sort .by (Sort .Direction .DESC , "createdAt" )), list .size ());
7474 return ResponseEntity .ok (ApiResponse .ok (CoreAttendanceMessage .TEAM_LIST_RETRIEVED_SUCCESS , list , PageMeta .of (page )));
@@ -79,7 +79,7 @@ public ResponseEntity<ApiResponse<List<TeamResponse>, PageMeta>> getTeams(@Authe
7979 @ GetMapping ("/{date}/members" )
8080 public ResponseEntity <ApiResponse <List <Map <String , Object >>, Void >> membersOfMeeting (@ AuthenticationPrincipal CustomUserDetails me , @ PathVariable @ DateTimeFormat (iso = DateTimeFormat .ISO .DATE ) LocalDate date , @ RequestParam (required = false ) TeamType team // 관리자만 사용, 리드는 무시
8181 ) {
82- TeamType effectiveTeam = (me .getRole () == UserRole .LEAD ) ? requiredTeamFrom (me ) : team ;
82+ TeamType effectiveTeam = (me .getRole () == UserRole .LEAD && me . getTeam () != TeamType . HR ) ? requiredTeamFrom (me ) : team ;
8383 var list = service .getMembersWithPresence (date .toString (), effectiveTeam );
8484 // list 원소 예시: { "userId": "123", "name": "홍길동", "present": true, "lastModifiedAt": "..." }
8585 return ResponseEntity .ok (ApiResponse .ok (CoreAttendanceMessage .TEAM_LIST_RETRIEVED_SUCCESS , list ));
@@ -92,7 +92,7 @@ public ResponseEntity<ApiResponse<Map<String, Object>, Void>> saveAttendanceSnap
9292 var userIds = req .safeUserIds ();
9393
9494 // LEAD → 본인 팀 검증
95- if (me .getRole () == UserRole .LEAD ) {
95+ if (me .getRole () == UserRole .LEAD && me . getTeam () != TeamType . HR ) {
9696 TeamType myTeam = requiredTeamFrom (me );
9797 var validation = service .filterUserIdsNotInTeam (myTeam , userIds );
9898 if (validation .validIds ().isEmpty ()) {
@@ -110,14 +110,14 @@ public ResponseEntity<ApiResponse<Map<String, Object>, Void>> saveAttendanceSnap
110110 /* ===== 날짜 요약(JSON) ===== */
111111 @ GetMapping ("/{date}/summary" )
112112 public ResponseEntity <ApiResponse <DaySummaryResponse , Void >> summary (@ AuthenticationPrincipal CustomUserDetails me , @ PathVariable @ DateTimeFormat (iso = DateTimeFormat .ISO .DATE ) LocalDate date , @ RequestParam (required = false ) TeamType team ) {
113- DaySummaryResponse body = (me .getRole () == UserRole .LEAD ) ? service .summary (date .toString (), requiredTeamFrom (me )) : service .summary (date .toString (), team );
113+ DaySummaryResponse body = (me .getRole () == UserRole .LEAD && me . getTeam () != TeamType . HR ) ? service .summary (date .toString (), requiredTeamFrom (me )) : service .summary (date .toString (), team );
114114 return ResponseEntity .ok (ApiResponse .ok (CoreAttendanceMessage .SUMMARY_RETRIEVED_SUCCESS , body ));
115115 }
116116
117117 /* ===== 날짜 요약(CSV) ===== */
118118 @ GetMapping (value = "/{date}/summary.csv" , produces = "text/csv; charset=UTF-8" )
119119 public ResponseEntity <String > summaryCsv (@ AuthenticationPrincipal CustomUserDetails me , @ PathVariable @ DateTimeFormat (iso = DateTimeFormat .ISO .DATE ) LocalDate date , @ RequestParam (required = false ) TeamType team ) {
120- TeamType effective = (me .getRole () == UserRole .LEAD ) ? requiredTeamFrom (me ) : team ;
120+ TeamType effective = (me .getRole () == UserRole .LEAD && me . getTeam () != TeamType . HR ) ? requiredTeamFrom (me ) : team ;
121121 String csv = service .buildSummaryCsv (date .toString (), effective ); // 서비스에 구현
122122 return ResponseEntity .ok ()
123123 .header ("Content-Disposition" , "attachment; filename=\" attendance-" + date + ".csv\" " )
0 commit comments