복약/건강 도메인을 다루는 백엔드 프로젝트입니다.
docker compose up -d
# 종료: docker compose down
# 데이터 초기화: docker compose down -v- 이미지:
mysql:8.4.6(운영 NCP MySQL과 동일 계열) - 접속:
localhost:3306, DBppiyaki, 유저ppiyaki/ 비밀번호ppiyaki(로컬 전용 기본값) - 데이터는
ppiyaki-mysql-data이름붙은 볼륨에 저장된다.
./gradlew bootRun --args='--spring.profiles.active=local'local프로필은application-local.yml을 사용해 위 Docker MySQL에 연결한다.- 프로필 없이 실행하면
application.yml의 기본 H2 URL을 사용한다 (빠른 스모크 테스트용).
./gradlew test- 테스트는 H2 인메모리 DB를 사용한다 (CI와 동일).
- 작업은 이슈부터 —
.github/ISSUE_TEMPLATE/task.md로 이슈를 만들고 번호를 받는다. develop에서feature|fix|refactor|chore/<요약>-#<이슈번호>브랜치를 판다.- 커밋은 AngularJS 컨벤션(
type: 제목), PR 제목은type(scope): 제목형식. - 푸시 전
./gradlew checkstyleMain spotlessCheck test통과 확인. - PR 템플릿의
AS-IS/TO-BE를 채우고, 리뷰어 1명 승인 후 Squash merge.
- 유지 브랜치:
main,develop - 작업 브랜치:
develop에서 파생 (feature,refactor,chore,fix) - 브랜치 이름 예시:
feature/made-something-new-#123 - 이슈는
.github/ISSUE_TEMPLATE/task.md로 생성하고, 이슈 번호를 브랜치 이름 뒤에 붙인다.
main직접 푸시 금지, PR 필수- 리뷰어 1명 승인 후 머지
- 머지 방식은
Squash merge - PR 제목 형식 고정:
type(scope): 제목 - PR 본문 템플릿 사용:
.github/PULL_REQUEST_TEMPLATE.md - PR 본문은
AS-IS,TO-BE를 간결하게 작성 - 예외 머지 시, 머지 후 24시간 이내
Post-Review수행
- AngularJS commit convention 사용
- 타입:
feat,fix,docs,style,refactor,test,chore - 형식:
feat: 제목
- 본문 (선택)
- 빌드/테스트 통과 상태에서만 머지
- 최소 확인 명령어:
./gradlew checkstyleMain spotlessCheck
./gradlew test- 시크릿(API 키/토큰/비밀번호) 하드코딩 금지
- 복약 기록/건강 프로필 등 의료정보 원문 노출 금지
- 로그/샘플/스크린샷에 민감정보는 마스킹 처리
- 문서 인덱스:
docs/ai-harness/00-index.md - 하네스 규격:
docs/ai-harness/01-harness-spec.md - 워크플로우:
docs/ai-harness/02-agent-workflow.md - 품질 게이트:
docs/ai-harness/03-quality-gates.md - 보안 정책:
docs/ai-harness/04-security-policy.md - 프롬프트 운영:
docs/ai-harness/05-prompt-ops.md
- 기본 Spring 문서:
HELP.md