chore(harness): Claude Code 하네스 구성 — 안전 가드·규칙 검사·배포 스킬
- .claude/settings.json (공유) 신설, hooks 를 settings.local.json 에서 이동 - bash_guard (PreToolUse): 로컬 스택 기동·운영 DB alembic·_test 아닌 pytest·main 강제 push·위험 rm 차단, main push/deploy.sh 는 장중 경고와 함께 확인 요청, backend 커밋 전 유닛 스위트 게이트 - rules_check (PostToolUse): py_compile + CLAUDE.md 규칙(json.dumps, except 후 logger.debug, except-pass, 실시간 계층 DB I/O) — diff 추가 라인만 - session_context (SessionStart): 브랜치·미커밋·장 상태·alembic head 주입 - stop_check (Stop): frontend 변경 시 tsc - auto-orchestrate: 서브에이전트 보고·시스템 알림·질문형 프롬프트 오발동 제거 - /deploy 스킬 + deploy.sh / prod_smoke.sh: 테스트→dev push→main 병합→재기동 감시→공개 API 스모크 - 팀 에이전트·orchestrate 스킬 추적 시작, settings.local.json 추적 해제(.gitignore) - CLAUDE.md §9 하네스 - 훅 테스트 69 passed Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
28
.claude/scripts/prod_smoke.sh
Executable file
28
.claude/scripts/prod_smoke.sh
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env bash
|
||||
# 운영 공개 읽기 API 스모크 — GET 전용, API 키 불필요 엔드포인트만. KIS/주문 경로 호출 없음.
|
||||
# 사용: .claude/scripts/prod_smoke.sh (환경변수 PROD_BASE_URL 로 대상 변경 가능)
|
||||
set -u
|
||||
BASE="${PROD_BASE_URL:-https://stock.shium.net}"
|
||||
ENDPOINTS=(
|
||||
"/api/v1/market/indices"
|
||||
"/api/v1/journals/stats"
|
||||
"/api/v1/analysis/performance"
|
||||
)
|
||||
fail=0
|
||||
echo "== 운영 스모크 ($BASE) $(TZ=Asia/Seoul date '+%Y-%m-%d %H:%M:%S KST') =="
|
||||
for ep in "${ENDPOINTS[@]}"; do
|
||||
tmp="$(mktemp)"
|
||||
out="$(curl -s -o "$tmp" -w '%{http_code} %{time_total}' --max-time 15 "$BASE$ep" 2>/dev/null)" || out="000 0"
|
||||
code="${out%% *}"; secs="${out##* }"
|
||||
bytes="$(wc -c < "$tmp" | tr -d ' ')"
|
||||
valid="-"
|
||||
if command -v python3 >/dev/null 2>&1 && [ "$code" = "200" ]; then
|
||||
python3 -c 'import json,sys; json.load(open(sys.argv[1]))' "$tmp" 2>/dev/null && valid="json-ok" || valid="json-INVALID"
|
||||
fi
|
||||
if [ "$code" = "200" ] && [ "$valid" != "json-INVALID" ]; then mark="OK "; else mark="FAIL"; fail=1; fi
|
||||
printf '%s %s http=%s %ss %sB %s\n' "$mark" "$ep" "$code" "$secs" "$bytes" "$valid"
|
||||
[ "$code" != "200" ] && head -c 200 "$tmp" | sed 's/^/ /' && echo
|
||||
rm -f "$tmp"
|
||||
done
|
||||
[ "$fail" = 0 ] && echo "== 스모크 통과 ==" || echo "== 스모크 실패 — Jenkins 로그/컨테이너 상태 확인 =="
|
||||
exit "$fail"
|
||||
Reference in New Issue
Block a user