# Profile Management Prompt

아래 프롬프트를 AI에게 전달하고, 원하는 작업과 프로파일 이름을 함께 적으면 됩니다.

## Prompt

```text
너는 이 Spring Boot Maven 프로젝트의 프로파일 관리 담당자다.

요청:
- 작업: [추가 또는 삭제]
- 프로파일 이름: [예: dev, live, stage, local]

프로젝트 규칙:
- Maven 프로파일은 `pom.xml`의 `<profiles>` 아래에 정의한다.
- 각 Maven 프로파일은 `spring-boot-maven-plugin`의 `<profiles><profile>{profileName}</profile></profiles>` 설정으로 같은 이름의 Spring profile을 실행하도록 만든다.
- Spring profile별 설정 파일은 `src/main/resources/{profileName}/application.properties`에 둔다.
- DB 설정 파일은 `src/main/resources/{profileName}/db.properties`에 둔다.
- `{profileName}/application.properties`는 `spring.config.import=classpath:{profileName}/db.properties`를 포함해야 한다.
- 루트 `src/main/resources/application.properties`는 기본 실행 프로파일만 관리한다. 사용자가 기본 프로파일 변경을 요청하지 않았다면 수정하지 않는다.
- `spring-boot-starter-parent`를 다시 추가하지 않는다. 이 프로젝트는 `spring-boot-dependencies` BOM import 방식으로 관리한다.
- `native`, `nativeTest` 프로파일을 추가하지 않는다.

프로파일 추가 작업:
1. `pom.xml`에 같은 이름의 Maven profile이 이미 있는지 확인한다.
2. 없으면 기존 `dev` 또는 `live` 프로파일 블록과 같은 형식으로 새 profile을 추가한다.
3. `src/main/resources/{profileName}/application.properties`를 만든다.
4. `src/main/resources/{profileName}/db.properties`를 만든다.
5. 새 설정 파일은 기존 `dev` 또는 `live` 설정을 참고하되, 프로파일 이름이 들어가는 값은 `{profileName}`으로 맞춘다.
6. DB 접속 정보처럼 민감하거나 환경마다 달라지는 값은 기존 값을 무작정 복사하지 말고 placeholder 또는 사용자가 제공한 값으로 둔다.

프로파일 삭제 작업:
1. `pom.xml`의 `<profiles>`에서 해당 profile 블록만 삭제한다.
2. `src/main/resources/{profileName}` 디렉터리의 설정 파일 삭제 여부를 사용자 요청에서 확인한다.
3. 삭제 대상 프로파일이 루트 `application.properties`의 `spring.profiles.active` 또는 `spring.config.import`에 쓰이고 있으면, 삭제 전에 대체 기본 프로파일을 사용자에게 확인한다.
4. 다른 프로파일이나 공통 설정은 건드리지 않는다.

검증:
- Maven Wrapper를 사용할 수 있으면 `./mvnw validate`를 실행한다.
- 가능하면 `./mvnw help:all-profiles`로 원하는 프로파일만 표시되는지 확인한다.
- 검증을 실행할 수 없으면 그 이유를 최종 답변에 명확히 적는다.

최종 답변:
- 변경한 파일 목록을 짧게 요약한다.
- 추가/삭제된 프로파일 이름을 명시한다.
- 실행한 검증 명령과 결과를 적는다.
```

## Example

```text
위 프롬프트를 참고해서 `stage` 프로파일을 추가해줘.
```

```text
위 프롬프트를 참고해서 `dev` 프로파일을 삭제해줘. 단, 설정 파일도 함께 삭제해줘.
```
