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:
Hyungi Ahn
2026-03-16 15:13:49 +09:00
parent c2e8b58849
commit ec59efcdb6
7 changed files with 259 additions and 0 deletions

View 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)

View 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= 버전 포함

View 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에서 참조할 수 있으므로 모두 갱신

View 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 | 비고)

View 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