Skip to content

feat: 문서 상세 조회 및 HWP/HWPX 업로드 지원 - #91

Merged
chaeliki merged 15 commits into
mainfrom
feat/80-document-detail-hwp
Aug 6, 2026
Merged

feat: 문서 상세 조회 및 HWP/HWPX 업로드 지원#91
chaeliki merged 15 commits into
mainfrom
feat/80-document-detail-hwp

Conversation

@chaeliki

@chaeliki chaeliki commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

요약

Closes #80

fowoco/client PR #174, #228에서 fowoco/server의 통합 문서함 API(#13)를
실제 화면에 연동하며 발견된 문제들을 해결합니다.

GET /documents 응답에 version이 없어 DocumentDetailPage의 확인/반려
버튼이 실제 API를 호출하지 못하고 있었고, 단건 조회 API가 없어 프론트가
전체 목록에서 직접 찾아야 했습니다. 또한 POST /files가 HWP/HWPX를
지원하지 않아 관련 업로드 UI(#158)가 데모 상태로 남아있었습니다.

완료된 범위

  • DocumentItemResponse에 version, task_id 필드 추가
  • GET /documents/{documentId} 단건 조회 API 신설
  • Worker·Task 참조, 연결된 파일 정보(이름·MIME·크기·검사 상태) 포함
  • 정상 조회, 타 사업장 접근 차단(404) 통합 테스트 추가
  • HWPX 업로드 지원: application/hwp+zip MIME 타입 추가 (한컴 공식 확인)
  • HWP 업로드 지원: 정식 MIME 타입이 없어 OLE Compound File 내부
    FileHeader 스트림의 signature("HWP Document File")를 직접 검증
    (Apache POI POIFS 사용)
    • 확장자가 .hwp면 MIME 타입과 무관하게 항상 시그니처로 검증

검증

  • ./gradlew clean test
  • GET /documents/{documentId} 정상 조회 (version, task_id, 파일 정보 포함)
  • GET /documents/{documentId} 타 사업장 접근 시 404
  • DocumentItemResponse 목록 조회에 version, task_id 포함 확인
  • HwpSignatureValidator 단위 테스트 4개 (정상 signature, 잘못된 signature,
    OLE 아닌 파일, 빈 파일)
  • POST /files 통합 테스트: HWP(시그니처 검증 통과/실패), HWPX(MIME 검증)
    실제 업로드로 확인

참고

@chaeliki chaeliki added area:server Spring Boot API·도메인·DB·tenant·Task Workflow 영역; Prompt·모델·Provider 구현 제외 priority:P0 MVP 진행을 막는 최우선 핵심 작업 security:privacy 개인정보·접근권한·토큰·보안 영향이 있는 작업 type:feature 사용자 또는 Agent가 사용하는 기능 개발 labels Aug 5, 2026
@chaeliki
chaeliki marked this pull request as ready for review August 6, 2026 13:44
@chaeliki
chaeliki requested review from hywznn and krestar August 6, 2026 13:44
@hywznn

hywznn commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

파일을 업로드해서 저장하고 file_id를 발급한다
-> 여기까지에서 agent팀과의 호출부는 이상이 없는데
HWPX 실제 파일 구조 검증방식은

Agent는 HWPX의 MIME만 보지 않고 실제 ZIP 파일을 열어서 내부 mimetype=application/hwp+zip 값과 Contents/section0.xml 존재 여부를 확인

이제 업로드 후 초안 작성을 해주다보니 검증방식에서 서버에서와 아래랑 위랑 차이가 있습니다

Server는 현재 요청 MIME이 application/hwp+zip이면 일반 문자열도 HWPX로 허용

FileService에 .hwpx 전용 분기를 추가하고, HwpSignatureValidator와 같은 위치에 HwpxSignatureValidator를 만들어 다음 내용을 검사하면 좋을 듯 합니다

  • 정상적인 ZIP 파일인지 -> 이건 초안 작성을 위해
  • 내부 mimetype 값이 application/hwp+zip인지 -> 얘도 초안 작성을 위해
  • Contents/section0.xml 또는 호환 경로가 존재하는지 -> 이제 여기서 section0 section1 로 xml값을 건드려서 초안 작성해주기 때문

+) 위 검증 방식이 생기다보니 415 거절 테스트도 추가 될 것 같아요

이 작업을 한 후에 나중에 " 데모에서 업로드 후 자동 편집·변환까지 보여줄 경우 " 에 대한 후속작업이 편해질 것 같습니다..!

물론 지금 바로 승인해도 업로드 기능에는 지장이 없기에 위 내용도 같이 후속작업으로 하면 되기에 승인하겠습니다 !!

저는 이슈 새로 파서 같이 후속작업으로 넘기는걸 추천하고 싶습니다 1!

Comment thread src/main/java/com/fowoco/server/file/application/FileService.java
@chaeliki
chaeliki merged commit ede7880 into main Aug 6, 2026
4 checks passed
@chaeliki
chaeliki deleted the feat/80-document-detail-hwp branch August 6, 2026 14:43
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][P0] 문서 상세 조회·상태 표현·HWP/HWPX 업로드 보완

2 participants