보안 감사 결과 CRITICAL 2건, HIGH 5건 발견 → 수정 완료 + 자동화 구축. [보안 수정] - issue-view.js: 하드코딩 비밀번호 → crypto.getRandomValues() 랜덤 생성 - pushSubscriptionController.js: ntfy 비밀번호 → process.env.NTFY_SUB_PASSWORD - DEPLOY-GUIDE.md/PROGRESS.md/migration SQL: 평문 비밀번호 → placeholder - docker-compose.yml/.env.example: NTFY_SUB_PASSWORD 환경변수 추가 [보안 강제 시스템 - 신규] - scripts/security-scan.sh: 8개 규칙 (CRITICAL 2, HIGH 4, MEDIUM 2) 3모드(staged/all/diff), severity, .securityignore, MEDIUM 임계값 - .githooks/pre-commit: 로컬 빠른 피드백 - .githooks/pre-receive-server.sh: Gitea 서버 최종 차단 bypass 거버넌스([SECURITY-BYPASS: 사유] + 사용자 제한 + 로그) - SECURITY-CHECKLIST.md: 10개 카테고리 자동/수동 구분 - docs/SECURITY-GUIDE.md: 운영자 가이드 (워크플로우, bypass, FAQ) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
93 lines
3.7 KiB
Markdown
93 lines
3.7 KiB
Markdown
# Claude Code 워크플로우 가이드 — TK Factory Services
|
|
|
|
## 1. CLAUDE.md 활용
|
|
- 프로젝트 루트의 `CLAUDE.md`가 매 세션 자동 로드 → 프로젝트 컨텍스트 즉시 파악
|
|
- 서비스별 CLAUDE.md 추가 가능 (예: `system1-factory/CLAUDE.md`) → 해당 디렉토리 작업 시 추가 로드
|
|
- git으로 관리되므로 팀원 간 공유 가능
|
|
|
|
## 2. 슬래시 커맨드 (.claude/commands/)
|
|
|
|
| 커맨드 | 설명 | 사용 예 |
|
|
|--------|------|---------|
|
|
| `/deploy` | 원클릭 NAS 배포 | `/deploy system1-web` |
|
|
| `/check-deploy` | NAS 서비스 상태 점검 | `/check-deploy` |
|
|
| `/cache-bust` | 변경된 JS/CSS 캐시 버스팅 일괄 갱신 | `/cache-bust` |
|
|
| `/add-page` | System1 새 HTML 페이지 스캐폴드 | `/add-page consumable/stock 소모품 재고` |
|
|
| `/add-api` | System1 새 API 엔드포인트 스캐폴드 | `/add-api consumable-stock` |
|
|
|
|
커스텀 추가: `.claude/commands/`에 `.md` 파일 추가하면 자동 인식.
|
|
|
|
## 3. Plan 모드 활용
|
|
|
|
적합한 작업:
|
|
- 여러 서비스에 걸친 기능 추가 (예: 새 마이크로서비스)
|
|
- DB 스키마 변경 + API + 프론트엔드 동시 수정
|
|
- 대규모 리팩터링 (30+ 파일 변경)
|
|
|
|
사용법:
|
|
1. `/plan`으로 Plan 모드 진입
|
|
2. Claude가 코드 탐색 → 구현 계획 작성
|
|
3. 계획 검토 · 수정 → 승인
|
|
4. 자동 실행
|
|
|
|
## 4. 서브에이전트 활용 패턴
|
|
|
|
| 에이전트 | 용도 | 예시 |
|
|
|----------|------|------|
|
|
| Explore | 코드베이스 탐색 | "system1과 system2에서 인증 처리 방식 비교해줘" |
|
|
| Plan | 구현 설계 | "tkeg에 새 모듈 추가 계획 세워줘" |
|
|
|
|
- 독립적 탐색은 병렬 실행 가능 (최대 3개)
|
|
- 넓은 범위 검색에 유용 (단순 파일 찾기는 직접 검색이 빠름)
|
|
|
|
## 5. 검증 피드백 루프 (Boris Cherny 패턴)
|
|
|
|
코드 변경 후 검증 사이클:
|
|
1. **빌드 확인** → `docker compose build <서비스>`
|
|
2. **배포** → `/deploy <서비스>`
|
|
3. **health check** → 자동 실행 (deploy에 포함)
|
|
4. **수동 확인** → 브라우저에서 모바일 + 데스크탑 테스트
|
|
|
|
## 6. 효율적 작업 패턴
|
|
|
|
### 프론트엔드 수정 (Vanilla JS 서비스)
|
|
1. HTML/JS/CSS 수정
|
|
2. `/cache-bust`로 캐시 버스팅 갱신
|
|
3. `git commit` + `/deploy system1-web`
|
|
|
|
### API 수정 (Node.js 서비스)
|
|
1. model → controller → route 수정
|
|
2. `git commit` + `/deploy system1-api`
|
|
3. `curl`로 API 테스트
|
|
|
|
### tkeg 수정 (React + FastAPI)
|
|
1. 프론트: `npm run build` (Vite 자동 해시, 캐시 버스팅 불필요)
|
|
2. 백엔드: FastAPI 코드 수정
|
|
3. `git commit` + `/deploy tkeg-api tkeg-web`
|
|
|
|
### 여러 서비스 동시 수정
|
|
1. `/plan`으로 계획 수립
|
|
2. 변경 실행
|
|
3. 영향받는 서비스 모두 재배포: `/deploy system1-api system1-web system2-api`
|
|
|
|
## 7. 자주 쓰는 디버깅 명령
|
|
|
|
```bash
|
|
# DB 접속 (NAS)
|
|
ssh hyungi@100.71.132.52 "docker exec tk-mariadb mysql -uhyungi_user -p\"\$MYSQL_PASSWORD\" hyungi"
|
|
|
|
# 로그 확인 (NAS)
|
|
ssh hyungi@100.71.132.52 "cd /volume1/docker/tk-factory-services && export PATH=\$PATH:/volume2/@appstore/ContainerManager/usr/bin && docker compose logs -f --tail=50 <서비스>"
|
|
|
|
# 컨테이너 상태 (NAS)
|
|
ssh hyungi@100.71.132.52 "cd /volume1/docker/tk-factory-services && export PATH=\$PATH:/volume2/@appstore/ContainerManager/usr/bin && docker compose ps"
|
|
|
|
# PostgreSQL 접속 (tkeg)
|
|
ssh hyungi@100.71.132.52 "docker exec tk-tkeg-postgres psql -U tkbom_user -d tk_bom"
|
|
```
|
|
|
|
## 8. 팁
|
|
- **작은 단위로 커밋**: 서비스별로 나눠서 커밋하면 롤백이 쉬움
|
|
- **CLAUDE.md 업데이트**: 새 서비스 추가 시 서비스 맵 테이블 갱신
|
|
- **메모리 활용**: 반복되는 피드백은 Claude가 자동 저장 → 다음 세션에도 적용
|