Skip to content

[Dashboard] 오늘 업무 대시보드 요약 API 구현 #15

Description

@hywznn

한 줄 요약

HR이 로그인 직후 오늘 처리할 업무와 알림을 한 화면에서 확인하고, 각 항목의 실제 업무 화면으로 이동할 수 있게 합니다.

화면 기준

  • Figma [PWF] Prototype-WireFrame-3rd05_Desktop Core Product > HOME
  • 상단 알림 버튼과 오늘의 업무·검토 대기·근로자 응답·만료 임박 카드
  • 세부 요청·응답 필드는 Notion API 명세를 기준으로 합니다.

소유 API

  • GET /api/v1/dashboard/today
  • GET /api/v1/notifications
  • POST /api/v1/notifications/{notificationId}/read

로그인 사용자 정보는 이 응답에 중복해서 넣지 않고 GET /api/v1/auth/me를 함께 사용합니다.

응답이 설명해야 하는 것

오늘 대시보드

  • 오늘 마감 또는 기한 임박 업무
  • 상태별 업무 개수와 우선 처리 목록
  • 승인 대기 개수와 근로자 응답 개수
  • 향후 7일의 체류·계약·서류 만료 요약
  • 사용자가 눌렀을 때 이동할 안전한 내부 경로와 필터 조건

알림

  • 읽음 여부, 발생 시각, 종류, 짧은 설명, 이동할 대상
  • 현재 사용자의 읽지 않은 알림 개수
  • unreadOnly, cursor, size 기반 조회
  • 읽음 처리는 같은 요청을 반복해도 결과가 달라지지 않는 멱등 동작

초보자용 구현 순서

  1. Figma 카드마다 필요한 숫자·목록·이동 경로를 응답 DTO로 먼저 적습니다.
  2. DashboardQueryService가 같은 사업장의 Task·Worker·Document·Approval 요약을 조회하게 합니다.
  3. 알림은 원본 업무 데이터와 분리된 Notification 읽기 모델로 저장합니다.
  4. 생성·변경 이벤트에서 알림을 만들고, 화면은 목록 조회와 읽음 처리만 수행합니다.
  5. 빈 데이터, 날짜 경계, 페이지네이션, VIEWER 권한, 타 사업장 격리 테스트를 작성합니다.

보안·업무 규칙

  • companyId와 사용자 ID는 JWT의 ActorContext에서 결정합니다.
  • 다른 사업장의 집계·알림은 존재 여부도 노출하지 않습니다.
  • 알림 본문에는 여권번호·외국인등록번호·전화번호 등 민감 원문을 넣지 않습니다.
  • 알림은 업무를 알려 주는 기능이며 승인·발송·기관 제출을 자동 실행하지 않습니다.

완료 조건

  • 서버 기준 시간대와 날짜 경계 테스트가 있습니다.
  • 빈 사업장은 500이 아니라 0과 빈 목록을 반환합니다.
  • 대시보드 개수와 실제 업무 목록 필터 결과가 일치합니다.
  • 읽음 처리 재호출로 중복 오류나 추가 변경이 발생하지 않습니다.
  • 알림의 대상 경로는 클라이언트가 안전하게 해석할 수 있는 내부 경로입니다.
  • 타 사업장 격리, 역할별 접근, Swagger 예시와 필요한 인덱스를 검증합니다.

이번 이슈에서 하지 않는 것

  • 자유롭게 조합하는 분석 대시보드와 장기 BI
  • WebSocket 실시간 푸시
  • SMS·이메일·메신저 외부 발송

선행/후속 관계

Metadata

Metadata

Assignees

Labels

area:serverSpring Boot API·도메인·DB·tenant·Task Workflow 영역; Prompt·모델·Provider 구현 제외priority:P1핵심 작업 다음으로 처리할 중요 작업status:backlog해야 하지만 아직 시작 조건이 갖춰지지 않은 작업type:feature사용자 또는 Agent가 사용하는 기능 개발

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions