Skip to content

feat: 근로자 명단 파일 가져오기와 행 검증 API 구현 - #116

Merged
hywznn merged 1 commit into
mainfrom
feat/14-worker-import-main
Aug 8, 2026
Merged

feat: 근로자 명단 파일 가져오기와 행 검증 API 구현#116
hywznn merged 1 commit into
mainfrom
feat/14-worker-import-main

Conversation

@hywznn

@hywznn hywznn commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

왜 필요한가요?

Closes #14

기존 #113은 OCR PR #112의 브랜치를 Base로 병합되어 Import 기능이 main에 반영되지 않았습니다.
이 PR은 #113의 근로자 명단 Import 변경만 최신 main 기준으로 분리한 PR입니다. OCR 코드와 설정은 포함하지 않습니다.

사용 흐름

파일 업로드 → 열 연결 → 행 검증 → 오류 수정·제외 → 정상 행 선택 등록

상태는 UPLOADED → MAPPED → REVIEW_REQUIRED 또는 READY → COMMITTED로 관리합니다.

무엇이 바뀌나요?

  • UTF-8 CSV와 XLSX 명단 파서를 추가했습니다.
  • 최대 5MB·1,000행·50열·셀당 500자로 입력 크기를 제한했습니다.
  • CSV 수식 문자와 XLSX Formula Cell을 거부합니다.
  • MVP 수집 범위에서 제외한 민감정보 열을 차단합니다.
  • 원본값, HR 수정값, 정규화값과 행별 오류를 분리해 저장합니다.
  • 정상 행만 기존 Worker 도메인 규칙으로 등록합니다.
  • 모든 확정 요청의 Idempotency-Key·요청 hash·성공 응답 snapshot을 보존합니다.
  • 같은 멱등 키를 다른 선택 행에 재사용하면 409로 거부합니다.
  • XLSX 날짜 셀은 화면 표시 형식과 관계없이 YYYY-MM-DD로 정규화합니다.
  • 사업장 격리용 tenant-aware FK와 PostgreSQL RLS 준비 정책을 추가했습니다.
  • 생성·열 연결·검증·수정·등록·재검증을 감사로그에 남깁니다.
  • Swagger/OpenAPI와 연동 문서를 추가했습니다.

주요 API

  • POST /api/v1/imports
  • GET /api/v1/imports/{importId}
  • PUT /api/v1/imports/{importId}/mappings
  • POST /api/v1/imports/{importId}/validate
  • PATCH /api/v1/imports/{importId}/rows
  • POST /api/v1/imports/{importId}/commit
  • POST /api/v1/imports/{importId}/retry

Migration

  • V30__create_worker_import.sql
  • V31__prepare_worker_import_rls.sql

검증

  • ./gradlew clean test 성공
  • PostgreSQL 17 Migration·Tenant Context·RLS·Worker Import 격리 테스트 성공
  • CSV/XLSX·수식·민감정보 열 차단 테스트 성공
  • 빈 명단·최대 행 경계·XLSX 날짜 정규화 테스트 성공
  • 부분 등록과 A → B → A 멱등 재시도 통합 테스트 성공
  • OpenAPI 7개 경로·snake_case·오류 응답 계약 테스트 성공
  • OCR 변경이 포함되지 않았음을 diff로 확인

후속 작업

  • 이 PR 병합 후 #112에서 #113의 Import 병합 commit을 제거합니다.
  • #112의 OCR Migration은 V32·V33으로 조정한 뒤 다시 검증합니다.
  • 만료된 원본 파일 삭제 배치는 File Storage·Infra 운영 정책과 별도로 연결합니다.

CSV·XLSX 명단을 임시 저장하고 행 단위 검증·수정·선택 등록할 수 있도록 구현합니다.

모든 등록 요청의 멱등성 이력을 보존하고 XLSX 날짜 셀을 ISO 날짜로 정규화합니다.

Import 테이블과 PostgreSQL RLS 정책은 main 기준 V30·V31 Migration으로 추가합니다.
@hywznn

hywznn commented Aug 8, 2026

Copy link
Copy Markdown
Contributor Author

다시팠어요 ㅠㅠ

@hywznn
hywznn requested review from chaeliki and krestar August 8, 2026 04:15
@hywznn
hywznn marked this pull request as ready for review August 8, 2026 04:47
@hywznn
hywznn merged commit dc725c6 into main Aug 8, 2026
4 checks passed
@hywznn
hywznn deleted the feat/14-worker-import-main branch August 8, 2026 05:15
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.

[Import] 근로자 파일 가져오기·행 검증·재처리 구현

1 participant