프로젝트 문서 체계 정비

This commit is contained in:
2026-06-23 13:42:38 +09:00
parent e11b1dc6df
commit 00e05dbe3f
18 changed files with 1344 additions and 682 deletions

View File

@@ -1,47 +1,22 @@
# 할 일 및 이슈
# 할 일
## 현재 이슈
- `images/` 디렉터리가 약 `1.7G`까지 증가해 저장소 clone, fetch, checkout 비용이 커졌다.
- 이미지 파일 수가 `9,000+` 단위라서 카드 추가 빈도가 올라갈수록 Git 객체 수와 히스토리 부담이 계속 누적될 가능성이 높다.
- `script/navigation.js`에는 현재 프로젝트에 없는 페이지(`deckHistory.html`, `preset.html`, `myDatabase.html`)로 이동하는 코드가 남아 있다.
- `cardList.html`과 `result.html` 내부 스크립트 비중이 커서 기능 확장 시 유지보수 난도가 올라갈 수 있다.
- 데이터 파일 네이밍과 샘플 파일(`datas/ua99 sample.js`, `datas/ua99 sample mini.js`) 처리 기준이 문서상 명확하지 않았다.
## 운영
## v4.0.0 구현 완료 항목
- [x] Docker API 서버 + DB (`users`, `decks` 테이블)
- [x] 인증: 회원가입, 로그인, JWT, 헤더 프로필 드롭다운
- [x] 덱 API: 저장, 조회, 공유 코드 (`GET /api/v1/decks/:shareCode`)
- [x] `cardList.html`: `?d=` API 로드, 저장·공유 버튼
- [x] `deckHistory.html`, `login.html`, `signup.html`, `preset.html`
- [x] `admin.html`: 회원 목록·수정, 비밀번호 초기화
- [x] `index.html` 버전 `v4.0.0`
- NAS에서 `uniare-web`, `uniare-api` 스택의 재기동과 헬스 체크를 최종 확인한다.
- 운영 `.env`의 `JWT_SECRET`, 관리자 계정, CORS 허용 도메인을 실제 환경 기준으로 점검한다.
- DB와 업로드 이미지(`api/data/previews`, `api/data/avatars`)의 정기 백업·복구 절차를 검증한다.
- 원격 저장소의 Git LFS 업로드 상태와 용량 정책을 확인한다.
- Compose의 컨테이너명과 데이터 볼륨명을 환경 변수로 관리할지 결정하고, 적용 시 운영 마이그레이션 절차를 작성한다.
## v4 후속 작업
- [ ] NAS에서 구 컨테이너(`uniare-web`) 정리 후 신규 스택(`uniare-web`, `uniare-api`) 재기동 확인
- [ ] `.env` 설정 및 기존 리버스 프록시 연동
- [ ] 옆 프로젝트에 `integrations/uadeck-deck-client.js` 적용
- [ ] `cardList.html` 인라인 스크립트 모듈 분리
- [x] i18n: 모달·홈 버튼·auth·덱 관리·프로필·로그인/가입 3개국어 (v4.0.0 후속)
- [x] 덱 즐겨찾기·필터 (내 덱·공개 덱)
- [x] 공개 덱: 홀드 미리보기 + 하단 즐겨찾기/불러오기 버튼
- [x] 내 덱: 썸네일 클릭·홀드 확대, 저장 썸네일 1200px 정규화
- [ ] i18n: `admin.html` 문구
## 기능
## v4.0.0 최근 완료
- [x] `profile.html`: 일반 사용자 프로필 화면 (아바타·닉네임·이메일·비밀번호)
- [x] 헤더 드롭다운「내 프로필」링크
- [x] 아바타 업로드 시 PNG 리사이즈 (`script/image-utils.js`) — JPEG 등 형식 깨짐 방지
- [x] 아바타 URL `updatedAt` 캐시 무효화
- [x] 내 덱 관리: `/d/코드` 경로 표시 제거
- [x] `result.html` 하단 버튼 개편 + 공개 확인 모달 + 홈 이동
- [x] 프로필·API: 덱 저장 공개 기본값 설정
- `admin.html`의 고정 한국어 문구를 `ko`, `ja`, `en` 번역 체계에 연결한다.
- 옆 프로젝트에 `integrations/uadeck-deck-client.js`를 적용하고 실제 공유 덱 조회를 검증한다.
- Homepage 연동이 필요해지면 `GET /api/homepage`와 운영 지표 응답을 구현한다.
## 다음 작업 제안
- 원격 저장소에서 `Git LFS` 업로드가 정상 완료되었는지 확인한다.
- 협업자가 있다면 히스토리 재작성 이후 동기화 방법을 공지한다.
- `Git LFS` 도입 후에도 저장소 운영 비용이 크면 이미지 저장소 분리/CDN 이전을 재검토한다.
- `cardList.html`의 인라인 스크립트를 별도 JS 모듈로 분리하는 리팩터링을 검토한다.
## 유지보수
## 판단 가이드
- 신규 이미지 추가 관리가 목적이면 `Git LFS` 추적만으로도 충분하다.
- 기존 clone 크기까지 줄이는 것이 목적이면 `Git LFS` 히스토리 마이그레이션 또는 자산 저장소 분리가 필요하다.
- `cardList.html`, `result.html`의 대형 인라인 스크립트를 기능 단위 모듈로 분리한다.
- `datas/ua99 sample.js`, `datas/ua99 sample mini.js`의 보존 목적과 배포 제외 여부를 확정한다.
- 즐겨찾기의 계정 간 동기화가 필요하면 사용자별 API 저장 방식으로 확장한다.
- 이미지 규모가 Git LFS 운영 한도를 넘으면 자산 저장소 또는 CDN 분리를 검토한다.