요구사항
↓
작업 정의
↓
Issue 생성
↓
Branch 생성
↓
Codex 작업
↓
자동 QA
↓
사람 검토
↓
Commit
↓
배포 후보
↓
작업 보고서
단순 AI 코딩:
프롬프트 입력
↓
코드 수정
↓
끝
오케스트레이션:
작업 정의
↓
변경 범위 제한
↓
코드 수정
↓
테스트
↓
위험도 분석
↓
리뷰
↓
기록
관리자 시스템 전체 리팩토링해줘.
문제:
수정 범위가 너무 큼
기존 기능 영향 파악 어려움
테스트 범위가 불명확
Rollback 어려움
Commit 의미가 흐려짐
AI가 필요 이상의 파일을 수정할 수 있음
상담 상태 변경 API에서
상태 변경 + 상태 이력 + Audit Log를
하나의 transaction으로 묶어줘.
범위:
consult/application/update-consult-status
consult.repository.ts
audit-log.repository.ts
제외:
프론트
상품
Notification
DB schema 변경
목적
현재 문제
작업 범위
제외 범위
완료 조건
테스트 조건
보안 조건
금지 사항
# Task: 상담 상태 변경 Transaction 정리
## 목적
상담 상태 변경 시 상태 이력과 Audit Log 누락 가능성을 줄인다.
## 현재 문제
상태 변경과 상태 이력 저장이 서로 다른 흐름에서 실행되고 있다.
## 수정 범위
- update-consult-status.use-case.ts
- consult.repository.ts
- audit-log.repository.ts
## 수정 제외
- frontend
- product module
- notification module
- Prisma schema
## 완료 조건
- 상태 변경, history, Audit Log가 같은 transaction
- 하나라도 실패하면 전체 rollback
- 기존 API 응답 구조 유지
- 동시성 충돌은 기존 409 유지
## 테스트
- 정상 상태 변경
- 잘못된 상태 전이
- Audit Log 실패 rollback
## 보안
- phoneNormalized 응답 금지
- 고객 전화번호 로그 금지
Issue #142
↓
Branch
↓
Commits
↓
QA Report
↓
Troubleshooting
↓
Daily Report
제목
문제 상황
목표
작업 범위
완료 조건
테스트 항목
위험도
관련 화면/API
관련 문서
# [Backend] 상담 상태 변경 Transaction 정리
## 문제
상태 변경, history, Audit Log 저장 흐름이 분리되어 있음
## 목표
3개 작업을 하나의 transaction으로 처리
## 완료 조건
- 성공 시 모두 반영
- 실패 시 모두 rollback
- 기존 응답 유지
- 동시성 409 유지
## QA
- NEW → CALLING
- invalid transition
- concurrent update
- Audit Log rollback
버튼 padding 4px 수정
텍스트 오타 수정
상담 상태 변경 transaction 정리
관리자 Excel ExportJob 도입
PermissionGuard 적용
Webhook signature 검증 추가
백엔드 전체 아키텍처 개선
관리자 시스템 전면 개편
3사 통신사 전체 확장
한 가지 목표가 있는가?
한 번에 리뷰 가능한가?
독립적으로 테스트 가능한가?
독립적으로 commit 가능한가?
문제가 생기면 부분 rollback 가능한가?
feature/142-consult-status-transaction
fix/153-export-expired-file
refactor/161-consult-repository
test/168-permission-e2e
<type>/<issue-number>-<short-description>
feature
fix
refactor
test
docs
chore
hotfix
llm-work start 142
내부:
Issue #142 조회
↓
작업 유형 확인
↓
branch 이름 생성
↓
git switch -c
git status --short
Working tree clean
→ 작업 진행
기존 변경사항이 있습니다.
M src/...
?? ...
AI 작업과 섞일 수 있으므로
현재 변경사항을 먼저 처리하세요.
기본:
dirty working tree면 경고
안전 모드:
작업 시작 차단
옵션:
--allow-dirty
branch
HEAD commit
working tree
현재 테스트 상태
관련 파일 목록
{
"branch": "feature/142-consult-status-transaction",
"baseCommit": "abc123",
"workingTree": "clean",
"taskId": 142
}
작업 전 snapshot
↓
Codex 수정
↓
git diff
↓
예상 범위와 비교
Issue
↓
Task Spec
↓
Prompt Builder
↓
Codex Prompt
작업 목적
현재 문제
수정 허용 파일
수정 금지 영역
아키텍처 규칙
보안 규칙
완료 조건
테스트 조건
결과 보고 형식
Controller에 비즈니스 로직 넣지 않기
transaction은 Use Case에서 관리
Prisma query는 Repository에 두기
외부 API는 Adapter/Worker 사용
표준 error response 유지
민감정보 로그 금지
docs/ai/
coding-rules.md
backend-rules.md
frontend-rules.md
security-rules.md
testing-rules.md
backend-rules.mdController는 HTTP 역할만 담당
Use Case가 transaction boundary 관리
Repository에서 Prisma 접근
중요 변경은 Audit Log 기록
외부 API는 transaction 밖에서 실행
security-rules.md고객 전화번호 로그 금지
Secret 하드코딩 금지
운영 DB 직접 수정 금지
.env 수정 금지
PII 응답 DTO 검토
AI 프롬프트 길이 감소
규칙 일관성 유지
Codex 작업마다 같은 기준 적용
문서 자체가 개발 가이드 역할
수정 허용:
src/modules/consult/**
src/modules/audit-log/**
수정 금지:
prisma/schema.prisma
prisma/migrations/**
deployment/**
.env*
git diff --name-only
↓
allowlist 밖 변경 확인
허용 범위:
4개 파일
범위 밖:
src/modules/product/product.service.ts
→ WARNING
STRICT:
허용 파일 밖 변경 → BLOCK
NORMAL:
허용 범위 밖 변경 → WARNING
OPEN:
범위 제한 없음
DB/권한/보안:
STRICT
일반 백엔드 기능:
NORMAL
대규모 리팩토링:
OPEN + 수동 리뷰
변경 파일
핵심 변경사항
테스트 실행 결과
실행하지 못한 테스트
주의사항
추가 TODO
## 변경 파일
- update-consult-status.use-case.ts
- consult.repository.ts
- audit-log.repository.ts
## 변경사항
- Use Case에서 Prisma transaction 시작
- 동일 tx를 Repository에 전달
- 상태 변경/history/audit 원자성 확보
## 테스트
- typecheck PASS
- consult unit PASS
- integration NOT RUN
## 주의
- 실제 DB 기반 rollback 테스트 필요
완료 조건:
[ ] 상태/history/audit 같은 transaction
[ ] 기존 API response 유지
[ ] 409 충돌 유지
[ ] phoneNormalized 응답 없음
typecheck
test
응답 snapshot
변경 파일
금지 문자열
업무 요구사항 적합성
실제 관리자 UX
아키텍처 적합성
운영 위험
Codex 작업 완료
↓
llm-report qa --staged
↓
Static Check
↓
Tests
↓
Risk Detection
↓
AI Review
PASS
→ commit 후보
PASS_WITH_WARNINGS
→ 사람 검토
BLOCK
→ 수정 후 QA 재실행
TYPE_ERROR
LINT_ERROR
UNIT_TEST_FAILED
INTEGRATION_TEST_FAILED
SCOPE_VIOLATION
SECRET_DETECTED
REQUIREMENT_MISMATCH
UNKNOWN
TYPE_ERROR
LINT_ERROR
일부 명확한 UNIT_TEST_FAILED
SCOPE_VIOLATION
REQUIREMENT_MISMATCH
DB migration 문제
권한 정책 문제
보안 문제
QA 실패
↓
실패 유형 분류
↓
자동 수정 허용?
├─ Yes → Codex 재요청
└─ No → 사람 검토
이전 작업 결과에서 typecheck가 실패했습니다.
원래 요구사항과 수정 범위는 유지하고,
아래 오류만 해결해줘.
오류:
...
조건:
- 새 기능 추가 금지
- 수정 범위 확대 금지
- DB schema 변경 금지
- 완료 후 typecheck 실행
AUTO_RETRY_LIMIT=2
요구:
STAFF는 상담 조회만 가능
구현:
STAFF도 상태 변경 가능
Typecheck:
PASS
Test:
기존 테스트 기준으로 PASS
하지만:
요구사항 불일치
Task Spec 완료 조건
↓
AI Review
↓
사람 기능 검토
Codex
↓
QA
↓
AI Review
↓
Human Approval
↓
Commit / Push
변경 목적과 일치하는가?
불필요한 파일 변경이 없는가?
QA 결과가 정상인가?
DB/권한/보안 변경이 있는가?
배포 영향이 이해되는가?
Task title
Issue number
변경 파일
Git diff summary
refactor(consult): 상태 변경 transaction 경계 정리 (#142)
- 상담 상태 변경/history/audit를 하나의 transaction으로 처리
- 기존 상태 전이와 409 충돌 동작 유지
- rollback integration test 추가
refactor(consult): 상태 변경 transaction 경계 정리 (#142)
또는 commit body:
Refs #142
커밋 → 요구사항 확인 가능
Issue → 실제 코드 변경 확인 가능
Daily Report → Issue 연결 가능
git diff main...HEAD
↓
전체 branch 변경 검토
여러 commit이 존재할 수 있음
중간 수정이 누적됨
최종 branch 상태가 중요함
Branch 전체 변경 파일
전체 테스트
API contract
DB migration
Secret
Task 완료 조건
# Task Report: #142 상담 상태 변경 Transaction 정리
## 상태
COMPLETED
## 작업 목적
상태 변경/history/audit 원자성 확보
## 변경 파일
- ...
## 주요 변경
- ...
## QA
- Typecheck: PASS
- Unit: PASS
- Integration: PASS
- AI Review: PASS
## 위험도
HIGH
## 배포 주의
- DB schema 변경 없음
- 기존 API contract 유지
## 관련 Commit
- abc123
## 다음 작업
- 상태 변경 E2E 보강
BACKLOG
READY
IN_PROGRESS
AI_WORKING
QA
REVIEW
BLOCKED
DONE
DEPLOYED
READY
↓
IN_PROGRESS
↓
AI_WORKING
↓
QA
↓
REVIEW
↓
DONE
↓
DEPLOYED
QA
↓
BLOCKED
↓
IN_PROGRESS
taskId: 142
project: togethermall
type: refactor
domain: consult
risk: HIGH
status: READY
allowedPaths:
- src/modules/consult
- src/modules/audit-log
blockedPaths:
- prisma
- deployment
requires:
- typecheck
- consult-unit
- consult-integration
requiresHumanReview: true
Prompt 생성
QA 선택
Scope 검사
Risk 판단
Report 생성
문서
스타일
작은 UI
검토:
간단 diff 확인
일반 CRUD
프론트 로직
조회 API
검토:
diff + test 결과
상담 상태
Worker
외부 API
Export
Audit Log
검토:
상세 diff + integration test + QA report
Auth
Permission
DB Migration
보안 설정
개인정보
운영 데이터 수정
검토:
반드시 수동 승인
배포 전 별도 점검
Worker Agent:
코드 작성
Reviewer:
diff 검토
QA:
deterministic test
Reporter:
작업 보고서 작성
Codex:
코드 작업
Shell/CI:
검증
로컬 LLM:
요약/보고
사람:
최종 승인
Codex A:
코드 수정
Reviewer Prompt:
diff만 검토
QA:
실제 명령 실행
Reviewer가 Worker 설명을 그대로 믿지 않기
실제 Git diff 기준으로 검토
테스트 결과도 실제 실행 결과 사용
# Failed Task Attempt
## Task
#142 상담 상태 변경 transaction
## 실패
Integration Test 실패
## 원인
AuditLogRepository가 transaction client가 아닌 기본 PrismaService 사용
## 자동 수정
1회 실행
## 결과
해결
## 재발 방지
Repository tx parameter 사용 규칙을 AI coding rule에 추가
transaction 내부에서 Repository가 기본 Prisma 사용
Mapper 없이 Prisma 모델 반환
console.log에 response 출력
기존 API 필드 rename
Repository 메서드는 tx parameter를 지원해야 한다.
Use Case transaction 내부에서는 반드시 전달받은 tx를 사용한다.
실패
↓
Troubleshooting
↓
재발 원인 분석
↓
AI Rule 추가
↓
다음 Codex 작업에 자동 포함
docs/ai/
architecture.md
coding-rules.md
common-mistakes.md
security.md
test-strategy.md
common-mistakes.md# AI 작업 시 자주 발생한 문제
## Repository transaction 누락
- Use Case에서 transaction을 열어도 Repository가 기본 Prisma를 사용했던 사례가 있음.
- transaction 내부 호출에는 tx를 명시적으로 전달할 것.
## API 응답 변경
- 리팩토링 과정에서 기존 response field를 rename한 사례가 있음.
- API contract 변경은 별도 요구가 없으면 금지.
llm-work start 142
llm-work run 142
llm-work qa 142
llm-work review 142
llm-work finish 142
startIssue/Task 읽기
Working Tree 확인
Branch 생성
Before Snapshot
runTask Prompt 생성
Codex 작업
변경 파일 수집
qa0908 QA pipeline 실행
reviewGit diff AI Review
완료 조건 검토
finishCommit message 후보
Task Report 생성
Daily Report 연결
충분히 안정화되면:
llm-work execute 142
내부:
start
↓
run
↓
qa
↓
review
↓
사람 승인 요청
운영 배포
운영 migration
운영 데이터 수정
Critical 권한 변경 승인
Level 1:
보고서/요약 자동화
Level 2:
QA 자동화
Level 3:
Task Prompt/Branch 자동화
Level 4:
AI 코드 작업 + QA 자동 연결
Level 5:
제한적 자동 수정
Level 6:
자동 운영 배포
현재:
Level 2~3
충분히 안정화 후:
Level 4
제한적으로:
Level 5
당분간 지양:
Level 6
Issue / Task
↓
AI Coding
↓
QA Report
↓
Task Report
↓
Commit
↓
Deploy Note
↓
Daily Report
↓
Weekly Report
↓
Monthly Report
↓
Portfolio / Career Record
목적
문제
범위
제외 범위
완료 조건
테스트
보안
완료 기준:
Codex 작업마다 같은 형식으로 요구사항 전달 가능
Issue 번호 기반 branch
Working Tree 검사
base commit 기록
완료 기준:
AI 작업 전후 diff가 명확함
allowedPaths
blockedPaths
변경 파일 검증
완료 기준:
예상 범위 밖 변경 자동 경고
Codex 완료
↓
QA
↓
Review
↓
Task Report
완료 기준:
코드 수정부터 작업 기록까지 하나의 흐름으로 연결
기존 local-llm-work-report 또는 별도 llm-work CLI에
AI 개발 작업 오케스트레이션 기능을 추가해줘.
목표:
Issue/Task → Branch → Codex 작업 준비 → QA → Review → Task Report 흐름을 관리하고 싶다.
조건:
1. llm-work start <task-id> 명령어를 만들어줘
2. Task Spec은 목적, 문제, 수정 범위, 제외 범위, 완료 조건, 테스트, 보안 항목을 가지게 해줘
3. 작업 시작 시 git working tree를 확인하고 변경사항이 있으면 기본적으로 경고해줘
4. 현재 branch, base commit, working tree 상태를 Before Snapshot으로 저장해줘
5. issue/task id 기준 branch 이름 후보를 생성해줘
6. allowedPaths와 blockedPaths를 지원해줘
7. AI 작업 후 git diff --name-only 기준으로 scope violation을 검사해줘
8. blockedPaths 변경은 BLOCK, allowedPaths 밖 변경은 WARNING으로 처리할 수 있게 해줘
9. Task Spec과 docs/ai의 프로젝트 규칙을 합쳐 Codex용 프롬프트를 생성해줘
10. Codex 작업 완료 후 변경 파일, 변경 요약, 테스트 결과, 미실행 테스트, 주의사항을 수집해줘
11. 기존 llm-report qa 파이프라인과 연결해 PASS/PASS_WITH_WARNINGS/BLOCK 결과를 사용해줘
12. type/lint 같은 명확한 실패만 제한적으로 자동 수정 재요청할 수 있게 해줘
13. 자동 재작업은 기본 최대 2회로 제한해줘
14. DB migration, permission, auth, security, production 관련 실패는 자동 수정하지 말고 사람 검토 대상으로 처리해줘
15. 완료 후 Task Report Markdown을 생성해줘
16. Task Report에는 task id, branch, base commit, 변경 파일, QA 결과, 위험도, commit 후보, 남은 TODO를 포함해줘
17. Secret, DATABASE_URL, Authorization header, 고객 개인정보는 AI prompt/report에 포함하지 않게 sanitize 해줘
18. 실제 commit/push/deploy는 기본 자동 실행하지 말고 사용자가 승인하도록 해줘
19. 실행 방법과 테스트 방법을 문서화해줘
작업 범위를 명확하게 제한하는가?
AI 작업 전후 상태를 비교할 수 있는가?
QA를 실제 실행 결과 기준으로 판단하는가?
AI가 자기 결과를 스스로 성공으로 선언하지 않는가?
자동 재작업 횟수가 제한되는가?
DB/권한/보안 변경은 사람 검토로 남기는가?
commit/push/deploy를 무단 실행하지 않는가?
작업 결과가 기존 보고서 체계와 연결되는가?
1인 개발 환경에서 AI/Codex를 활용한 개발 작업 오케스트레이션 시스템을 설계하려고 해.
환경:
1. NestJS + React + Prisma + PostgreSQL 기반 온라인 휴대폰 판매몰을 운영하고 있음
2. Codex로 기능 개발/리팩토링을 자주 진행함
3. 기존에 Git 기반 일일/주간/월간 보고서, Troubleshooting, QA Report 자동화 구조가 있음
4. 작업 하나를 Issue/Task 단위로 정의하고 싶음
5. Task에는 목적, 문제, 수정 범위, 제외 범위, 완료 조건, 테스트, 보안 조건을 넣고 싶음
6. 작업 시작 시 Working Tree와 base commit을 기록하고 issue 기반 branch를 만들고 싶음
7. Codex 작업 이후 allowedPaths/blockedPaths 기준으로 변경 범위를 검증하고 싶음
8. 기존 자동 QA를 실행해 typecheck, lint, test, secret scan, AI Review를 수행하고 싶음
9. 명확한 type/lint 오류 정도만 제한적으로 Codex에게 자동 수정시키고 싶음
10. DB migration, 권한, 보안, 운영 데이터 관련 변경은 반드시 사람이 승인해야 함
11. 최종 commit/push/deploy는 자동으로 실행하지 않고 사람 승인 단계가 필요함
12. 완료된 작업은 Task Report → Daily Report → Weekly/Monthly Report → Portfolio 후보로 연결하고 싶음
요청:
- Task Spec schema
- Issue/branch naming 규칙
- Working Tree/Before Snapshot 구조
- allowedPaths/blockedPaths scope 검증
- Codex prompt builder
- QA pipeline 연결 방식
- 실패 유형 분류
- 제한적 자동 재작업 방식
- Human Approval Gate
- Task Report 템플릿
- Task status/risk 모델
- AI coding rule 누적 방식
- CLI 명령어 설계
- 보안/운영 금지 기준
- 구현 우선순위
를 실무 기준으로 정리해줘.
코드 생성보다 Task 정의를 중요하게 보는가?
작업 범위를 작게 나누도록 권장하는가?
작업 전후 Git 상태를 비교하는가?
실제 테스트와 AI 리뷰를 구분하는가?
AI 결과를 AI 설명만으로 신뢰하지 않는가?
Scope violation을 감지하는가?
자동 수정 반복에 제한이 있는가?
DB/권한/보안 변경에 Human Gate를 두는가?
완전 자동 배포를 성급하게 권하지 않는가?
기존 보고/QA 자동화와 하나의 흐름으로 연결하는가?
allowedPaths와 blockedPaths를 사용하면 Codex가 작업 목적과 관계없는 파일이나 DB/배포 설정을 수정하는 것을 감지할 수 있습니다.docs/ai 같은 문서로 관리해 Controller, Use Case, Repository, transaction, 보안, 테스트 기준을 Codex 작업마다 재사용하는 것이 좋습니다.PASS, PASS_WITH_WARNINGS, BLOCK 상태를 사용하면 작업 완료 여부를 구조적으로 관리할 수 있습니다.