Skip to content

[Worker Link][P0] 근로자 링크 전달 완료 기록·조회 API 구현 #117

Description

@hywznn

한 줄 목표

근로자 보안 링크를 발급한 상태와 HR이 외부 채널로 전달 완료한 상태를 구분하여, 새로고침 후에도 업무함이 서류대기요청전송을 정확히 표시하도록 합니다.

SENT는 문자·카카오톡 사업자의 실제 수신 보장이 아니라, HR이 "전송 완료"를 기록했다는 뜻입니다.

문제

현재 Server는 링크 발급 여부만 알고 있습니다. 링크를 만들기만 해도 Case 표시 상태가 REQUEST_SENT로 계산되어 다음 두 상황을 구분할 수 없습니다.

  • 링크만 발급하고 아직 근로자에게 보내지 않음 → 서류대기
  • HR이 링크를 실제로 전달했지만 응답이 없음 → 요청전송

API 범위

  • GET /api/v1/tasks/{taskId}/worker-link
    • 현재 링크 ID, 만료시각, delivery_status, sent_at 조회
    • 원본 token과 전체 URL은 다시 반환하지 않음
  • POST /api/v1/worker-links/{workerLinkId}/sent
    • HR이 링크 전달 완료를 기록
    • 서버 시각으로 sent_at, JWT Actor로 sent_by 기록
    • 단방향 상태 전이라 반복 호출해도 기존 결과를 반환

링크 발급 응답에도 worker_link_id, delivery_status=NOT_SENT, sent_at=null을 포함합니다.

데이터와 상태

  • worker_link.delivery_status: NOT_SENT | SENT
  • worker_link.sent_at: SENT일 때만 값 존재
  • worker_link.sent_by: 전달 완료를 기록한 HR/ADMIN
  • 링크 발급 직후: NOT_SENT
  • 전송 완료 기록 후: SENT
  • 재발급된 링크는 새 링크 기준으로 다시 NOT_SENT

업무함 표시 규칙

  • 링크 미발급 또는 NOT_SENTDOCUMENT_PENDING(서류대기)
  • 현재 활성 링크가 SENT이고 근로자 응답 없음 → REQUEST_SENT(요청전송)
  • 읽지 않은 근로자 응답 있음 → REVIEW_REQUIRED(승인대기)
  • 업무 완료 → COMPLETED

보안·감사

  • HR/ADMIN만 조회와 전송 완료 기록 가능
  • company_id 범위로 다른 사업장 링크 접근 차단
  • 전송 완료 기록 시 actor, company, workerLink, task, 기록 시각을 감사로그에 남김
  • token 원문은 DB·로그·조회 응답에 노출하지 않음

완료 조건

  • 발급 직후 조회하면 NOT_SENT, sent_at=null
  • 전송 완료 기록 후 SENT, sent_at, sent_by 저장
  • 반복 요청은 최초 sent_at과 동일 결과 반환
  • 반복 요청에도 감사로그는 최초 1건만 생성
  • 타 사업장 접근은 404
  • VIEWER의 변경 요청은 403
  • Case 표시 상태가 NOT_SENTSENT를 구분
  • 감사로그, OpenAPI, 단위·통합·PostgreSQL migration 테스트 작성

작업 경계와 관계

구현 PR

Metadata

Metadata

Assignees

Labels

area:serverSpring Boot API·도메인·DB·tenant·Task Workflow 영역; Prompt·모델·Provider 구현 제외priority:P0MVP 진행을 막는 최우선 핵심 작업security:privacy개인정보·접근권한·토큰·보안 영향이 있는 작업status:in-progress담당자가 현재 구현 중인 작업type:feature사용자 또는 Agent가 사용하는 기능 개발

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions