docs: CLAUDE.md + 슬래시 커맨드 + 워크플로우 가이드 추가
Claude Code 협업 효율화를 위한 문서 체계 구축: - CLAUDE.md: 서비스 맵·코드 규칙·배포 정보 (매 세션 자동 로드) - 슬래시 커맨드 5개: deploy, check-deploy, cache-bust, add-page, add-api - WORKFLOW-GUIDE.md: Plan 모드·서브에이전트·검증 루프 활용 가이드 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
30
.claude/commands/add-api.md
Normal file
30
.claude/commands/add-api.md
Normal file
@@ -0,0 +1,30 @@
|
||||
System1(system1-factory) 새 API 엔드포인트를 생성합니다.
|
||||
|
||||
인자: $ARGUMENTS (예: "consumable-stock 소모품 재고" 또는 리소스명)
|
||||
|
||||
절차:
|
||||
1. 기존 패턴 확인:
|
||||
- system1-factory/api/ 아래 기존 model, controller, route 파일 하나씩 읽어 패턴 파악
|
||||
|
||||
2. Model 생성 (`api/models/<리소스>.js`):
|
||||
- Knex 기반 DB 쿼리 패턴
|
||||
- CRUD 기본 메서드: getAll, getById, create, update, delete
|
||||
|
||||
3. Controller 생성 (`api/controllers/<리소스>Controller.js`):
|
||||
- responseFormatter (res.success, res.error, res.paginated) 사용
|
||||
- try/catch + 에러 핸들링 패턴
|
||||
- 페이지네이션 지원 (GET list)
|
||||
|
||||
4. Route 생성 (`api/routes/<리소스>Routes.js`):
|
||||
- Express Router
|
||||
- auth 미들웨어 적용
|
||||
- RESTful 패턴: GET /, GET /:id, POST /, PUT /:id, DELETE /:id
|
||||
|
||||
5. 라우트 등록:
|
||||
- `api/config/routes.js` (또는 app.js/server.js)에 새 라우트 추가
|
||||
|
||||
6. 생성된 파일 목록 + API 엔드포인트 정리 보고
|
||||
|
||||
주의:
|
||||
- 다른 서비스(system2, tkpurchase 등)의 API 추가 시 해당 서비스의 패턴을 먼저 확인
|
||||
- System3, tkeg는 FastAPI 패턴 (Python)
|
||||
25
.claude/commands/add-page.md
Normal file
25
.claude/commands/add-page.md
Normal file
@@ -0,0 +1,25 @@
|
||||
System1(system1-factory) 새 HTML 페이지를 생성합니다.
|
||||
|
||||
인자: $ARGUMENTS (예: "consumable/stock 소모품 재고 관리")
|
||||
→ 경로와 페이지 제목을 파싱
|
||||
|
||||
절차:
|
||||
1. 기존 페이지를 템플릿으로 사용:
|
||||
- system1-factory/web/ 아래 비슷한 기능의 기존 HTML 페이지를 찾아 참조
|
||||
- 공통 구조: 헤더(nav), 사이드네비, 메인 콘텐츠 영역
|
||||
|
||||
2. 새 HTML 파일 생성 (`system1-factory/web/<경로>.html`):
|
||||
- 공통 CSS: tkfb.css, Tailwind CDN, Font Awesome
|
||||
- 공통 JS: tkfb-core.js, api-base.js
|
||||
- 페이지 제목, 설명 커스터마이즈
|
||||
- 사이드네비에 현재 페이지 active 표시
|
||||
|
||||
3. 대응 JS 컨트롤러 파일 생성 (필요 시):
|
||||
- `system1-factory/web/js/<경로>.js`
|
||||
- 기존 JS 패턴 따르기 (DOMContentLoaded, API 호출 등)
|
||||
|
||||
4. 생성된 파일 목록 보고 + 캐시 버스팅 안내
|
||||
|
||||
주의:
|
||||
- 다른 서비스(system2, system3 등)에 페이지 추가 시 해당 서비스의 패턴을 먼저 확인
|
||||
- HTML의 script/link 태그에 ?v= 버전 포함
|
||||
20
.claude/commands/cache-bust.md
Normal file
20
.claude/commands/cache-bust.md
Normal file
@@ -0,0 +1,20 @@
|
||||
커밋 전 변경된 JS/CSS 파일에 대해 캐시 버스팅 버전을 갱신합니다.
|
||||
|
||||
절차:
|
||||
1. `git diff --name-only HEAD`로 아직 커밋 안 된 변경사항 중 .js, .css 파일 목록 추출
|
||||
- staged + unstaged 모두 포함: `git diff --name-only HEAD` + `git diff --name-only --cached`
|
||||
- untracked 파일도 포함: `git ls-files --others --exclude-standard -- '*.js' '*.css'`
|
||||
|
||||
2. 각 변경된 JS/CSS 파일에 대해:
|
||||
- 해당 파일을 참조하는 HTML 파일을 grep으로 검색 (같은 서비스 디렉토리 내)
|
||||
- `<script src="...파일명...?v=...">` 또는 `<link href="...파일명...?v=...">` 패턴 찾기
|
||||
|
||||
3. 찾은 HTML 참조의 `?v=` 버전을 오늘 날짜 기반으로 갱신:
|
||||
- 포맷: `?v=YYYYMMDD01` (같은 날 여러 번이면 NN 증가)
|
||||
- 기존 ?v= 없으면 추가
|
||||
|
||||
4. 변경된 HTML 파일 목록과 갱신된 버전 번호를 보고
|
||||
|
||||
주의사항:
|
||||
- tkeg는 Vite 빌드이므로 제외 (자동 해시)
|
||||
- 같은 파일의 ?v=를 여러 HTML에서 참조할 수 있으므로 모두 갱신
|
||||
25
.claude/commands/check-deploy.md
Normal file
25
.claude/commands/check-deploy.md
Normal file
@@ -0,0 +1,25 @@
|
||||
NAS 서비스 상태 점검:
|
||||
|
||||
1. SSH로 docker compose ps 실행:
|
||||
```
|
||||
ssh hyungi@100.71.132.52 "cd /volume1/docker/tk-factory-services && export PATH=\$PATH:/volume2/@appstore/ContainerManager/usr/bin && docker compose ps"
|
||||
```
|
||||
|
||||
2. 각 주요 서비스 health check (curl로 확인):
|
||||
- Gateway (30000): curl http://100.71.132.52:30000/
|
||||
- SSO Auth (30050): curl http://100.71.132.52:30050/health
|
||||
- System1 API (30005): curl http://100.71.132.52:30005/api/health
|
||||
- System2 API (30105): curl http://100.71.132.52:30105/api/health
|
||||
- System3 API (30200): curl http://100.71.132.52:30200/health
|
||||
- tkuser API (30300): curl http://100.71.132.52:30300/api/health
|
||||
- tkpurchase API (30400): curl http://100.71.132.52:30400/api/health
|
||||
- tksafety API (30500): curl http://100.71.132.52:30500/api/health
|
||||
- tksupport API (30600): curl http://100.71.132.52:30600/api/health
|
||||
- tkeg API (30700): curl http://100.71.132.52:30700/health
|
||||
|
||||
3. 로컬 vs NAS git 커밋 비교:
|
||||
- 로컬: `git rev-parse HEAD`
|
||||
- NAS: `ssh hyungi@100.71.132.52 "cd /volume1/docker/tk-factory-services && git rev-parse HEAD"`
|
||||
- 차이가 있으면 어떤 커밋이 빠져있는지 보고
|
||||
|
||||
4. 결과를 표로 정리하여 보고 (서비스명 | 상태 | health check | 비고)
|
||||
26
.claude/commands/deploy.md
Normal file
26
.claude/commands/deploy.md
Normal file
@@ -0,0 +1,26 @@
|
||||
전제조건: Tailscale SSH 키 인증 (hyungi@100.71.132.52) 설정 완료
|
||||
|
||||
서비스명: $ARGUMENTS
|
||||
|
||||
배포 실행 절차:
|
||||
1. `git status`로 커밋 안 된 변경사항 확인 → 있으면 사용자에게 경고하고 계속할지 확인
|
||||
2. `git push` 실행
|
||||
3. SSH로 NAS에서 배포:
|
||||
```
|
||||
ssh hyungi@100.71.132.52 "cd /volume1/docker/tk-factory-services && git pull && export PATH=\$PATH:/volume2/@appstore/ContainerManager/usr/bin && docker compose up -d --build $ARGUMENTS"
|
||||
```
|
||||
4. 30초 대기 후 health check:
|
||||
- API 서비스면: `curl -s http://100.71.132.52:<포트>/api/health` 또는 `/health`
|
||||
- Web 서비스면: `curl -s -o /dev/null -w '%{http_code}' http://100.71.132.52:<포트>/`
|
||||
5. 결과 보고 (성공/실패, 걸린 시간)
|
||||
|
||||
서비스별 포트 매핑:
|
||||
- system1-api: 30005, system1-web: 30080
|
||||
- system2-api: 30105, system2-web: 30180
|
||||
- system3-api: 30200, system3-web: 30280
|
||||
- tkuser-api: 30300, tkuser-web: 30380
|
||||
- tkpurchase-api: 30400, tkpurchase-web: 30480
|
||||
- tksafety-api: 30500, tksafety-web: 30580
|
||||
- tksupport-api: 30600, tksupport-web: 30680
|
||||
- tkeg-api: 30700, tkeg-web: 30780
|
||||
- gateway: 30000, sso-auth: 30050
|
||||
Reference in New Issue
Block a user