Skip to content

feat: 통합 문서함·파일 업로드·문서 준비도 구현 - #57

Merged
chaeliki merged 36 commits into
mainfrom
feat/13-document-hub
Jul 29, 2026
Merged

feat: 통합 문서함·파일 업로드·문서 준비도 구현#57
chaeliki merged 36 commits into
mainfrom
feat/13-document-hub

Conversation

@chaeliki

@chaeliki chaeliki commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

왜 필요한가요?

#13(통합 문서함·파일 업로드·문서 준비도)의 4개 API와 감사 로그 연동,
통합 테스트까지 완료했습니다.

Closes #13

완료된 범위

API 4개

  • POST /files — 파일 업로드 (MIME/크기 검증, scan_status NOT_SCANNED 고정)
  • GET /documents — 통합 문서함 조회 (근로자 표시 이름 포함)
  • GET /tasks/{taskId}/document-readiness — 서류 준비도 (Task 체크리스트 snapshot 기준)
  • PUT /tasks/{taskId}/document-request-draft — 문서 요청 초안 저장(생성/갱신)

패키지

  • file: StoredFile 도메인, FileStorage port + LocalFileStorage/FakeFileStorage
  • document: ChecklistItemDocumentMapper(itemCode↔DocumentType), DocumentRequestDraft,
    통합 조회·준비도·초안 Service 3종

worker 패키지 재수정 (이미 병합된 #5 코드)

  • WorkerDocumentfile_id 실제 연결 (tenant 재검증 포함)
  • WorkerRepository에 근로자 배치조회 추가, count 쿼리 정리(리팩토링)

감사 로그

  • 파일 업로드, 서류-파일 연결, 초안 저장 시 AuditEvent 기록
  • AuditAction/AuditTargetType에 새 값 추가 (FILE_UPLOADED, WORKER_DOCUMENT_FILE_LINKED,
    DOCUMENT_REQUEST_DRAFT_SAVED / FILE, WORKER_DOCUMENT, DOCUMENT_REQUEST_DRAFT)

존재-검증 감사

  • 모든 Service의 외부 ID 참조를 재점검해 실제 버그 3건 발견·수정
    (FileService.upload()의 taskId/workerId, WorkerDocumentService.register()의 workerId,
    DocumentRequestDraftService.upsert()의 taskId — 전부 존재하지 않는 ID를 넘기면
    DB 제약 위반으로 500이 나던 것을 404로 명확히 처리하도록 수정)

통합 테스트

  • FileSecurityIntegrationTest 3개 (업로드 성공+감사로그, MIME 거부, taskId 존재검증)
  • DocumentSecurityIntegrationTest 6개 (준비도 missing→available, 준비도 타사업장 404,
    목록조회+근로자이름, 초안 생성/갱신/버전충돌, 초안 타사업장 404)

결정 사항

  • scan_status는 검사 인프라가 없어 항상 NOT_SCANNED로 고정, 파일 연결은 허용
  • 파일 크기(20MB)·허용 MIME은 상식적인 기본값 (FileService에 TODO)
  • purpose, SubmissionStatus 4개 값 확정, WorkerDocument.taskId 필터는
    #60으로 분리
  • file/document 패키지 분리는 docs/project-structure.md 기준
  • ChecklistItemDocumentMapper는 직접 정의
    (현재 워크플로우 2개, item_code 6개 반영, 향후 갱신 필요)
item_code DocumentType 근거
PASSPORT_COPY_VERIFY_CURRENT PASSPORT_COPY 이름 직접 대응
ALIEN_REGISTRATION_CARD_VERIFY_CURRENT ARC 약자 대응
EMPLOYMENT_CONTRACT_VERIFY_PERIOD CONTRACT 근로계약 관련
EMPLOYMENT_CONTRACT_USE_CURRENT_STANDARD_FORM CONTRACT 근로계약 관련
EMPLOYMENT_PERMIT_VERIFY_PERIOD PERMIT 고용허가 관련
APPLICATION_FORM_SELECT_CURRENT (매핑 없음) 서류 확인 아닌 액션, 준비도 계산 제외

발견된 버그 (수정 완료)

  • LocalFileStorage: 저장 경로가 normalize() 안 돼서 실제 파일 저장 시 항상 실패
  • DocumentRequestDraftJpaEntity: @Version 누락으로 버전이 증가 안 함

검증

  • ./gradlew clean test — 전체 통과 (170개)

리뷰 포인트

  • ChecklistItemDocumentMapper의 하드코딩 매핑 방식 (임시, 후속 갱신 필요)

@chaeliki
chaeliki requested review from hywznn and krestar July 26, 2026 18:03
@chaeliki chaeliki added area:server Spring Boot API·도메인·DB·tenant·Task Workflow 영역; Prompt·모델·Provider 구현 제외 security:privacy 개인정보·접근권한·토큰·보안 영향이 있는 작업 type:feature 사용자 또는 Agent가 사용하는 기능 개발 labels Jul 26, 2026
@chaeliki chaeliki linked an issue Jul 26, 2026 that may be closed by this pull request
10 tasks
@krestar krestar closed this Jul 27, 2026
@krestar
krestar deleted the feat/13-document-hub branch July 27, 2026 00:16
@krestar
krestar restored the feat/13-document-hub branch July 27, 2026 00:17
@krestar krestar reopened this Jul 27, 2026
@chaeliki
chaeliki removed the request for review from krestar July 27, 2026 00:39
@chaeliki
chaeliki force-pushed the feat/13-document-hub branch from c01079e to 07a40c4 Compare July 27, 2026 07:30
@chaeliki chaeliki added the priority:P0 MVP 진행을 막는 최우선 핵심 작업 label Jul 27, 2026
@chaeliki
chaeliki force-pushed the feat/13-document-hub branch from 67de36b to 5a64b0c Compare July 28, 2026 16:58
@chaeliki chaeliki changed the title feat: 통합 문서함·파일 업로드·문서 준비도 구현 (진행중) feat: 통합 문서함·파일 업로드·문서 준비도 구현 Jul 28, 2026
@chaeliki
chaeliki marked this pull request as ready for review July 28, 2026 17:03
@hywznn

hywznn commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

금일 오전 중으로 확인해보겠습니다

Comment thread src/main/java/com/fowoco/server/file/domain/ScanStatus.java
Comment thread src/main/resources/application.yaml
Comment thread .gitignore
@chaeliki
chaeliki requested a review from hywznn July 29, 2026 04:27
@chaeliki
chaeliki merged commit 51f3c7b into main Jul 29, 2026
4 of 5 checks passed
@chaeliki
chaeliki deleted the feat/13-document-hub branch July 29, 2026 04:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Document] 통합 문서함·파일 업로드·문서 준비도 구현

3 participants