尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
방탈출 테마를 고르려는 사람이 최대 예산과 최소 난이도 조건을 넣으면, 조건에 맞는 테마를 가격 낮은 순 카드로 보여 주는 화면입니다. 「이 조건으로 추천받기」를 누르면 조건에 맞는 후보 중 하나를 AI가 추천하고, 그 이유를 두 줄로 보여 줍니다. • price_raw → price : 쉼표(,)와 '원'을 떼고 정수로 바꿨습니다. price는 2인 이용 기준의 1인당 표시 가격입니다. • difficulty_raw → difficulty : 숫자 값을 그대로 넣고, 임의로 반올림하지 않았습니다. • region_raw → region : 앞뒤 공백만 정리했습니다. • price 또는 difficulty가 빈칸인 행은 0이나 평균으로 채우지 않고 제거했습니다. Gemini를 사용합니다. 브라우저는 조건만 /api/recommend(Vercel 서버 함수)로 보내고, 서버가 data/data.json으로 후보를 다시 만들어 Gemini를 부릅니다. • 현재 최대 예산, 현재 최소 난이도 • 조건에 맞는 후보 중 가격 낮은 순 최대 5개의 name · price · difficulty (detail_url 등 다른 값은 넘기지 않음)查看完整 README ↗
방탈출 테마를 고르려는 사람이 최대 예산과 최소 난이도 조건을 넣으면, 조건에 맞는 테마를 가격 낮은 순 카드로 보여 주는 화면입니다. 「이 조건으로 추천받기」를 누르면 조건에 맞는 후보 중 하나를 AI가 추천하고, 그 이유를 두 줄로 보여 줍니다.
https://zero-escape-pick.vercel.app
| 항목 | 내용 |
|---|---|
| 출처 | 방도장 공개 목록 (https://bangdojang.com/browse?done=not_done&view=list) |
| 수집 시점 | 2026-09-28 |
| 원본 행 수 | 30행 (data/raw.csv) |
| 정제 후 행 수 | 28행 (data/clean.csv, 화면용 data/data.json) |
정제한 주요 열
price_raw → price : 쉼표(,)와 '원'을 떼고 정수로 바꿨습니다. price는 2인 이용 기준의 1인당 표시 가격입니다.difficulty_raw → difficulty : 숫자 값을 그대로 넣고, 임의로 반올림하지 않았습니다.region_raw → region : 앞뒤 공백만 정리했습니다.Gemini를 사용합니다. 브라우저는 조건만 /api/recommend(Vercel 서버 함수)로 보내고, 서버가 data/data.json으로 후보를 다시 만들어 Gemini를 부릅니다.
AI에게 넘기는 값
name · price · difficulty (detail_url 등 다른 값은 넘기지 않음)AI에게 받는 값
name (후보 표의 이름 그대로)지키게 한 규칙
API 키는 Vercel 환경변수 GEMINI_API_KEY에 넣습니다. 키는 서버 함수에서만 읽고, 화면(index.html)에는 들어가지 않습니다.
notes.md의 M10(조건 필터)과 M14(AI 검증표) 기록 기준입니다.
| 경우 | 조건 | 화면 후보 수 | data.json으로 센 수 | AI 추천 | 후보 안? | 이유 속 가격 · 난이도 |
|---|---|---|---|---|---|---|
| 정상 | 예산 30000 · 최소 난이도 3.5 | 5 | 5 | 머니머니패키지 | 예 | 30000 · 3.5 — data.json과 같음 |
| 후보 1개 | 예산 26000 · 최소 난이도 4.0 | 1 | 1 | 멸종위기종 탐사대 | 예 | 26000 · 4.1 — data.json과 같음 |
| 후보 없음 | 예산 25000 · 최소 난이도 4.0 | 0 | 0 | AI를 부르지 않음 (안내 문장만) | — | — |
/api/ 경로가 제한되어 있어, 공개 목록 페이지에서 확인 가능한 30행만 수집했습니다.명령은 모두 프로젝트 루트(mini3-project)에서 실행합니다. Windows는 python ..., Mac은 python3 ...로 실행합니다.
| 순서 | 파일 이름 | 무엇을 만드나 | 실행 명령 (Windows) | 확인 여부 |
|---|---|---|---|---|
| 0 | scripts/00_env_check.py | 파일을 만들지 않음 — pandas · requests · beautifulsoup4 · matplotlib 설치와 버전 확인 | python scripts/00_env_check.py | 확인 안 함 |
| 1 | scripts/01_collect_p1.py | data/raw_p1.csv (공개 목록 1페이지 수집) | python scripts/01_collect_p1.py | 확인 안 함 |
| 2 | scripts/02_collect.py | data/raw.csv (원본 30행) | python scripts/02_collect.py | 확인 안 함 |
| 3 | scripts/03_clean.py | data/clean.csv (정제 28행) | python scripts/03_clean.py | 확인함 |
| 4 | scripts/04_stats.py | 파일을 만들지 않음 — price 기초 통계표를 터미널에 출력 | python scripts/04_stats.py | 확인 안 함 |
| 5 | scripts/05_hist.py | charts/hist.png (가격 분포, 2,000원 구간) | python scripts/05_hist.py | 확인 안 함 |
| 5 | scripts/05_hist_half.py | charts/hist_half.png (가격 분포, 1,000원 구간) | python scripts/05_hist_half.py | 확인 안 함 |
| 6 | scripts/06_by_category.py | charts/by_category.png (난이도별 평균 가격) | python scripts/06_by_category.py | 확인 안 함 |
| 6 | scripts/06_by_category_median.py | charts/by_category_median.png (난이도별 평균 · 중앙값) | python scripts/06_by_category_median.py | 확인 안 함 |
| 7 | scripts/07_export_json.py | data/data.json (화면 · AI 추천용 28개) | python scripts/07_export_json.py | 확인 안 함 |
⚠️
01_collect_p1.py,02_collect.py는 사이트에 요청을 보낸다 · 페이지 수를 늘리지 않는다. 지금 있는data/raw.csv로 다시 만들 때는 3번부터 실행합니다.
확인함 — python scripts/03_clean.py 를 실행해 오류 없이 끝났고(종료 코드 0), 행 수 30 → 28 (빈칸 2행 제거 · detail_url 중복 0), data/clean.csv 28행 저장을 확인했습니다.
화면(index.html)은 data/data.json과 charts/hist.png · charts/by_category.png를 그대로 읽어 보여 줍니다. AI 추천 서버 함수(api/recommend.js)도 data/data.json으로 후보를 만듭니다.
data/data.json과 charts/ 그림을 다시 만듭니다.ggazero/mini3-project)의 main 브랜치에 push합니다.AI 추천은 api/recommend.js(Vercel 서버 함수, POST /api/recommend)가 Gemini를 부르는 방식입니다. API 키는 이 서버 함수에서만 읽고, 화면에는 들어가지 않습니다.
GEMINI_API_KEY로 Gemini API 키를 넣습니다.키 값은 README나 저장소 파일에 쓰지 않습니다. 로컬의 .env · .env.local은 .gitignore로 저장소에 올라가지 않습니다.