#!/usr/bin/env bash
# 최소관문 — 핑퐁 사이클에서 화면을 열기 전 "안 깨지고 안 촌스러운가"를 빠르게 본다.
# 무거운 것(테스트·빌드·구조 심사·knip)은 pnpm verify(배포·푸시 하드 관문) 전용이다.
# 로드 확인(dev 서버·흰 화면·콘솔)은 show-screen이 Playwright로 한다 — 여기선 정적 검사만.
#
# type-aware lint와 import 경계를 여기 둔 이유: 저장 훅은 단일 파일 비-type-aware만 본다.
# 그래서 이 둘은 배포 직전까지 한 번도 안 돌았고, 화면을 여러 개 만든 뒤 마지막에 한꺼번에
# 터졌다 — 그때부터 수정·재검 루프가 길어진다. 실사용 관찰에서 "만드는 건 15분인데 검증이
# 20분", "마지막에 lint 지적이 무더기로 뜬다"가 반복해 나온 원인이 이 구조였다.
# 실측 비용은 합쳐 1.4초다. 한 사이클에 몇 건씩 나눠 받는 편이 훨씬 싸다.
set -uo pipefail

echo "🔎 타입 확인 (tsc)..."
if ! pnpm exec tsc -b; then
  echo "✗ preview: 타입 에러 — 화면 열기 전에 고쳐야 함"
  exit 1
fi

echo "🔎 코드 검사 (type-aware)..."
if ! pnpm exec oxlint --type-aware --max-warnings 0; then
  echo "✗ preview: lint 위반 — 지적된 지점만 Edit로 고친 뒤 다시 (파일 전면 재작성 금지)"
  exit 1
fi

echo "🔎 import 경계..."
if ! pnpm exec depcruise src --config .dependency-cruiser.cjs; then
  echo "✗ preview: 레이어 경계 위반 — 배치를 고쳐야 함 (feature-sliced-design 스킬)"
  exit 1
fi

echo "🔎 slop 빠른 검사..."
if ! bash .claude/scripts/slop-check.sh; then
  echo "✗ preview: AI 티(slop) 발견 — 고친 뒤 다시"
  exit 1
fi

echo "✓ preview 통과 — 화면 열 준비 됐어요 (안 깨짐 + 안 촌스러움)"
