You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
2.1 KiB
Plaintext

# 아리 — 작업 러너 (make 대체). `just --list` 로 전체 보기.
# 개발 포트는 흔한 dev 포트(3000/5173/8000/8080)와 충돌을 피해 31xxx 대역 사용.
be_port := "31800" # 백엔드 API
fe_port := "31300" # 프론트(package.json `dev` 스크립트도 -p {{fe_port}})
# 기본: 사용 가능한 레시피 목록
default:
@just --list
# 의존성 설치 (프론트 pnpm + 백엔드 uv)
install:
cd frontend && pnpm install
cd backend && uv sync
# 실행: `just run dev`(둘 다) | `just run fe` | `just run be`
run target="dev":
#!/usr/bin/env bash
set -euo pipefail
case "{{target}}" in
dev)
echo "▶ backend :{{be_port}} / frontend :{{fe_port}} (Ctrl-C 로 종료)"
trap 'kill 0' INT TERM EXIT
( cd backend && uv run uvicorn app.main:app --reload --port {{be_port}} ) &
( cd frontend && pnpm dev ) &
wait ;;
fe) cd frontend && pnpm dev ;;
be) cd backend && uv run uvicorn app.main:app --reload --port {{be_port}} ;;
*) echo "알 수 없는 대상: {{target}} (dev|fe|be)"; exit 1 ;;
esac
# 테스트 (백엔드 pytest + 프론트 vitest)
test:
cd backend && uv run pytest
cd frontend && pnpm test
# E2E (Playwright). 백엔드는 ARI_ALLOW_TEST_RESET=1 LLM_PROVIDER=heuristic 로 기동해야 전부 통과.
e2e:
cd frontend && pnpm exec playwright test --workers=1
# 린트 (ruff + eslint) / 포맷
lint:
cd backend && uv run ruff check .
cd frontend && pnpm lint
format:
cd backend && uv run ruff format . && uv run black .
cd frontend && pnpm format
# health 엔드포인트 확인
health:
@echo "── /api/health ──" && curl -s http://localhost:{{be_port}}/api/health | python3 -m json.tool
@echo "── /api/llm/health ──" && curl -s http://localhost:{{be_port}}/api/llm/health | python3 -m json.tool
# DB 시드 / 마이그레이션
seed:
cd backend && uv run python -m app.seed
migrate:
cd backend && uv run alembic upgrade head
# 빌드 산출물 정리
clean:
rm -rf frontend/.next backend/ari.db backend/.pytest_cache