尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗참석 투표 → 자동 팀 나누기 → 경기 결과 입력 → 레이팅 갱신을 하나의 모바일 웹으로 제공한다. 명세: basketball-club-app-spec.md
python -m venv .venv
.venv/Scripts/pip install -r requirements-dev.txt # macOS/Linux: .venv/bin/pip
cp .env.example .env # DATABASE_URL 비우면 sqlite:///./local.db
alembic upgrade head # Windows는 PYTHONUTF8=1 권장
python scripts/seed_members.py --demo # 데모: 운영진 김민수 / PIN 1234
uvicorn app.main:app --reload
.env에 SETUP_TOKEN 설정 → http://localhost:8000/setup?token=...pytestmain(운영) / dev(개발) 브랜치. -pooler 호스트 연결 문자열 사용DATABASE_URL=<main pooled url> alembic upgrade headDATABASE_URL, SECRET_KEY(openssl rand -hex 32), SETUP_TOKEN, SEASONhttps://<도메인>/setup?token=<SETUP_TOKEN> 에서 첫 운영진 생성 (이후 /setup은 404)/admin/members/import 멤버 붙여넣기 → 운영진 지정 → /admin/rating-setup 초기 등급 → 첫 모임 생성kb-sonics, 리전 sin1 = Neon ap-southeast-1 과 같은 싱가포르)main 에 push 하면 Vercel 이 자동 배포DATABASE_URL=<운영 pooled url> alembic upgrade head 먼저 실행 후 pushTEST_DATABASE_URL=<테스트 전용 DB url> pytest (테스트마다 테이블을 지우므로 운영 DB 금지)api/index.py Vercel 진입점
app/config.py 환경변수 + 가중치/기준값 (명세 13장)
app/db.py NullPool 엔진 (서버리스)
app/models.py 데이터 모델 (명세 6장)
app/auth.py 멤버 쿠키 / 운영진 개인 PIN (bcrypt, 5회 실패 10분 잠금)
app/routers/pages.py 멤버 화면: 홈, 투표, 오늘 경기, 기록, 내 기록, /setup
app/routers/admin.py 운영진 화면: 모임, 출석, 팀 짜기, 점수, 게임2 선택, 멤버, 초기 등급, 레이팅, 설정, 작업 기록
app/routers/api.py JSON API (명세 11장, /api/docs)
app/services/balancer.py 전수 탐색 밸런싱 (순수 함수)
app/services/lopsided.py 게임1 일방성 판정
app/services/rating.py openskill 래퍼 + recalculate_from
app/services/stats.py 출석/승률/연승 집계
app/services/ops.py 화면·API 공용 업무 로직
candidates(다시 섞기 후보 5개), candidate_idx, lopsided(판정 결과 — 실제 선택은 game2의 lineup_mode).pin_must_change (임시 PIN 첫 로그인 시 변경 강제), is_owner (관리자)./setup으로 만든 계정이 관리자. 운영진 지정·해제와 PIN 재설정은 관리자만 가능. 그 외 운영 기능은 운영진과 동일.1234(DEFAULT_PIN)로 시작하고, 첫 로그인 때 PIN 변경(1234 재사용 불가) → 내 정보(주/부 포지션·키·몸무게) 확인을 거쳐야 다른 화면 사용 가능. 운영진은 일반 멤버 PIN을 1234로 초기화 가능(운영진 PIN 초기화는 관리자만). 운영진·관리자는 같은 PIN으로 운영진 로그인까지 한 번에 처리. Member.admin_pin_hash → pin_hash 로 변경.position(주, 밸런싱 기준) / position2(부, 선택) / weight_kg(선택, 본인·운영진만 열람, 공개 API 미포함). 일괄 등록은 G/F 형식 지원.member_id와 같을 때만 허용./admin/ratings, 팀 짜기 화면의 "왜 이렇게 나눴나"(운영진 전용)에서만 노출.Attendance.leave_time, "HH:MM") 필수이며 참석 인원에 포함. 출석 체크·팀 짜기·오늘 경기 화면에 ⏰시간 표시.Member.is_guest=True, is_active=False 로 저장되어 이름 선택·멤버 관리·기록에서 제외되고, 실력(1~5, 기본 3)으로 밸런싱에 참여. 같은 이름으로 다시 오면 기록을 이어 쓰고, 운영진이 같은 이름으로 멤버를 추가하면 정식 멤버로 전환.Attendance.proxy_by). 본인이 직접 투표하면 대리 표시 해제. API PUT /api/sessions/{id}/vote 도 운영진이면 대리 처리.