코드 작성
↓
AI/Codex 수정
↓
커밋 전 자동 점검
↓
커밋
↓
CI 테스트
↓
배포 전 자동 점검
↓
배포
AI가 예상보다 넓은 파일을 수정할 수 있음
기존 API 응답을 깨뜨릴 수 있음
권한 체크를 빠뜨릴 수 있음
transaction 범위를 깨뜨릴 수 있음
민감정보를 로그에 남길 수 있음
테스트 없이 기능만 완성할 수 있음
배포 시 migration 위험을 놓칠 수 있음
변경 파일 확인
↓
민감정보 검사
↓
typecheck
↓
lint
↓
unit test
↓
integration test
↓
AI diff review
↓
위험도 평가
↓
커밋/배포 가능 여부 판단
TypeScript typecheck
ESLint
Unit Test
Integration Test
E2E Test
Prisma migration 검사
Secret pattern 검사
console.log 검사
대규모 diff 감지
권한 관련 파일 변경 감지
DB schema 변경 감지
AI 코드 리뷰
| 단계 | 목적 | 주요 확인 |
|---|---|---|
| 커밋 전 | 잘못된 코드가 Git에 들어가는 것 방지 | lint, typecheck, secret, 테스트 |
| PR/Push 후 | 변경 전체 품질 확인 | CI, integration, AI review |
| 배포 전 | 운영 영향 확인 | migration, env, permissions, smoke plan |
| 배포 후 | 실제 운영 확인 | logs, error rate, smoke test |
문법/타입 오류
lint 오류
민감정보
debug log
간단 테스트
DB migration
환경변수
외부 API 설정
권한 영향
데이터 변경
Worker 영향
rollback 가능 여부
git commit
↓
pre-commit hook 실행
↓
검사 성공
↓
commit 생성
검사 실패
↓
commit 중단
lint-staged
TypeScript typecheck
변경 파일 대상 lint
unit test 일부
secret scan
console.log 검사
전체 E2E Test
전체 Integration Test
전체 빌드
대량 DB 테스트
외부 API 테스트
{
"lint-staged": {
"*.{ts,tsx}": [
"eslint --fix",
"prettier --write"
],
"*.{json,md}": [
"prettier --write"
]
}
}
변경된 .ts/.tsx
↓
eslint
↓
prettier
format:
자동 수정 가능
lint:
오류면 commit 중단
typecheck:
프로젝트 전체 구조 영향 확인
pnpm tsc --noEmit
잘못된 property 접근
DTO 타입 불일치
함수 인자 변경 누락
Prisma 모델 변경 영향
API 응답 타입 불일치
AI가 함수 signature를 변경
↓
호출부 일부 누락 가능
↓
typecheck로 발견
.env를 커밋하지 않더라도 코드나 문서에 API Key가 들어갈 수 있습니다.AWS Access Key
JWT Secret
API Key
DATABASE_URL
Authorization Bearer token
Webhook Secret
Private Key
Cookie Secret
AKIA...
postgresql://
Bearer eyJ...
PRIVATE KEY
API_KEY=
SECRET=
TOKEN=
정규식만으로 완벽하지 않음
false positive 가능
실제 Secret은 별도 전문 scanner도 고려
.env
.env.production
.env.local
*.pem
*.key
credentials.json
aws-credentials
prod-dump.sql
production-backup.dump
git diff --cached --name-only
결과에 아래가 있으면 중단:
.env
*.pem
*.dump
console.log
console.dir
debugger
TODO REMOVE
TEMP
console.log:
경고 또는 차단
structured logger:
허용
debugger:
차단
README.md
docs/
단순 스타일 파일
정적 이미지
Controller
DTO
UI Component
Query Service
schema.prisma
migration/
auth/
permission/
payment/
consult status
audit-log/
worker/
webhook/
config/
docs 변경:
LOW
UI + API:
MEDIUM
schema.prisma + migration:
HIGH
auth + permission + DB migration:
CRITICAL
요청:
상담 상태 변경 에러 메시지 수정
예상:
2~3개 파일
실제:
27개 파일 변경
이 경우:
변경 범위가 예상보다 큽니다.
리팩토링 또는 자동 포맷팅 영향 여부를 확인하세요.
1~5 files:
일반
6~15 files:
검토 권장
16+ files:
강한 경고
작업 목적
변경 파일 목록
git diff
기존 테스트 결과
DB migration 여부
다음 Git diff를 코드 리뷰해줘.
확인할 것:
1. 작업 목적과 관계없는 변경
2. 기존 기능 회귀 가능성
3. 권한 체크 누락
4. transaction 범위 문제
5. 개인정보/Secret 로그 노출
6. API 응답 호환성 변화
7. N+1 또는 불필요한 DB query
8. 외부 API를 transaction 안에서 호출하는 부분
9. 테스트가 필요한 변경
10. 배포 전 주의할 점
중요:
- 실제 diff에서 확인 가능한 내용과 추정을 구분
- 확신 없는 내용은 가능성으로 표현
- 코드를 임의로 다시 작성하지 말고 리뷰 중심으로 답변
# 변경사항 AI Review
## 1. 전체 위험도
- MEDIUM
## 2. 확인된 문제
- 없음
## 3. 검토가 필요한 부분
- 상담 상태 update 후 detail query invalidate만 수행하고 list query invalidate 여부 확인 필요
## 4. 보안
- Secret 노출 없음
- 전화번호 원본 로그 없음
## 5. DB
- schema/migration 변경 없음
## 6. 테스트 필요
- 상태 변경 후 목록 갱신 테스트
- 권한 없는 사용자 403 테스트
## 7. 배포 전 확인
- 관리자 상담 목록 Smoke Test
PASS
PASS_WITH_WARNINGS
BLOCK
typecheck 실패
lint error
test 실패
Secret 감지
민감 파일 commit
Prisma schema syntax 오류
AI가 회귀 가능성 제기
파일 변경 범위 과다
테스트 부족 가능성
architecture 개선 제안
결정적 검사:
자동 BLOCK 가능
AI 판단:
WARNING 중심
consult/domain 변경:
ConsultStatusService unit test
consult/application 변경:
consult integration test
permission 변경:
permission unit + admin E2E
schema.prisma 변경:
integration 전체 + migration check
ui 변경:
frontend typecheck + 관련 component test
src/modules/consult/**
→ consult unit/integration
src/modules/admin/**
→ admin E2E
prisma/**
→ integration + migration
src/common/error/**
→ exception filter E2E
Local:
lint-staged
typecheck
핵심 unit test
secret scan
CI:
전체 lint
typecheck
unit test
integration test
build
필요 시 E2E
로컬 작업 속도 유지
push 후 전체 검증
개발자 실수 방지
Push / Pull Request
↓
Install
↓
Typecheck
↓
Lint
↓
Unit Test
↓
PostgreSQL 준비
↓
Migration
↓
Integration Test
↓
Build
↓
결과 출력
배포 금지
merge 금지 또는 경고
실패 단계 확인
기본 코드 품질 검증 완료
schema.prisma나 migration 파일이 바뀌면 별도 검사가 필요합니다.prisma/schema.prisma 변경
prisma/migrations/** 변경
DROP TABLE 있는가?
DROP COLUMN 있는가?
NOT NULL 추가인가?
UNIQUE constraint 추가인가?
index 생성인가?
column type 변경인가?
기존 데이터 backfill이 필요한가?
새 nullable column:
LOW
새 index:
MEDIUM
NOT NULL column:
HIGH
DROP COLUMN:
CRITICAL
# Migration Review
## 변경
- consults에 assigned_admin_id 추가
## 위험도
- MEDIUM
## 데이터 영향
- 기존 row는 NULL 허용
## Lock 영향
- 테이블 크기 확인 필요
## Backfill
- 현재 필요 없음
## Rollback
- 신규 column 제거 가능
## 배포 전
- staging migration 실행
- 상담 목록/상세 API 확인
## 배포 후
- Prisma error 확인
- 상담 상태 변경 Smoke Test
ConfigService schema
SSM parameter 목록
.env.example
deployment config
새 환경변수가 추가됐는가?
기본값이 있는가?
운영 SSM에도 추가해야 하는가?
개발/운영 이름이 일치하는가?
Secret인가 일반 config인가?
⚠️ 새로운 환경변수 ALIMTALK_API_URL이 추가되었습니다.
배포 전 운영 SSM 설정 여부를 확인하세요.
PermissionCode
PermissionGuard
Role mapping
Admin auth
RequirePermissions
기존 관리자 role 영향
새 permission 기본값
프론트 메뉴 노출
백엔드 Guard
403 처리
/me 응답
⚠️ 관리자 권한 관련 파일이 변경되었습니다.
배포 전 확인:
- 기존 MANAGER/STAFF 권한 영향
- /me permissions 응답
- 권한 없는 요청 403
- 관리자 메뉴 노출 상태
field 삭제
field 이름 변경
nullable → required
enum 값 변경
응답 구조 변경
status code 변경
기존 프론트에서 사용하는 필드인가?
새 필드는 optional인가?
기존 error.code가 바뀌었는가?
pagination meta 구조가 바뀌었는가?
기존 API 깨짐:
명시적 warning
새 필드 추가:
대체로 안전
필드 삭제/rename:
HIGH risk
| 변경 유형 | 자동 실행 |
|---|---|
| UI | lint, typecheck, 관련 테스트 |
| Consult | unit + integration |
| Permission | unit + E2E + 권한 경고 |
| Prisma | migration review + integration |
| Worker | mock test + retry 검증 |
| Webhook | signature/idempotency test |
| Config | env 변경 경고 |
| API DTO | contract change review |
필요한 검사만 실행
로컬 속도 유지
위험도가 높은 변경은 더 강하게 검증
# QA Report
## 기본 정보
- Project: togethermall
- Branch: feature/consult-status
- Commit: abc123
- Changed Files: 8
- Risk: HIGH
## Static Check
- Typecheck: PASS
- ESLint: PASS
- Secret Scan: PASS
## Tests
- Unit: PASS
- Integration: PASS
- E2E: NOT RUN
## Change Detection
- Prisma Migration: YES
- Permission Change: NO
- API Contract Change: YES
- External API Change: NO
## AI Review
- PASS_WITH_WARNINGS
### Warning
- consult detail response DTO에 새 필드 추가
- 기존 프론트 타입 확인 필요
## 배포 전 확인
- staging migration
- 상담 상세 API
- 관리자 상담 목록
~/shn/daily-report/
togethermall/
qa/
2026-09/
2026-09-08_09-30-00.md
---
date: 2026-09-08
project: togethermall
type: qa-report
branch: feature/consult-status
commit: abc123
risk: HIGH
result: PASS_WITH_WARNINGS
---
코드 변경
↓
QA Report
↓
Commit
↓
Daily Report
↓
Weekly Report
↓
Monthly Achievement
## 테스트/검증
- Typecheck PASS
- Lint PASS
- Consult Integration Test PASS
- AI Review: PASS_WITH_WARNINGS
- 배포 전 API contract 확인 필요
QA에서 문제 발견
↓
수정
↓
필요하면 Troubleshooting 생성
1차:
AI Review
2차:
사람이 확인
3차:
필요 시 Codex 수정
4차:
QA 재실행
리뷰 AI가 잘못 판단할 수 있음
수정하다 변경 범위가 커질 수 있음
무한 수정 루프 가능
Codex 작업
↓
typecheck/test
↓
실패
↓
실패 로그 sanitize
↓
Codex에 수정 요청
↓
QA 재실행
lint 오류
타입 오류
명확한 테스트 실패
format 오류
DB migration
운영 데이터 수정
권한 정책 변경
보안 설정
외부 API 결제/발송 로직
최대 자동 수정:
2~3회
초과 시:
사람에게 중단 및 보고
자동 수정 3회를 수행했지만 테스트가 계속 실패합니다.
실패 테스트:
UpdateConsultStatusUseCase › rollback on AuditLog failure
최근 변경 파일:
- update-consult-status.use-case.ts
- audit-log.repository.ts
수동 확인이 필요합니다.
.env 내용
운영 DB dump
실제 고객 데이터
전화번호 원본
AWS Secret
JWT
Cookie
API Key
실제 상담 메모
git diff
↓
민감 파일 제외
↓
민감 문자열 sanitize
↓
AI Review
커밋 요약
변경 파일 분류
단순 QA 결과 요약
민감한 코드의 1차 리뷰
복잡한 아키텍처 리뷰
어려운 동시성 문제 분석
테스트 전략 개선
복잡한 버그 분석
민감한 원본을 보내지 않기
필요한 부분만 전달
Secret sanitize
실제 고객 데이터 제거
lint-staged
typecheck
Secret file 검사
debugger 검사
완료 기준:
기본적인 실수가 commit 전에 차단됨
검사 시간이 길지 않음
typecheck
lint
unit test
integration test
build
완료 기준:
push 후 전체 기본 품질 자동 검증
실패한 코드는 배포 전 발견
schema.prisma
migration
permission
auth
worker
webhook
API DTO
완료 기준:
위험 파일 변경 시 추가 QA 항목 출력
변경 파일 요약
위험 요소
테스트 누락
보안 검토
배포 체크리스트
완료 기준:
AI 리뷰를 자동 실행하되 commit/block 판단은 사람이 수행
llm-report qa
llm-report qa --staged
llm-report qa --commit HEAD
llm-report qa --since HEAD~3
llm-report qa --project togethermall
llm-report qa --ai-review
--stagedgit add 된 파일만 검사
commit 직전 사용
--commit특정 commit 검토
--ai-review기본 검사 후 sanitize된 diff를 AI에게 리뷰 요청
llm-report CLI에 자연스럽게 추가할 수 있습니다.기존 Node.js 기반 llm-report CLI에 커밋 전 자동 QA 기능을 추가해줘.
조건:
1. llm-report qa 명령어를 추가해줘
2. --staged, --commit, --since, --project, --ai-review 옵션을 지원해줘
3. 변경 파일 목록을 Git에서 수집해줘
4. typecheck, lint, 관련 unit test를 실행하고 결과를 수집해줘
5. .env, *.pem, *.key, *.dump 같은 민감 파일이 staged 되어 있으면 BLOCK 처리해줘
6. DATABASE_URL, Bearer token, AWS key, API Key 같은 문자열을 검사하되 실제 값은 출력하지 마
7. schema.prisma/migration/auth/permission/worker/webhook 파일 변경 시 위험도를 높여줘
8. Prisma migration 변경이 있으면 DROP, NOT NULL, UNIQUE, type 변경 등을 검토 항목으로 표시해줘
9. API DTO/Mapper 변경이 있으면 API contract 변경 가능성을 경고해줘
10. AI Review를 사용할 경우 sanitize된 diff만 전달해줘
11. AI Review는 작업 목적 외 변경, 권한 누락, transaction 문제, 민감정보 로그, API 호환성, 테스트 누락을 검토하게 해줘
12. AI 판단만으로 BLOCK하지 말고 PASS_WITH_WARNINGS 형태로 처리해줘
13. deterministic 검사 실패는 BLOCK 처리해줘
14. 결과를 Markdown QA Report로 저장해줘
15. 기존 일일 보고서에서 QA 결과를 참조할 수 있게 frontmatter를 추가해줘
16. 실행 방법, exit code 기준, 테스트 방법을 문서화해줘
검사가 너무 느리지 않은가?
민감정보를 출력하지 않는가?
AI 결과와 deterministic 결과를 구분하는가?
DB migration을 자동 승인하지 않는가?
권한 변경을 위험 변경으로 보는가?
API 계약 변경을 감지하는가?
실패 시 명확한 exit code를 반환하는가?
0:
PASS 또는 PASS_WITH_WARNINGS
1:
검사 실패 / BLOCK
2:
실행 환경 오류
Secret 감지:
exit 1
Typecheck 실패:
exit 1
AI warning:
exit 0
Git repository 아님:
exit 2
NestJS + React + Prisma + PostgreSQL 프로젝트에서 AI/Codex 작업 이후 커밋 전과 배포 전에 자동으로 코드 품질과 운영 위험을 검토하는 QA 파이프라인을 만들려고 해.
상황:
1. 1인 개발자로 온라인 휴대폰 판매몰을 운영하고 있음
2. AI/Codex로 코드 수정과 리팩토링을 자주 진행함
3. 기존 llm-report CLI로 일일/주간/월간 작업 보고서와 트러블슈팅 문서를 생성하고 있음
4. 커밋 전에는 lint, typecheck, secret scan, 일부 unit test 정도만 빠르게 실행하고 싶음
5. CI에서는 전체 lint, typecheck, unit/integration test, build를 실행하고 싶음
6. schema.prisma, migration, auth, permission, worker, webhook, API DTO 변경은 높은 위험으로 분류하고 싶음
7. DB migration에는 DROP, NOT NULL, UNIQUE, type 변경, backfill 필요 여부를 별도로 검토하고 싶음
8. AI Review는 Git diff를 보고 권한 누락, transaction 문제, API 호환성, 개인정보 로그, 테스트 누락 등을 검토하게 하고 싶음
9. AI 판단만으로 commit이나 배포를 자동 차단하면 안 됨
10. Secret, DATABASE_URL, JWT, 전화번호, 고객 개인정보는 AI Review에 전달하면 안 됨
11. 결과는 QA Report Markdown으로 저장하고 기존 작업 보고서와 연결하고 싶음
요청:
- pre-commit / CI / pre-deploy 역할 분리
- 변경 파일 위험도 분류
- selective test 전략
- Secret scan 기준
- Prisma migration review 구조
- API contract change 감지 기준
- Permission/Auth 변경 검토 기준
- AI diff review 프롬프트
- PASS/PASS_WITH_WARNINGS/BLOCK 기준
- CLI 명령어 및 exit code
- QA Report 템플릿
- GitHub Actions 연결 방식
- 자동 수정 루프의 허용 범위와 제한
- 실무 체크리스트
를 정리해줘.
커밋 전 검사를 너무 무겁게 만들지 않는가?
deterministic 검사와 AI 판단을 구분하는가?
AI 판단만으로 배포를 차단하지 않는가?
DB migration을 높은 위험으로 다루는가?
Permission/Auth 변경을 별도 검토하는가?
API 계약 변경을 다루는가?
Secret sanitize를 강하게 적용하는가?
테스트 선택 실행과 전체 CI를 분리하는가?
자동 수정 반복 횟수를 제한하는가?
기존 작업 기록 자동화와 연결하는가?
.env, .pem, DB dump 같은 민감 파일은 commit 자체를 차단하고, DATABASE_URL, Authorization Bearer token, API Key 같은 문자열도 자동 검사하는 것이 좋습니다.schema.prisma, migration, auth, permission, worker, webhook 같은 영역은 추가 QA 대상으로 분류할 수 있습니다.PASS_WITH_WARNINGS 형태로 사용하고, Secret 감지·typecheck 실패·테스트 실패 같은 결정적 검증만 자동 BLOCK하는 것이 안전합니다./me 권한 응답, 프론트 메뉴 노출, 백엔드 403 처리까지 별도 QA가 필요합니다.