Files
ax_hub_mcp_tool/docs/superpowers/specs/2026-09-09-new-pod-module-workspace-scaffolder-design.md
2026-09-09 17:49:34 +09:00

2.6 KiB

Pod Module New Workspace Scaffolder 설계

목표

기존 Pod Module Scaffold(PodScaffolder, /api/v1/scaffold/pod, 기존 화면)을 변경하지 않는다. Scaffold 화면에 별도 Pod Module New 기능을 추가하여, 사용자가 입력한 Pod 모듈명을 기준으로 독립 Tool Pod 프로젝트를 C:\eGovFrameDev-4.3.1-64bit\workspace 아래에 생성한다.

생성 구조

dat-was-payment 입력 시 다음 독립 프로젝트를 생성한다.

C:\eGovFrameDev-4.3.1-64bit\workspace\dat-was-payment\
  settings.gradle
  build.gradle
  README.md
  Dockerfile
  docker-compose.yml
  k8s\
  src\main\java\...
  src\main\resources\...

입력 모듈명은 저장소 루트명, Gradle 루트 프로젝트명, Spring application name에 동일하게 사용한다. 생성 프로젝트는 ../dat-lib-datmt를 Gradle composite build로 포함하고, io.shinhanlife:dat-lib-datmt:0.0.1-SNAPSHOT 좌표를 :dat-was-lib로 치환한다.

새 생성 경로

  • 신규 NewPodProjectScaffolder가 독립 프로젝트 파일을 생성한다.
  • 신규 Controller endpoint가 module name과 사용자가 입력한 서비스 포트를 전달한다.
  • Scaffold 화면에는 기존 Pod Module 탭과 별개인 Pod Module New 영역을 둔다.
  • workspace 경로는 사용자 입력값을 사용하며 기본값은 C:\eGovFrameDev-4.3.1-64bit\workspace이다.
  • 존재하는 프로젝트 경로에는 생성하지 않고 명확한 오류를 반환한다.

기존 기능 보호

다음 기존 파일과 동작은 변경하지 않는다.

  • PodScaffolder
  • /api/v1/scaffold/pod
  • 기존 Pod Module 화면과 기존 Pod 모듈

생성 파일의 주요 설정

  • Spring Boot 3.5.11, Java 21
  • 공통 라이브러리 composite build 연결
  • server.port는 사용자가 입력한 서비스 포트를 기본값으로 사용하고, 환경변수 PORT로 덮어쓸 수 있다.
  • Docker Compose 서비스명은 모듈명의 dat-was- 접두사를 was-로 치환한다.
  • Tool manifest는 새 Pod의 라우팅 함수만 포함한다.
  • README는 공통 라이브러리 위치, 실행 방법, 입력 포트 설정을 안내한다.

검증

  1. 신규 Scaffolder 단위 테스트로 생성 파일, composite build 설정, 기존 경로 거부를 검증한다.
  2. Controller 테스트로 신규 endpoint의 정상 생성과 중복 경로 오류를 검증한다.
  3. 임시 workspace에 생성한 Pod의 compileJava를 실행해 ../dat-lib-datmt 의존성 해석을 확인한다.
  4. 기존 PodScaffolder 관련 테스트를 실행해 기존 생성 경로가 바뀌지 않았음을 확인한다.