Skip to content

feat(server): 팀 설정 기반 지각 처리 및 사유 승인 시 패널티 면제 - #60

Merged
jjeunv merged 10 commits into
cc-team-8:mainfrom
jjeunv:main
Jun 23, 2026
Merged

feat(server): 팀 설정 기반 지각 처리 및 사유 승인 시 패널티 면제#60
jjeunv merged 10 commits into
cc-team-8:mainfrom
jjeunv:main

Conversation

@jjeunv

@jjeunv jjeunv commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

변경 요약

기여도 출석 계산에 하드코딩되어 있던 지각 기준을 팀 설정값(late_threshold_minutes, late_max_minutes)으로 교체하고, 지각 사유가 승인된 경우 attendance_ratio에서 late_sec 차감을 면제하도록 수정했습니다.
태스크 보드에서 타인 담당 태스크는 수정 모달이 열리지 않도록 제한하고, 완료 컬럼 정렬을 최신 완료순으로 변경했습니다.

관련 이슈

없음

변경 사항

  • TeamSettingsPayloadlate_threshold_minutes, late_max_minutes 필드 추가
  • contributions.service.ts: DB의 팀 설정에서 지각 기준값 로드
  • contribution.client.ts: 지각 기준 초과 시 attendance_ratio에서 late_sec 차감, late_max_minutes 초과 시 결석 처리
  • contribution.client.ts: 지각 사유 승인(MeetingAbsence.status = 'approved' + join 기록 있음) 시 late_sec 차감 및 punctuality_score 감점 면제
  • contributions.service.ts: ① 회의 점수 계산 및 ② 팀 파이프라인 페이로드에 excused_late_user_ids 전달
  • TasksPage.tsx: 본인/미지정 태스크만 수정 모달 열리도록 canEdit 조건 추가
  • TasksPage.tsx: 보드 완료 컬럼 정렬을 completed_at 내림차순으로 변경

검증 방법

  • 로컬에서 동작 확인
  • 관련 테스트 통과 (또는 추가)
  • 문서/주석 업데이트 (필요 시)
  1. 팀 설정에서 late_threshold_minutes 값 변경 후 회의 recompute → 출석률이 설정값 기준으로 반영되는지 확인
  2. 지각 사유 제출 → 팀장 승인 → recompute → attendance_ratio 차감 없이 계산되는지 확인
  3. 타인 담당 태스크 클릭 → 수정 모달이 열리지 않는지 확인
  4. 완료 컬럼에서 최근 완료된 태스크가 상단에 표시되는지 확인

체크리스트

  • PR 제목이 Conventional Commits 형식이다 (type(scope): subject)
  • main이 아닌 feature/* 또는 fix/* 브랜치에서 작업했다
  • docs/의 제약(운영 비용 0원, 음성 미저장, 사이드 창 400px 등)을 위배하지 않는다
  • 음성 원본 데이터가 서버로 전송되지 않는다 (해당 시)
  • 빌드 산출물·로컬 환경 파일(.env, node_modules 등)이 포함되지 않았다

비고

  • 마이그레이션 불필요: excused_late_user_ids는 기존 meeting_absences + presence_events 테이블에서 런타임에 조합하는 값
  • attendance_ratio 변경은 회의 재산정(recompute) 시 적용됨 (기존 저장값 자동 갱신 없음)

@jjeunv jjeunv self-assigned this Jun 23, 2026
@jjeunv
jjeunv merged commit 97d20f9 into cc-team-8:main Jun 23, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant