Skip to content

feat: server 세팅 - #22

Merged
chaeliki merged 1 commit into
mainfrom
agent/3-dev-environment-foundation
Jul 21, 2026
Merged

feat: server 세팅#22
chaeliki merged 1 commit into
mainfrom
agent/3-dev-environment-foundation

Conversation

@hywznn

@hywznn hywznn commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

왜 필요한가요?

처음 참여한 팀원이 별도 데이터베이스 없이 서버를 실행하고, 이후 인증·근로자·업무카드 API를 같은 보안·오류·DB 규칙 위에서 개발할 수 있도록 공통 기반을 완성합니다.

Closes #3

무엇이 바뀌나요?

  • Java 17·Spring Boot 4.1 기준 Security, Swagger UI, Flyway 의존성을 연결했습니다.
  • local(H2), dev·prod(PostgreSQL), test Profile을 분리하고 모든 환경의 스키마 관리를 Flyway로 통일했습니다.
  • V1__baseline.sql을 추가했습니다. 도메인 테이블은 각 기능 Issue에서 V2 이후 migration으로 추가합니다.
  • /health, Actuator Health, Swagger만 공개하고 나머지 API는 JWT 구현 전까지 기본 차단합니다.
  • 공통 오류 JSON, 입력값 검증, 인증·권한·404·405·406·415·500 처리와 X-Request-Id 추적을 추가했습니다.
  • UTC Clock, 교체 가능한 UuidGenerator, React 개발 서버용 제한적 CORS를 추가했습니다.
  • local H2 Console은 127.0.0.1에서만 열고, prod Swagger는 비활성화했습니다.
  • GitHub Actions에서 H2 테스트, PostgreSQL 17 migration, 실행 파일 빌드를 검사합니다. Action은 commit SHA로 고정했습니다.
  • README·기여 가이드·PR Template에 실행 방법과 Conventional Commits·PR title 규칙을 반영했습니다.
  • gradlew 실행 권한을 추가했습니다.

어떻게 검증했나요?

  • ./gradlew clean test — 로컬 테스트 8개 통과
  • PostgreSQL 전용 migration 테스트 1개 — 로컬에서는 Docker가 없어 skip, PR CI의 PostgreSQL 17 서비스에서 실행
  • ./gradlew build -x test
  • git diff --check
  • CI YAML 구문 검사
  • local 서버를 18080 포트로 실행해 /health 200 확인
  • Swagger UI·OpenAPI JSON 200 및 공통 오류 Schema 확인
  • H2 Console 200 확인
  • 미구현 POST /workers가 공통 401 JSON과 동일한 request_id를 반환하는지 확인
  • React http://localhost:5173 CORS preflight 확인

보안·개인정보

  • 실제 개인정보, 토큰, API Key, 비밀번호를 추가하지 않았습니다.
  • 브라우저 쿠키 세션을 사용하지 않는 stateless REST/JWT 구조를 전제로 CSRF를 비활성화했습니다. 쿠키 인증 도입 시 재검토해야 합니다.
  • prod는 DB_URL, DB_USERNAME, DB_PASSWORD, CORS_ALLOWED_ORIGINS가 없으면 시작되지 않습니다.
  • 오류 응답은 내부 예외 상세를 노출하지 않고 request_id로 서버 로그와 연결합니다.
  • CORS 기본 허용 주소는 local Client 포트 3000·5173뿐이며, 배포에서는 실제 Client 주소를 명시해야 합니다.

API·DB·운영 영향

  • 기존 공개 API GET /health의 본문 OK는 유지됩니다.
  • 모든 응답에 X-Request-Id 헤더가 추가됩니다.
  • 공통 오류 필드는 timestamp, status, code, message, path, request_id, field_errors입니다.
  • 이후 DB 변경은 V2__...sql부터 순서대로 추가해야 하며 ddl-autovalidate를 유지합니다.
  • 롤백은 이 커밋을 되돌리면 됩니다. V1은 도메인 데이터를 만들거나 삭제하지 않는 baseline입니다.

후속 작업과 참고

  • JWT Access/Refresh Token, 역할, 사업장 격리는 #4에서 구현합니다.
  • Boot가 관리하는 H2 2.4.240이 현재 Flyway의 공식 검증 상한보다 새 버전이라는 경고가 있지만 H2 테스트는 통과합니다. 목표 DB 호환성은 PR CI의 PostgreSQL migration 테스트로 별도 검증합니다.

@hywznn hywznn changed the title 개발환경: 서버 공통 기반을 완성합니다 feat: server 세팅 Jul 21, 2026
@hywznn
hywznn force-pushed the agent/3-dev-environment-foundation branch from fdb5b95 to e23c86d Compare July 21, 2026 07:08
@BcKmini

BcKmini commented Jul 21, 2026

Copy link
Copy Markdown
Member

수정이 필요합니다

@chaeliki
chaeliki marked this pull request as ready for review July 21, 2026 08:06
@chaeliki
chaeliki merged commit 4fa464b into main Jul 21, 2026
1 check passed
@chaeliki
chaeliki deleted the agent/3-dev-environment-foundation branch July 21, 2026 08:07
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.

[Foundation] Spring Boot 개발·검증 기반 정리

3 participants