尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗티머니 단말기 A/S 기사님이 차고지에서 수리 대상 차량을 기다리는 시간을 줄이기 위한 프로토타입. 차량번호 끝 4자리 → 종점까지 남은 정류장 수 & 예상 도착 시간(ETA)을 보여줍니다.
Next.js(App Router) · TypeScript · Tailwind CSS · Supabase · Vercel
/api/bus/search?q=1234vehicles 테이블에서 끝자리 일치 차량(노선ID, 종점순번) 조회getBusPosByRtid) 호출 → 해당 차량의 현재 구간순번(sectOrd) 추출ETA = (종점순번 - 현재순번) × 정류장당 평균시간(1.5분) 계산 → 대시보드 표시공공 API는 노선ID 기준이라 차량번호만으로는 위치를 못 찾습니다. 그래서 Supabase가
차량번호 → 노선ID매핑을 담당합니다.
npm install
supabase/schema.sql 실행routes ← supabase/routes.csv (노선 658개)vehicles ← supabase/vehicles.csv (차량 9,575대)node scripts/fill-last-seq.mjs (노선별 종점순번을 Supabase routes.last_seq 에 직접 기록)npm run dev → http://localhost:3000CSV는 사내
차량단말기버전-*.xls에서 추출한 실데이터입니다. (표준노선ID=busRouteId, 차량번호=plainNo 로 공공 API와 매칭)last_seq가 비어있는 노선은 ETA 대신 현재 위치만 표시됩니다.
| 변수 | Vercel 등록 | 설명 |
|---|---|---|
PUBLIC_DATA_API_KEY | ✅ 필수 | 공공데이터포털 버스위치 API 인증키 |
NEXT_PUBLIC_SUPABASE_URL | ✅ 필수 | Supabase 프로젝트 URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY | ✅ 필수 | Supabase anon 키 |
SUPABASE_SERVICE_ROLE_KEY | 선택 | RLS 우회 읽기용 service_role 키 |
SUPABASE_DB_HOST/PORT/USER/PASSWORD | ❌ 불필요 | 로컬 스크립트(적재·last_seq) 전용. 앱 런타임 미사용 |
로컬은 .env.local, 배포는 Vercel > Project > Settings > Environment Variables 에 위 ✅ 3개만 등록하면 됩니다.
https 실패 시 http 자동 폴백).# 이미 git init + 최초 커밋은 되어 있음. 원격만 연결:
git remote add origin https://github.com/<계정>/<레포>.git
git branch -M main
git push -u origin main
⚠️ 회사 차량 데이터(
supabase/vehicles.csv,routes.csv)와.env.local은.gitignore로 푸시 제외됩니다. 데이터는 이미 Supabase에 있으니 배포엔 불필요합니다. (다른 PC에서 재적재하려면 원본.xls에서 CSV 재생성)
lib/eta.ts 의 AVG_MIN_PER_STOP (정류장당 평균 분) — 시간대/노선별로 보정 가능last_seq(종점순번)는 노선마다 다름 → 정확도를 위해 노선별 실제 정류장 수로 채워야 함