# Github Copilot Prompts로 PR 메세지 반자동화하기

여느 회사나 다 마찬가지겠지만, 우리 회사도 PR 템플릿이 있음. PR 양식은 있지만, 파일에 템플릿 마크다운이 들어가있지 않아서 처음에는 직접 입력을 해야했음,, 우리 회사는 `BitBucket` 을 쓰고 있는데 이 녀석이 깃허브랑 유저 인터페이스가 달라서, 템플릿을 어떻게 추가해야하는지 몰라서 혼자 이것저것 추가하는 나를 보며 팀에서 권한이 없다는거를 알고 추가해주셨음 (권한이 없다는거를 늦게 알았 ^.^,,)

```javascript
##### 목적
-
  
##### 구현 내용
- 파일 이름
  - 구현 내용에 대한 설명

##### 필수 리뷰어
- 

##### 이슈
- 지라 이슈 티켓 연동

##### 테스트
- ex. 유닛 테스트, 스테이징 환경 직접 테스트
```

템플릿이 있다는 것은 체계적이어서 정말 좋았지만, 여기서 기능 하나가 뭉텅이로 들어갈 경우에 구현 내용 란에 모든 파일 이름을 적고, 구현 내용에 대한 세부 내용을 적어야하는게 너무 공수가 많이 들었음

예를 들어 개발을 3시간 했다면, 템플릿에 적는 시간은 10분~15분.. 이게 적은 시간 같아도 손가락도 아프고 정말 비효율적인 시간이었음, 그래서 인공지능이 나왔으니 이거를 활용해서 내 소중한 시간을 다른데서 더 효율적으로 써보자고하는 마음에 사내에서 제공하는 깃허브 코파일럿을 활용하기로 함.

먼저 가능한지부터 확인하기 위해 코파일럿에게 아래와 같이 프롬프트를 만들어서 제공을 해주었음

```javascript
- 모든 응답은 한국어로 만들어줘.
- PR 템플릿에 작성할 내용들을 내가 현재 브랜치에서 작업한 커밋 내용과 최신 HEAD인 `master` 브랜치에 비교해서 내 수정 내역들로 아래 템플릿을 만들어줘.
- 산출물은 단순헤 텍스트 형태가 아니라 `.md` 형태로 내가 바로 복사-붙여넣기 할 수 있어야해.

--- 템플릿 ---

##### 목적
-
  
##### 구현 내용
- 파일 이름
  - 구현 내용에 대한 설명

##### 필수 리뷰어
- 

##### 이슈
- 지라 이슈 티켓 연동

##### 테스트
- ex. 유닛 테스트, 스테이징 환경 직접 테스트
```

이렇게 프롬프트를 제공하니까 어느정도 결과가 도출되긴하는데 수정 내역을 그냥 대충 적는다거나 내용적인 부분에서 부실한 영역들이 있었는데 이 부분들은 프롬프트를 조금 더 자세히 비추상적으로 적으면서 해결을 할 수 있었음.

```javascript
# Copilot Instructions

- All responses must be written in Korean.
- When a PR body is requested, before merging into the `master` branch, the agent should review all changed files and commit messages in the current branch and generate it automatically.
- Do not exaggerate or speculate. Only include verifiable changes.
- The implementation details should be written as follows:
  The indented lines are examples, and detailed modifications should be described as much as possible (not just "file changed").
  - `router.ts` - indicates the changed file.
    - Router update - indicates the detailed changes made in that file.
- Leave the "Issue" section blank so it can be filled in manually.
- The output format must strictly follow the template below.
- Keep the "Required Reviewers" and "Test" sections fixed.
- The result must be presented in Markdown as an easy-to-read code viewer format that users can copy and paste directly as a `.md` file.

Output template:

**목적**
- 

**구현 내용**
- 

**필수 리뷰어**
- 김현우

**이슈**
- 

**테스트**
- 스테이징 확인 (**반영 진행 중**)
```

위의 `.prompt.md` 파일을 정의해두면, 이 파일을 기반으로 컨텍스트로 참조하게하여 프롬프트의 성향을 해당 마크다운 파일에 맞출 수 있음. 그래서 매번 정의할 필요없이 이 마크다운 파일 하나만 있으면 동일한 규격의 비슷한 결과들을 도출해낼 수 있다. 아래와 같이 실제 결과로 도출할 수 있었음.

```javascript
**목적**
- 백오피스 화면 진입 시 문서 제목(document.title)을 페이지 맥락에 맞게 일관되게 표시하도록 개선
- 정적 제목 하드코딩을 제거하고 VITE 환경변수 기반 제목 체계로 통일
- 콘텐츠 상세/수정 화면에서 실제 콘텐츠 제목을 브라우저 탭 제목에 반영

**구현 내용**
- index.html
  - `<title>`을 고정 문자열에서 `%VITE_TITLE%`로 변경
  - `<noscript>` 안내 문구의 앱명도 `%VITE_TITLE%`로 변경
- public/index.html
  - Vite 루트 index.html 사용 구조에 맞게 파일 삭제
- src/composable/useSetDocumentTitle.ts
  - 문서 제목 제어용 컴포저블 신규 추가
  - `setTitle`, `applyTitle`, `restoreTitle`, `clearTitle`, `prevTitle` 반환
  - `restoreOnUnmount` 옵션 지원
  - TanStack 스타일의 `enabled` 옵션 추가(불리언/Ref 모두 지원)
  - `enabled` 상태 변경에 따라 제목 적용/복구 동작 처리
- src/components/layout/Drawer.vue
  - 현재 라우트명을 기반으로 `페이지명 | VITE_TITLE` 형태의 타이틀 계산 로직 추가
  - `useSetDocumentTitle` 연동하여 라우트 전환 시 탭 제목 자동 반영
- src/components/contents/ReportForm.vue
  - `useSetDocumentTitle` 적용
  - 수정 화면(contentId 존재)에서만 동작하도록 `enabled` 조건 적용
  - 조회 데이터 로드 후 `콘텐츠 제목 | VITE_TITLE`로 제목 설정
- src/components/contents/ReportView.vue
  - `useSetDocumentTitle` 적용
  - 조회 데이터 로드 후 `콘텐츠 제목 | VITE_TITLE`로 제목 설정
- src/components/contents/MultiLangForm.vue
  - `useSetDocumentTitle` 적용
  - 다국어 수정 데이터 로드 후 `콘텐츠 제목 | VITE_TITLE`로 제목 설정
- src/components/contents/MultiLangView.vue
  - `useSetDocumentTitle` 적용
  - 다국어 조회 데이터 로드 후 `콘텐츠 제목 | VITE_TITLE`로 제목 설정

**필수 리뷰어**
- 최정은, 윤이경, 박현경, 김정현

**이슈**
- ATIP-11279 - [ti-bo-front] 페이지 이동 시, HTML Document title를 동적으로 변경되도록 페이지 구분 개선

**테스트**
- 스테이징 확인 (**반영 진행 중**)
```

이렇게 반자동화를 해놓으니까 직접 PR 템플릿을 적어나갈 필요 없이 결과물만 복사-붙여넣기 하면 되니까 효율이 넘사로 빨라졌음. 아직도 해결하지 못하는 문제는 개발을 마쳤으면 프롬프팅으로 한번 템플릿을 직접 요청을 해줘야한다는거임. 

완전 자동화하려고 했는데 깃허브처럼 `BitBucket` 에 바로바로 깃액션을 붙일 수 있는 구조가 아니고, `n8n` 으로 자동화를 하려고 해도 신규 서버를 설치해야하는데 기존 빌드 서버들이 엄청 복잡해서 시니어들도 쉽게 건드릴 수 없는 구조.. (보안 회사라 뭐 하나 할때마다 품위올리고 안전 검사 받아야하고 사내 인프라 서비스가 엄청 거대하다보니, 오래 재직한 사람들도 모르는 경우가 많음)

![Image](https://upload.cafenono.com/image/slashpagePost/20260310/160945_Z9taTKTJXQBKojItCS?q=80&s=1280x180&t=outside&f=webp)

암튼 너무 거대해서, 이 비효율을 어떻게 처리할 수 있을까하다가 임시방편으로 이렇게라도 해주고 있음. 액션을 붙일 수 있는 환경을 계속 연구해서 가능해지면 바로 자동으로 연결시키려고함 ^.^,,

For the site tree, see the [root Markdown](https://slashpage.com/timmy.md).
