# 00_PROMPTS — Claude Code 실행 프롬프트 모음

## 사전 준비

### 1) Agent Teams 활성화 (`~/.claude/settings.json`)
```json
{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  }
}
```

### 2) Git Worktree 격리 (선택)
```bash
git init ga-commission-system && cd ga-commission-system
git commit --allow-empty -m "init"
git worktree add ../ga-wt-common  -b feat/common
git worktree add ../ga-wt-core    -b feat/core
git worktree add ../ga-wt-batch   -b feat/batch
git worktree add ../ga-wt-api     -b feat/api
git worktree add ../ga-wt-front   -b feat/frontend
git worktree add ../ga-wt-infra   -b feat/infra
```

### 3) 본 docs/ 폴더의 모든 파일을 프로젝트 루트에 배치
- `docs/01_DB_SCHEMA.md` ~ `docs/08_DBA_SPEC.md` (8 spec)
- `docs/00_PROMPTS.md` (this file)

> 각 프롬프트 안에 "docs/0N_*.md 읽어줘" 지시가 들어 있어, Claude Code 가
> 자동으로 해당 spec 을 읽고 그대로 구현합니다.

---

## 프롬프트 1: 리더 단독 — 프로젝트 뼈대 + DB

```
GA(법인보험대리점) 수수료 정산 솔루션 프로젝트를 만들어줘.

docs/01_DB_SCHEMA.md 를 읽고 그대로 구현해줘.

핵심 요약:
- Java 17 + Spring Boot 3.2 + MyBatis 3 (JPA 아님!) + PageHelper
- PostgreSQL + Redis + Flyway
- React 18 + Vite + Ant Design 5 + AG Grid Community
- Gradle 멀티모듈: ga-common / ga-core / ga-batch / ga-api / ga-admin / ga-frontend

작업:
1. settings.gradle / build.gradle / 모듈별 build.gradle
2. application.yml (mybatis-config 포함, mapUnderscoreToCamelCase=true)
3. Flyway V1~V17 SQL 전부 작성 (docs/01 의 스키마/초기데이터/인덱스/파티션/뷰/관리자/테스트데이터)
4. 모듈별 빈 패키지 + 진입점 (GaApiApplication 등)

완료 후 ./gradlew build 가 통과해야 함.
```

---

## 프롬프트 2: 리더 단독 — ga-common 공통 프레임워크

```
docs/02_COMMON_SPEC.md 를 읽고 ga-common 모듈을 그대로 구현해줘.

핵심:
- 신입 개발자가 학습하기 쉬운 단순/명시적 코드 우선
- 패키지 구조: model / exception / util / annotation / aop / auth / security /
              config / mybatis / grid / code / menu / excel / file / system / notification
- 모든 Controller 가 ApiResponse<T> 형태로 응답
- 검색 파라미터는 SearchParam 상속, 페이징은 PageHelper + PageResponse.of()
- @RequirePermission / @DataChangeLog / @ExcelColumn / @Mask 어노테이션 + AOP
- JWT (HS256) + BCrypt + AES-256 CBC 암호화 (EncryptTypeHandler)
- Excel SXSSF + xlsx-streamer 으로 100만건/70만건 처리
- 공통코드 Redis 캐시 (@Cacheable)
- 메뉴 트리 빌더 + 권한 체커
- ga-frontend 의 공통 컴포넌트 (CodeSelect / CodeBadge / SearchForm /
  DataTable / DataGrid / PermissionButton / ExcelExportButton 등) 도 함께 작성

완료 후 ./gradlew :ga-common:build 통과 + 다른 팀원이 ga-common 만 의존하면 즉시 시작 가능해야 함.
```

---

## 프롬프트 3: Agent Teams 5명 병렬 스폰

```
GA 수수료 정산 솔루션의 뼈대 + ga-common 이 완성됐어.
Agent Teams 5명을 병렬로 스폰해줘.

각 팀원은 자기 담당 docs 파일을 읽고 그대로 구현한다:

1) core-architect       → docs/03_CORE_SPEC.md      → ga-core (VO/Mapper/XML)
2) batch-engineer       → docs/04_BATCH_SPEC.md     → ga-batch (8 Step)
3) api-developer        → docs/05_API_SPEC.md       → ga-api  (Controller/Service)
4) frontend-developer   → docs/06_FRONTEND_SPEC.md
                        + docs/09_UI_DESIGN.md     → ga-frontend (13 화면 + 디자인 시스템)
5) dba-architect        → docs/08_DBA_SPEC.md       → V13~V15 + 인덱스/파티션/뷰

의존성:
- core-architect 가 가장 먼저 (다른 팀원이 VO/Mapper 사용)
- batch / api / frontend 는 core 완료 후 병렬 시작
- dba 는 core 의 Mapper XML 검증 후 인덱스/파티셔닝 적용

각 팀원 작업 규칙:
- 담당 모듈만 수정 (다른 팀 코드 건드리지 말기)
- ga-common 의 표준 패턴(ApiResponse, PageResponse, SearchParam, @RequirePermission,
  @DataChangeLog) 을 반드시 따른다
- Mapper XML 은 SELECT * 금지 (필드 명시), 목록은 XxxResp 에 매핑
- 신입이 복붙 후 수정만으로 새 화면 만들 수 있도록 동일 패턴 유지
- 완료 시 리더에게 "[팀명] 완료" 메시지

팀을 만들고 작업을 시작해줘.
```

---

## 프롬프트 4: 리더 단독 — 인프라 + 통합 검증

```
모든 팀원 작업 완료. docs/07_INFRA_SPEC.md 를 읽고 마지막 작업을 해줘.

작업:
1. docker-compose.yml: postgres / redis / api / batch / frontend
2. Dockerfile: 멀티스테이지 (Gradle 빌드 → JRE 17 실행)
3. nginx.conf: React SPA + /api → backend:8080 프록시
4. README.md: 시나리오 A(운영 DB) / B(로컬) / C(Docker) 3 가지 실행 가이드
5. DEVELOPER_GUIDE.md: 신입 개발자 온보딩 (새 화면 만들기 step-by-step)

통합 검증:
- ./gradlew clean build 성공
- cd ga-frontend && npm install && npm run build 성공
- docker-compose up -d --build 전체 기동 후 http://localhost:3000 로그인 동작
- Flyway V1~V17 자동 적용 확인
- 단위 테스트 ./gradlew test 통과

문제 있으면 수정 후 v1.0.0-alpha 태그.
```

---

## 프롬프트 5: 리더 단독 — 단위 테스트 (선택)

```
docs/02_COMMON_SPEC.md / 04_BATCH_SPEC.md 를 참고해 단위 테스트를 추가해줘.

대상:
- ga-common 유틸: MoneyUtilTest / DateUtilTest / MaskUtilTest / EncryptUtilTest
- ga-common 서비스: CommonCodeServiceTest / MenuTreeBuilderTest / PermissionCheckerTest
- ga-batch 핵심 로직: CommissionCalculatorTest / MappingEngineTest

규칙:
- JUnit 5 + Mockito + AssertJ (spring-boot-starter-test 에 포함)
- @Cacheable / @CacheEvict 는 단위 테스트에서 동작 안 함 → 비즈니스 로직만 검증
- Mockito strict stubbing 위반 주의 (@BeforeEach 의 stub 은 모든 테스트가 사용해야 함)
- 모든 테스트 통과 후 커밋
```

---

## 프롬프트 6: 리더 단독 — 운영 DB 배포 (선택)

```
운영 DB(192.168.0.60:55432/trading_ai/ga) 에 V1~V17 마이그레이션 + 테스트 데이터를 적용해줘.

방법:
- Python + pg8000 으로 migrate.py 작성 (저장소 외부에 둔다)
- ga 스키마 존재 여부 확인 후 idempotent guard
- application-trading_ai.yml 프로파일 추가 (currentSchema=ga)
- 실행: ./gradlew :ga-api:bootRun --args='--spring.profiles.active=trading_ai'

확인:
- /api/health 200
- /login admin / admin1234! 로 토큰 발급
- 메뉴 트리 / 공통코드 / 설계사 50명 / 계약 200건 조회 OK
```

---

## 비용 절약 팁
- 리더: Opus / 팀원: Sonnet (하이브리드 모델)
- 5명이 적정. 그 이상은 조율 오버헤드 증가
- 작업 범위 명확 + 서로 독립적일수록 효과적
- `--dangerously-skip-permissions` 사용 시 모든 팀원 동일 권한
