Skip to content

[Audit][P2] 근로자 안내이력 조회 API 구현 #144

Description

@hywznn

한 줄 목표

근로자 상세 화면에서 해당 근로자에게 전달된 안내와 응답 이력을 시간순으로 조회할 수 있도록 합니다.

왜 필요한가요?

현재 Server는 Task 한 건의 활동이력만 조회할 수 있습니다. 근로자 상세 화면에서는 여러 Task에 걸쳐 같은 근로자에게 어떤 안내가 전달됐고 어떤 응답이 돌아왔는지 모아서 볼 API가 없습니다.

일반 GET /api/v1/audit-events는 운영 감사용이므로 화면에 직접 연결하지 않습니다. 근로자 화면에는 허용된 안내 이벤트만 정리해 반환합니다.

API 계약

GET /api/v1/workers/{workerId}/activities?cursor={cursor}&limit=20
Authorization: Bearer <access-token>
{
  "items": [
    {
      "activity_id": "10000000-0000-0000-0000-000000000001",
      "type": "GUIDANCE_SENT",
      "task_id": "20000000-0000-0000-0000-000000000001",
      "task_title": "여권 사본 제출 요청",
      "summary": "모바일 안내를 전송했습니다.",
      "occurred_at": "2026-08-12T10:30:00Z"
    }
  ],
  "next_cursor": null
}

화면에 표시할 활동

  • GUIDANCE_SENT: 모바일 안내 전달 완료
  • GUIDANCE_OPENED: 근로자가 모바일 안내 열람
  • WORKER_RESPONSE_SUBMITTED: 근로자 응답 제출
  • RESPONSE_REVIEWED: HR 응답 확인

현재 감사 이벤트에는 질문·서류 제출의 상세 응답값이 포함되지 않으므로, 이 API도 임의로 세부 유형을 추정하지 않습니다. 상세 응답은 기존 근로자 응답 조회 API에서 확인합니다.

구현 범위

  • GET /api/v1/workers/{workerId}/activities 구현
  • 기존 worker → task → worker_link → audit_event 관계로 조회
  • 화면용 활동 type·안전한 summary로 매핑
  • 최신순 cursor pagination과 limit 1~100 지원
  • ADMIN·HR·VIEWER 조회 허용
  • JWT companyId 기반 사업장 격리 및 타 사업장 404
  • 내부 requestId·traceId·민감정보 미노출
  • Swagger 요청·응답·오류 문서화
  • 정상·빈 결과·타 사업장·VIEWER·페이지네이션 테스트

검증 결과

  • ./gradlew test --tests com.fowoco.server.workerlink.WorkerLinkSecurityIntegrationTest 성공
  • ./gradlew clean test 성공
  • Flyway/DB Schema 변경 없음

데이터·보안 기준

  • DB Migration 없이 기존 관계를 조회합니다.
  • AuditTargetType.WORKER를 새로 만들거나 기존 감사 이벤트를 복제하지 않습니다.
  • 운영용 /audit-events 권한은 완화하지 않습니다.
  • 근로자 안내 화면에 필요한 allowlist action만 반환합니다.
  • 원본 Worker Link token, 파일 내용, 전화번호, 상세 응답 원문은 반환하지 않습니다.

완료 기준

  • 여러 Task에 흩어진 한 근로자의 안내이력이 하나의 시간순 목록으로 반환됨
  • 다른 근로자·다른 사업장 이벤트가 섞이지 않음
  • VIEWER도 화면용 이력을 조회할 수 있음
  • Client #318이 EmptyState를 실제 목록으로 교체할 수 있음

Metadata

Metadata

Assignees

Labels

area:serverSpring Boot API·도메인·DB·tenant·Task Workflow 영역; Prompt·모델·Provider 구현 제외priority:P2일정에 따라 미룰 수 있는 보완 작업status:in-review구현을 마치고 리뷰 또는 병합을 기다리는 작업type:feature사용자 또는 Agent가 사용하는 기능 개발

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions