Files
playuniare.sori.studio/docs/update.md

67 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 버그 수정 및 작업 기록
## 2026-06-19
- Vue 3와 Vite 기본 프로젝트를 생성했다.
- Tailwind CSS Vite 플러그인을 적용했다.
- 기본 샘플 화면을 프로젝트 안내 화면으로 교체했다.
- UGREEN NAS Docker 테스트·운영 배포 문서를 작성했다.
- AI 작업 지침과 초기 명세, 화면 구조, 할 일, 의사결정 문서를 추가했다.
- Vue 프로덕션 빌드, Docker Compose 설정, Docker 이미지 빌드와 Nginx
헬스체크를 검증했다.
- NAS의 기존 `uniare/config/www/images`를 읽기 전용으로 공유하는 Compose
설정과 `/card-assets` Nginx 경로를 추가했다.
- 로컬 Socket.IO 기본 포트를 `31873`으로 변경하고 운영 리버스 프록시 원칙을
문서화했다.
- NAS HTTP 포트 충돌을 해결하기 위해 테스트·운영 포트를 환경변수로
변경하고 `port is already allocated` 복구 절차를 추가했다.
- NAS ACL로 인한 카드 이미지와 favicon의 403 오류를 해결하기 위해 Nginx
워커 UID와 정적 파일 권한을 조정했다.
- 테스트는 로컬에서 수행하고 NAS에는 운영 컨테이너만 배포하도록 Compose와
배포 문서를 단순화했다.
- 운영 주소 `http://playuniare.sori.studio`와 향후 데이터 마이그레이션
원칙을 문서화했다.
- 3840×2160 표준 플레이 보드를 반응형 화면에 적용하고 카드 크기 기준
가이드를 추가했다.
- 보드 좌우 여백에 양쪽 플레이어의 라이프와 상태 정보를 표시하는 패널을
배치했다.
- `/card-assets`의 실제 카드 한 장을 보드 기준 크기로 표시하고, 보드
정규화 좌표를 사용하는 마우스·터치 드래그를 구현했다.
- 로컬 개발에서 운영 카드 자산을 사용할 수 있도록 `.env.local` 예시를
현재 운영 주소로 수정했다.
- 화면과 배포 점검에 사용하는 기준 카드를
`ua01/EX02BT_CGH-2-007.png`로 변경했다.
- 선택 카드 조작 바를 추가하고 앞면·뒷면, 탭·언탭, 맨 위 레이어 이동을
구현했다.
- 카드 뒷면 임시 스타일과 키보드 포커스 선택을 추가했다.
- 독립 카드 인스턴스 3장을 겹쳐 배치하고 선택·드래그 시 최상단으로 올리는
레이어 처리를 추가했다.
- 선택 카드의 정규화 좌표와 상태를 표시하고 탭 회전 상태의 보드 경계 계산을
보강했다.
- 기존 덱 빌더의 `series`와 `cards` 쿼리를 검증해 카드 수량만큼 독립
인스턴스로 확장하는 덱 파서를 추가했다.
- 불러온 카드를 내 덱 영역에 뒷면으로 쌓고 잘못된 항목은 오류로 표시한다.
- 게임 화면의 고정 헤더를 제거하고 16:9 보드가 뷰포트를 최대한 채우도록
변경했다.
- `F` 키 전체화면, 카드 더블클릭 탭·언탭, 우클릭 카드 조작 메뉴를
추가했다.
- 내 덱의 1장 드로우와 셔플을 구현하고 손패 카드를 화면 하단에 자동
정렬하도록 했다.
- 우클릭 메뉴에 손패, 덱 위, 덱 아래, 무덤 이동 명령을 추가하고 영역별
덱·손패 카운터를 연결했다.
- 덱 위에서 1~10장을 공개해 중앙에 정렬하고 각 카드를 기존 우클릭 메뉴로
정리하는 기능을 추가했다.
- Vue Router와 Pinia를 도입하고 메인 화면을 비공개 방 대기실로 변경했다.
- 덱 URL 등록과 50장·동일 카드 4장·트리거별 4장·AP 분리 검증을 추가했다.
- 게임 진입 후 첫 손패 7장, 1회 멀리건, 라이프 7장 세팅을 구현했다.
- 턴 시작 시 선후공별 AP·드로우를 처리하고 잠기지 않은 내 필드 카드를
일괄 언탭하도록 했다.
- 게임 보드 기능이 커짐에 따라 후속 작업에서 영역 상태와 조작 로직을
composable·store로 분리할 항목을 등록했다.
- Socket.IO 서버와 실제 방 생성·참가·덱 등록·준비 동기화를 추가했다.
- 두 플레이어가 모두 준비하면 각 좌석에 맞는 게임 시작 정보를 전달하도록
구현했다.
- 방을 이동할 때 이전 Socket.IO 채널에서 확실히 나가도록 정리했다.
- Nginx의 `/socket.io` 프록시와 Docker 내부 실시간 서버 서비스를 추가했다.
- 방 생성부터 양쪽 게임 시작까지 검증하는 2인 통합 테스트를 추가했다.