Skip to content

docs: OpenAPI 기반 공유용 Swagger HTML 자동 배포#52

Merged
hywznn merged 3 commits into
mainfrom
agent/swagger-api-pages
Jul 24, 2026
Merged

docs: OpenAPI 기반 공유용 Swagger HTML 자동 배포#52
hywznn merged 3 commits into
mainfrom
agent/swagger-api-pages

Conversation

@hywznn

@hywznn hywznn commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Closes #51

왜 필요한가요?

로컬 /swagger-ui.html은 서버를 실행한 개발자만 볼 수 있습니다.
Client·AI·기획 담당자가 현재 main의 실제 API 계약을 같은 링크로 확인할 수
있도록 공유용 문서가 필요합니다.

무엇이 바뀌나요?

  • Spring Boot를 test profile로 실행해 실제 /v3/api-docs를 추출합니다.
  • OpenAPI JSON을 검증한 뒤 정적 Swagger HTML과 다운로드용 JSON을 생성합니다.
  • 기존 DB 문서 Pages 하위의 /api/에 함께 배포하여 Pages 배포가 서로
    덮어쓰지 않게 했습니다.
  • PR에서는 api-docs-site Artifact로 병합 전 결과를 확인할 수 있습니다.
  • Worker 요청 DTO가 display_namedisplayName을 중복 노출하던 OpenAPI
    Schema를 실제 snake_case 계약으로 교정하고 회귀 테스트를 추가했습니다.
  • README와 docs/api-documentation.md에 초보자용 확인·재생성 방법을
    정리했습니다.

보안 기준

  • 운영·Staging DB나 운영 API에 연결하지 않고 test profile과 H2만 사용합니다.
  • 실제 개인정보·계정·JWT·Refresh Token은 문서에 포함하지 않습니다.
  • 공유 문서에서는 Try it out과 인증 입력을 비활성화했습니다.
  • 생성용 임시 서버 주소는 배포 OpenAPI JSON에서 제거합니다.
  • 운영 profile의 Springdoc 비활성화 정책은 변경하지 않습니다.

리뷰할 부분

  • chaeliki: Worker 요청 DTO의 canonical snake_case Schema가 Client 계약과
    맞는지 확인해 주세요.
  • krestar: GitHub Pages 조립 방식과 공개 문서 보안 범위를 확인해 주세요.
  • 병합 후 예상 주소: https://fowoco.github.io/server/api/

검증

  • ./gradlew clean test
  • node --test scripts/api-docs/generate-site.test.mjs scripts/db-docs/generate-site.test.mjs
  • ./scripts/api-docs/generate.sh
  • 생성 결과: OpenAPI 3.1.0, 23개 path, 27개 operation
  • 브라우저 검증: endpoint 27개 표시, 읽기 전용 안내 표시, 인증 입력 숨김,
    console error 없음
  • Workflow YAML 및 git diff --check 검증

@hywznn
hywznn requested review from chaeliki and krestar July 24, 2026 11:59
@hywznn hywznn added area:server Spring Boot API·도메인·DB·tenant·Task Workflow 영역; Prompt·모델·Provider 구현 제외 priority:P1 핵심 작업 다음으로 처리할 중요 작업 status:in-review 구현을 마치고 리뷰 또는 병합을 기다리는 작업 type:tooling 테스트·검증·CI·개발 편의 도구 작업 type:docs README·Wiki·API 설명 등 문서 작업 labels Jul 24, 2026

@krestar krestar left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GitHub Pages 조립 방식과 공개 문서 보안 범위를 확인했습니다.

기존 DB 문서는 site/ 루트에 유지하고 API 문서를 site/api/에 내려받은 뒤 하나의 Pages Artifact로 배포하므로 두 문서가 서로 덮어쓰지 않습니다.
프로젝트 Pages 경로와 상대 링크 구성도 맞아 병합 후 주소는 https://fowoco.github.io/server/api/ 가 맞습니다.
PR에서는 미리보기 Artifact만 생성하고 실제 Pages 배포는 main push에서만 실행됩니다. OpenAPI도 운영·Staging이 아닌 test profile/H2에서 추출하며, 배포 명세에서 임시 서버 주소를 제거하고 Try it out과 인증 입력을 비활성화했습니다. CSP에서 외부 API 연결도 허용하지 않고 운영 profile의 Springdoc 비활성화 정책도 유지됩니다.
공개 결과에는 API 경로·Schema·비민감 예시와 빌드 정보만 포함되며 실제 개인정보, 토큰, 계정 또는 DB credential이 포함되지 않는 것을 확인했습니다.

@hywznn
hywznn marked this pull request as ready for review July 24, 2026 16:48
@hywznn

hywznn commented Jul 24, 2026

Copy link
Copy Markdown
Contributor Author

@chaeliki Worker 요청 DTO의 Swagger 필드명 수정 내용을 간단히 공유합니ㅏㄷ !

실제 HTTP JSON은 기존부터 Jackson 설정과 @JsonProperty에 따라
snake_case였지만, Springdoc이 생성자 property와 Java getter/field 이름을
각각 읽으면서 일부 Schema에 display_namedisplayName이 동시에 표시되고
있었습니다.

이번 PR에서는 아래 요청 DTO 필드에 @Schema(name = "...")를 명시해
OpenAPI의 canonical 이름을 실제 JSON과 동일한 snake_case 하나로
통일했습니다.

  • WorkerCreateRequest
  • WorkerPatchRequest
  • WorkerDocumentCreateRequest
  • WorkerDocumentPatchRequest

예: displayName → display_name, workStatus → work_status,
expectedVersion → expected_version, documentType → document_type

런타임 요청 처리나 DB Schema는 변경하지 않았습니다. /v3/api-docs에서
camelCase 중복 property가 다시 생기지 않는 통합 테스트도 추가했습니다.
Worker·Client 계약 관점에서 확인 부탁드립니다.

@hywznn
hywznn merged commit a1a6b4c into main Jul 24, 2026
4 checks passed
@hywznn
hywznn deleted the agent/swagger-api-pages branch July 24, 2026 16:57
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:P1 핵심 작업 다음으로 처리할 중요 작업 status:in-review 구현을 마치고 리뷰 또는 병합을 기다리는 작업 type:docs README·Wiki·API 설명 등 문서 작업 type:tooling 테스트·검증·CI·개발 편의 도구 작업

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Docs] OpenAPI 공유용 Swagger HTML 자동 배포

2 participants