Commit Graph

33 Commits (0a64a220cabcf9ab0d2ea8ef805e88ba2b9f164e)

Author SHA1 Message Date
jwkim 0a64a220ca Crowd Pick 합 100% 초과 버그 수정 및 투표 오픈을 킥오프 7일 전으로 변경 2026-06-19 10:36:58 +09:00
jwkim 76eafceee8 날짜별 칩 첫 진입 시 오늘 날짜 가운데 정렬 2026-06-19 09:10:54 +09:00
jwkim f03d3e373c AI 모델 순위 부분 강조 수정 2026-06-18 17:18:14 +09:00
jwkim a8e20d5ac8 누적 랭킹 보기 탭 추가 2026-06-18 17:01:41 +09:00
jwkim 39c2003080 내 지난 예측을 투표 후에만 표시 2026-06-18 15:57:40 +09:00
jwkim b4fc96f299 내 지난 얘측 보기 기능 추가, 한국 멕시코 경기 응원가 1곡 추가 2026-06-18 15:41:39 +09:00
김성경 0e5a63a28b fix: 음악자동재생 + 버그수정 2026-06-18 13:08:51 +09:00
jwkim 2988a59749 투표 제출 CTA 단일 카드 통합 + Red Wave 2026 트랙 추가 2026-06-18 10:27:13 +09:00
김성경 7a68d27693 썸네일 변경 2026-06-17 17:27:44 +09:00
김성경 220eb946c1 Merge branch 'develop' of https://gitea.o2o.kr/castad/o2o-triple-pick into develop 2026-06-17 16:51:59 +09:00
김성경 7c42bd5277 feat: 사운드바 추가 2026-06-17 16:51:50 +09:00
jwkim bac505fa99 댓글 닉네임 새로고침 버튼 추가 2026-06-17 15:38:20 +09:00
jwkim b62bedc665 feat: 댓글 익명화 + 전 경기 적용
- 이메일/투표 게이트 제거 → 완전 익명
- 세션 단위 발급(sessionStorage 캐싱) — 탭 닫으면/시크릿이면 새 닉
2026-06-17 14:47:26 +09:00
jwkim 8a67094510 한국 멕시코 경기 댓글 기능 추가 2026-06-17 11:22:29 +09:00
jwkim 8140cd9e02 모바일 카톡 인앱 브라우저에서 공유링크 안 열리는 문제 해결 2026-06-16 08:48:12 +09:00
jwkim 48885ec80e remove: 경기 전용 비주얼 배너(한국-멕시코) 제거 2026-06-15 17:29:13 +09:00
jwkim 65e7c7571c 한국-멕시코전 전용 공유 카드 + 앱 배너 이미지 2026-06-15 17:22:38 +09:00
jwkim 356706e1b4 Update OG/Twitter share card title 2026-06-15 11:59:34 +09:00
jwkim a031d60f3a Update OG/Twitter share card title 2026-06-15 11:51:23 +09:00
jwkim 6765e12054 Email autocomplete 2026-06-15 11:37:39 +09:00
jwkim 4a0188a443 Vote lock 5min + email autocomplete + detail-page UI tweaks 2026-06-15 11:28:41 +09:00
hbyang 3bcc47c0e8 Schedule chips: horizontal scroll with edge arrows (PC navigable)
Replace hidden-scrollbar row (inaccessible on desktop without touch) with
a ChipScroller: single-row scroll + left/right arrow buttons that auto-hide
at each end and a bg fade. Resets to start on tab switch.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 17:00:24 +09:00
hbyang 955ffae4cf Open voting for all groups by D-2 time + 30h-ahead AI gen; misc fixes
- domain: is_votable → all groups (voting gated by D-2 open ~ kickoff-60m time window, not group)
- worker: AI generation selects matches by opens_at <= now+lookahead (all groups), pre-fills before D-2 open so picks aren't empty; only_missing keeps total calls = 3/match
- config: ai_generate_lookahead_hours=30 (covers daily-only gen cadence)
- Arena: default pick 0:0 (무승부)
- frontend Dockerfile: install from package.json only (macOS-generated lock leaves rollup darwin-x64 stub w/o version → npm "Invalid Version" on linux)

NOTE for deploy: set DEMO_FORCE_OPEN=false and real PUBLIC_ORIGIN in server .env.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 16:43:28 +09:00
hbyang deb1332440 Load all 12 groups' schedule (72 matches) + Naver-style schedule UI
Backend
- teams_data.py: 48-team data (ko/short/en), TLA→FIFA code remap
- config: schedule_all_groups, featured_group("A") — only featured group is votable/AI-predicted
- schedule_fetch: fetch all GROUP_STAGE matches from football-data, KST serialize
- schedule_sync: ingest all groups, unordered-pair match to avoid Group A dup, derive votable from group
- worker: AI generation limited to featured group; settle still covers all
- domain/predictions: is_votable() + MatchOut.votable; reject non-votable submits with 403 MATCH_NOT_VOTABLE

Frontend
- types: Match.votable
- ScheduleBoard: Naver-style date/group tabs + chips; votable(A) cards link to detail with AI split + 참여수, others display-only

Verified: 72 matches (12×6), Group A not duplicated, votable A=6/others=66; A submit 200, B submit 403

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 14:56:24 +09:00
hbyang 86290a7c69 feat(ui): AI 결과 배지 3단계 — 정확/적중/빗나감
스코어까지 맞으면 '정확 ✓'(강조), 승패만 맞으면 '적중 ✓', 그 외 '빗나감'.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 10:25:56 +09:00
hbyang 140e15fb9f feat(stats): 일별 방문자 집계 추가
page_visits 테이블((visit_date, device_id) 유니크) — 하루 1기기 1회 집계.
POST /api/visit(접속 기록), GET /api/admin/visits(일별 순수 방문자, Bearer).
프론트는 App 마운트 시 1회 recordVisit() 호출.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 17:31:23 +09:00
hbyang 51352c7c5c feat(ui): 100만원 챌린지 룰 설명 모달 추가
'100만 원에 도전하기' 버튼 클릭 시 모달 표시 — 배점표(정확5/근접3/승패2/부분1/빗나감0),
누적 1위 상금, 이메일 기준 참여·집계 안내. KO/EN 지원.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 17:22:02 +09:00
hbyang 34f5aae010 feat(share): OG 공유 썸네일(BI 로고) 적용
- BI SVG → OG용 PNG 생성 (og-image 1200x630 + 정사각, 다크 브랜드 배경)
- index.html 에 Open Graph / Twitter 메타 추가 (카카오톡 등 미리보기)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 11:03:57 +09:00
hbyang 1dc21e7916 Merge branch 'develop' of https://gitea.o2o.kr/castad/o2o-triple-pick into develop 2026-06-11 10:49:47 +09:00
hbyang 8a4a23b0cb 전체일정 스코어 조정, utc 시간 -> kst 변경 2026-06-11 10:48:16 +09:00
jwkim c19ed6f1b5 frontend: 월드컵 표현을 글로벌 축구 축전으로 변경 2026-06-11 09:36:46 +09:00
jwkim 1a803b7fa0 포인트 시스템 추가, 프론트 국기 반영 2026-06-10 15:11:56 +09:00
hbyang 6ffe0dfca3 Refactor: Next.js+Firebase → React(Vite) + FastAPI + PostgreSQL
- 백엔드: FastAPI + SQLAlchemy(async) + PostgreSQL, 별도 워커(APScheduler)
- 프론트: React 19 + Vite + TS + Tailwind v4 (기존 UI 이식, API 연동)
- docker-compose: db · api · worker · frontend 일괄 실행
- 경기 일정: openfootball 매일 09:00 크롤링 → DB upsert (신규 경기 자동 삽입+예측 생성)
- AI 예측: GPT·Claude·Gemini 실 API 매일 생성 → DB 저장 → 조회 (목데이터 제거)
- 투표창: 오픈 킥오프 D-2 / 마감 킥오프 1시간 전, lockAt 백엔드 전달→프론트 카운트다운
- 채점/리더보드: docs/SCORING.md 기준 누적 포인트
- crowd: 0 시작, 실제 제출로만 증분
- 구 Next.js/Firebase 파일 제거, README/AGENTS 갱신

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 13:04:35 +09:00