Commit graph

97 commits

Author SHA1 Message Date
0448b0bfc8 해방 탭 상태 분리 (제네시스/데스티니 각각)
- Liberation.jsx를 탭 shell로 단순화하고 Genesis/Destiny 컴포넌트 분리
- liberationType을 store에 persist해 새로고침/재접속 후에도 마지막 탭 유지
- calcMode를 genesisCalcMode/destinyCalcMode로 분리해 무기별 독립 저장
- ProgressBar를 chapters/imageBase/completionColor prop 받도록 일반화
- Destiny 컴포넌트에 계산 모드 탭 + 진행 바 표시, 완료일 색은 sky blue
  (--destiny-date: 다크 #38bdf8 / 라이트 #0284c7)
- 데스티니 전용 슬롯(destinySimple/destinyWeekly)과 updateDestinySlot/
  resetDestinySlot 액션 추가

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 19:03:52 +09:00
29fcb39eb3 데스티니 해방 데이터 추가 (하드코딩)
총 45,000 포인트, 8보스 포인트 풀 + 6결전 챕터. 이미지 base url은
liberation/destiny/{boss,quest} 참조. image1/image2 수치 기준.
칼로스는 인게임에 하드가 없어 chaos 70으로 매핑.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 18:54:28 +09:00
2911dfe3a8 해방 퀘스트 진행 바 색상을 테마별 흑백으로 단순화
기존 보라/빨강 2색에서 다크 테마는 흰색, 라이트 테마는 검정으로 통일.
1차/2차 구분은 동일 색상의 투명도(0.55 vs 1.0, 바는 0.25 vs 0.5)로만 주어
시각적 통일감을 확보.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 18:32:21 +09:00
dc48f57501 비활성 요소의 금지 커서 제거
index.css 의 전역 button:disabled { cursor: not-allowed } 규칙과 개별
컴포넌트의 disabled:cursor-not-allowed / cursor-not-allowed 클래스를 모두
제거해 비활성 상태에서 기본 화살표 커서를 유지한다. opacity 등 기존 시각
피드백은 유지.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 17:59:19 +09:00
edbaaf09aa 심볼 계산기에 이벤트 스킬(보약) 일퀘 보너스 자동 반영
Nexon Open API의 character/skill(grade=0) 응답에서 '그란디스/아케인리버
일일퀘스트 완료 시 획득 심볼 N개 증가' 문구를 파싱해 심볼 타입별 보너스를
일퀘 획득량 기본값에 바로 합산한다.

skill_level 필드는 이벤트 스킬에 한해 실제 레벨이 아닌 1로 고정 반환되므로
심볼 증가 개수 → 레벨 역산 테이블로 실제 레벨을 복원한다. 입력창 hover 시
'기본 X + 보약 Y (메이플 스위츠 Lv.Z)' 툴팁으로 근거를 노출.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 01:03:29 +09:00
3a1d8a63ac 이미지 선택 다이얼로그의 카드 툴팁 제거
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 17:30:02 +09:00
5368764f85 전역 툴팁 매니저 도입 + 기존 Tooltip 간소화
- components/common/GlobalTooltip.jsx 신설
  * document 전역 이벤트 위임으로 [title] / [data-tooltip] 자동 감지
  * title 속성 일시 제거로 브라우저 기본 툴팁 억제, 포털 렌더
  * data-tooltip-placement / data-tooltip-delay 옵션 지원
  * scroll/resize/Escape/mousedown 시 자동 숨김
- Tooltip.jsx는 자식을 <span title=... data-...> 로 감싸는 단순 래퍼로 변경
- App.jsx 루트에 GlobalTooltip 마운트
- 이제 전 코드베이스의 title="..." 가 모두 커스텀 툴팁으로 렌더됨

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 17:23:32 +09:00
7fc04cf371 보스 목록 스크롤을 OverlayScrollbars로 교체 + 좌우 여백
- features/boss-crystal/pc/user/BossSelector.jsx:
  * 목록 스크롤을 기본 overflow-y-auto → OverlayScrollbarsComponent
  * 메인 바디와 동일한 os-theme-maple os-theme-dark 테마
  * 헤더와 목록 좌우에 8px씩 추가 여백 (스크롤바와 내용 간격)
  * 헤더 행과 목록 row의 컬럼 정렬이 어긋나지 않도록 동기

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 17:11:00 +09:00
be548879dc 이미지 관리 다이얼로그 UX 정리
- Modal 공용 컴포넌트에 열기/닫기 애니메이션 추가, 뒷배경 클릭 닫기 제거
- ImagePicker에 동일한 애니메이션 + 뒷배경 클릭 차단 적용
- ImagePicker 이미지 크기를 관리 페이지와 동일하게 (p-4 + w-full h-full object-contain)
- ImagePicker 하단 빈 pagination 영역이 차지하던 여백 제거 (조건부 렌더)
- 그리드 높이를 632px로 고정 + OverlayScrollbars (os-theme-maple) 스크롤
- overscroll-behavior: contain 으로 뒷 페이지 스크롤 전파 방지

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 17:03:10 +09:00
4720e33f26 썬데이 메이플 다이얼로그 UX 개선
- backdrop 폭/높이 100vw/100dvh 명시 → 뷰포트 하단까지 블러 적용
- 배경 스크롤 잠금 + OverlayScrollbars overscroll-behavior:contain
  → 다이얼로그 스크롤이 뒷 페이지로 전파되지 않음
- 다이얼로그 닫힘 exit 애니메이션 정상 동작 (AnimatePresence를 부모로 이동)
- '공식 공지 보기' 하단 링크 제거 → 우상단 외부 링크 아이콘 버튼 추가

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 16:46:44 +09:00
18cc1855ac 썬데이 메이플 홈 배너 + 이미지 다이얼로그
- components/pc/SundayMapleBanner.jsx: 아이콘 + 라벨 버튼, 클릭 시 이미지 다이얼로그
- variant에 따라 '썬데이 메이플' / '스페셜 썬데이 메이플' 이미지 아이콘 사용
  (관리자 이미지 관리에서 업로드한 것)
- Home.jsx 상단에 배치 (금~일 available일 때만 렌더)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 16:31:16 +09:00
bc0c2b22f0 태블릿 전용 라우트 / 폴더 추가
- routes/tablet.jsx: 태블릿 placeholder
- App.jsx: isMobileOnly / isTablet / (그 외=PC) 3단 분기
- components/tablet/, pages/tablet/: 향후 태블릿 전용 컴포넌트·페이지 자리
- features/registry.js: tablet device 지원 (getTabletComponent 추가)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 16:07:31 +09:00
57715726b8 react-device-detect 도입 (PC / 모바일 라우트 분기)
- App.jsx: BrowserView / MobileView 로 분기 렌더
- 모바일 접속 시 routes/mobile.jsx (현재 '준비 중' placeholder) 렌더
- 구조 개편 후 실제 device 감지 활성화

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 15:59:36 +09:00
0dd81b56e5 유틸리티 함수 단위 테스트 추가 (vitest)
- package.json: vitest 추가 + test/test:watch 스크립트
- utils/__tests__/formatting.test.js (7 tests)
- features/symbol/__tests__/utils.test.js (8 tests)
- features/liberation/__tests__/utils.test.js (18 tests)
- features/boss-crystal/pc/admin/__tests__/constants.test.js (6 tests)

총 39개 테스트 통과 (716ms)
- formatMeso / formatMesoKorean 경계 조건
- computeCompletion (심볼 완료 시뮬레이션)
- bossEarn, calcWeekPoints, calcDoneEarn, calcMonthlyEarn
- getSchedulerWeekRange (1주차/2주차, 목요일 시작 등)
- computeCompletionDate (단순 계산/주차별 계산 모드)
- 보스 결정 난이도 정의 및 스타일 헬퍼

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 12:41:48 +09:00
1646617069 리팩토링 6단계: Liberation 비즈니스 로직 utils.js로 추출 (458 → 299)
- features/liberation/utils.js 신설
  * bossEarn, calcWeekPoints, calcDoneEarn, calcMonthlyEarn
  * getSchedulerWeekRange
  * computeCompletionDate (파라미터로 state 주입받는 순수 함수)
- Liberation.jsx는 상태/렌더링/뷰모델만 담당 (299줄)
- WeeklyScheduler.jsx의 중복 bossEarn/calcWeeklySum/getWeekRange/makeEmptyWeek
  모두 utils에서 import (alias 유지)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 12:21:32 +09:00
4be648c21c 리팩토링 5단계: NoticeWidget.jsx 폴더로 분리 (431 → 4개 파일)
- components/pc/NoticeWidget/
  - index.jsx (38): 루트 + useQueries
  - config.js (62): SECTIONS 정의 + 날짜/배지 헬퍼
  - TextListSection.jsx (140): memo
  - CarouselSection.jsx (165): CardItem + memo

Home.jsx의 import 'components/pc/NoticeWidget'는 자동으로 index.jsx로 resolve

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 11:47:40 +09:00
569def6794 리팩토링 4단계: AdminImages.jsx 분리 (652 → 298 줄)
- components/common/Modal.jsx: 관리자 모달 공용 래퍼
- features/admin/pc/components/UploadModal.jsx (179줄)
- features/admin/pc/components/ImageCard.jsx (memo)
- features/admin/pc/components/Pagination.jsx
- AdminImages.jsx는 상태/mutations/렌더링 오케스트레이션만 담당

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 11:46:02 +09:00
1fe3ba0d12 리팩토링 3단계: Symbol.jsx 분리 (717 → 346 줄)
- features/symbol/utils.js: formatKoreanDate, computeCompletion, TYPE_ORDER
- features/symbol/pc/user/CharacterCard.jsx: 캐릭터 카드 (memo)
- features/symbol/pc/user/SymbolCard.jsx: 심볼 카드 (memo, 계산 로직 포함)
- Symbol.jsx: 검색/탭/그리드/요약 렌더링만 담당
- basicQueries/symbolQueries 배열을 useMemo로 감쌈 (매 렌더 재생성 방지)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 11:43:52 +09:00
f6f1e79b82 리팩토링 2단계: 성능 최적화 (메모화)
- SymbolCard / CharacterCard를 React.memo로 감쌈
  (심볼 그리드에서 형제 카드 변경 시 불필요 리렌더 방지)
- Liberation의 computeCompletionDate() 호출을 useMemo로 감쌈
  (520회 루프가 매 렌더마다 돌던 것을 관련 state 변경 시만 실행)
- Symbol.jsx의 로컬 formatMesoKorean 중복 정의 제거 (utils import)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 11:41:17 +09:00
c6ac3366cc 리팩토링 1단계: 공용 utils/FormField 추출
- utils/formatting.js 신설 (formatMeso, formatMesoKorean 통합)
- components/common/FormField.jsx 신설 (label+hint+error 공용 래퍼
  + formInputClass/formInputStyle 상수)
- 중복 정의 제거:
  * BossForm, SymbolForm, AdminMenuForm의 Field 로컬 정의 삭제
  * boss-crystal constants.js의 formatMeso → utils re-export
  * SymbolForm의 formatMesoKorean 로컬 정의 삭제
  * 3개 폼의 inputCls/inputStyle 상수 삭제

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 11:39:23 +09:00
4da16abc10 import path 깊이 수정
구조 개편 후 depth가 한 단계 깊어진 components/common, components/pc,
features/admin/pc/components 내부 파일들의 상대 import 경로 업데이트

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 11:37:15 +09:00
1ad25630bf 구조 개편 4단계: routes/ 신설 + App.jsx 단순화
- routes/pc.jsx: 기존 App.jsx의 Route 정의를 추출
- routes/mobile.jsx: 모바일 placeholder (준비 중 안내)
- App.jsx는 디바이스 분기 자리만 남김 (현재 PCRoutes만 렌더)
- react-device-detect 도입 준비 완료

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 11:27:24 +09:00
444cf8cf85 구조 개편 3단계: features/admin/pc/ + pages/pc/Home.jsx
- features/admin/* → features/admin/pc/* (AdminLayout, AdminHome,
  AdminImages, AdminMenuForm, AdminBoss, AdminFeaturePage, components/)
- pages/Home.jsx → pages/pc/Home.jsx
- App.jsx import path 업데이트

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 11:26:52 +09:00
b423d0ac82 구조 개편 2단계: features 내부에 pc/ 폴더 생성 + 이동
- features/boss-crystal/pc/: BossCrystal, BossCrystalAdmin, admin/, user/
- features/symbol/pc/: Symbol, SymbolAdmin, admin/
- features/liberation/pc/: Liberation, components/
- store.js, data.js는 feature 루트에 유지 (device 공용)
- registry.js: import.meta.glob 패턴을 './*/\{pc,mobile\}/*.jsx' 로 변경
- getMobileComponent 추가

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 11:26:12 +09:00
4789c56dfa 구조 개편 1단계: components/ 를 common/pc/mobile/로 분리
- components/common/: Select, Tooltip, ConfirmDialog, DatePicker,
  Checkbox, LoginDialog, CharacterSuggestDropdown (device 독립)
- components/pc/: Layout, Footer, NoticeWidget (PC 전용)
- components/mobile/: (placeholder)
- 모든 import path 업데이트

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 11:24:43 +09:00
45d325dfbe 푸터 조건 단순화 + 심볼 타입 배지 테마 대응
- 푸터를 홈 경로에서만 렌더링 (!fullscreen → isHome)
  이동 시 푸터가 잠깐 보였다 사라지는 플래시 제거
- 심볼 관리 타입 배지(아케인/어센틱/그랜드 어센틱) 테마별 토큰화
  라이트 모드에서 violet/sky/amber-300이 흰 배경에 안 보이던 문제 해결
- 계산기 페이지의 fullscreen 훅을 useLayoutEffect로 변경

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 11:12:19 +09:00
e78a18dedb 관리자 페이지 테마 토큰화 + 너비 정리
- AdminBoss/AdminFeaturePage/BossList/BossForm/SymbolList/SymbolForm 전체 이관
- Checkbox 공용 컴포넌트 테마 대응
- BossList/SymbolList/AdminImages/AdminFeaturePage 폴백에 max-w-5xl 통일
- BossForm/SymbolForm의 localStorage admin key를 auth store로 교체
- 홈(관리자) 하단 로그아웃 버튼 제거

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 11:05:25 +09:00
85b9a6b6d2 API 키 로그인 + 캐릭터 드롭다운 + 관리자 네비게이션
- API 키 로그인 다이얼로그 + 헤더 로그인 버튼
- /api/character/list 프록시 엔드포인트 (월드 아이콘 매핑 포함)
- 캐릭터 입력 포커스 시 드롭다운 (월드 아이콘, 레벨 정렬, 기존 캐릭 제외, 페이드 애니메이션)
- 관리자 인증을 API 키로 통합 (URL ?key= 파라미터 폐기)
- 헤더에 관리자 링크 버튼 / 홈 링크 버튼 (경로별 배타적 표시)
- 관리자 페이지에서 타이틀 우측에 "관리자" 텍스트
- 이미지 관리 페이지 테마 토큰화

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 10:54:12 +09:00
1dfceaf350 해방 1차/2차 라벨 라이트 모드 색상 조정
라이트 모드에서 너무 연해 보이던 purple/pink 라벨을 violet-600/rose-600으로 강화

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 16:11:51 +09:00
46b6237f75 보스 난이도 버튼: EASY/NORMAL/HARD 테두리 보강
border 색과 bg 색이 같아 구분이 안 되던 난이도에 rgba(0,0,0,0.55) 테두리 적용
테두리 두께 1.5px로 조정

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 16:10:09 +09:00
fe65c107c8 해방 날짜 계산기 + DatePicker 테마 토큰화
- Liberation 루트/ProgressBar/QuestSelector/WeeklyDefault/WeeklyScheduler 전체 이관
- DatePicker 드롭다운(연도/월/일 선택) 모두 semantic 토큰으로 대응
- 세그먼트 바, 배지, 탭, 초기화 버튼, 보스 Row 모두 테마 대응

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 12:36:58 +09:00
f0a04c51ff 심볼 계산기 페이지 테마 토큰화
- CharacterCard/SymbolCard/검색 패널/탭/요약 카드 전체 이관
- 입력/버튼/진행바/메소·체납·MAX 텍스트 모두 semantic 토큰
- equipped 아닌 심볼 카드 opacity 0.6 유지

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 12:27:23 +09:00
b63ab39977 ConfirmDialog 테마 토큰화 + 입력 필드 테마 전환 플래시 수정
- ConfirmDialog 전체를 dialog/icon/ring/danger-btn 토큰으로 이관
- 캐릭터 닉네임 입력의 transition 제거로 테마 전환 시 검은색 플래시 해결

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 12:20:55 +09:00
8e4c7b8c1b 캐릭터 목록에 OverlayScrollbars 적용
스크롤바가 레이아웃을 밀지 않도록 메인 바디와 동일한 오버레이 스크롤바 사용

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 12:17:14 +09:00
e0dd7d1bc4 보스 수익 계산기 페이지 테마 토큰화
- Select/Tooltip 공통 컴포넌트 테마 대응
- BossCrystal 루트/CharacterPanel/BossSelector 전체 이관
- 비활성 row/난이도 버튼 테마별 처리 (--disabled-opacity, --inactive-filter)
- 라이트 테마 warning 색상 갈색 → 주황 계열로 조정

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 12:15:04 +09:00
f89d13431a 관리자 메뉴 카드: URL 줄 제거 + 설명 2줄 표시
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 12:01:08 +09:00
d3db14a01c 관리자 메인 화면 너비를 홈 화면에 맞춤
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 11:57:09 +09:00
40d045b498 종료 임박 배지/날짜 표기 개선
- 종료 배지 'D-N' → '종료 N일 전' (시작 배지와 표현 통일)
- 이벤트 기간이 하루인 경우 '5/10 ~ 5/10' → '5/10' 단일 표기

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 11:54:21 +09:00
ca3c4579ae 공지 위젯 테마 토큰화 + 전환 리듬 정리
- NoticeWidget 전체를 panel/btn/badge 등 semantic 토큰으로 이관
- 캐러셀 카드 그림자가 overflow-hidden에 잘리던 문제 수정 (overflow-x-clip)
- 캐러셀 섹션 제목 크기/두께 조정, 이벤트 섹션 상단 여백 추가
- 테마 전환 시 UI 요소들 즉시 스냅, 배경만 500ms로 부드럽게 (일관된 리듬)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 22:23:18 +09:00
749e77774a 테마 전환 타이밍 튜닝
- 라이트 모드 새로고침 시 FOUC 방지 (index.html 블로킹 스크립트)
- 헤더 배경 제거 + backdrop-blur만 유지 → 배경과 동시 전환
- 전환 시간 300ms → 500ms로 일관되게 느리게

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 22:11:27 +09:00
7020794add 유틸리티 카드 테마 토큰화 + 호버/그림자 조정
- 카드/아이콘 박스/구분선에 semantic 토큰 적용
- 호버: emerald 색상 변화 대신 scale-[1.02]
- 카드 그림자 추가로 라이트 배경과 구분

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 22:05:33 +09:00
46ff03ced6 라이트 테마 토글 추가 (기반 구축)
- 헤더 우측 토글 버튼 + View Transition API 크로스페이드
- zustand persist 테마 스토어
- CSS 변수 기반 semantic 토큰 (:root / [data-theme="light"])
- 헤더/푸터/스크롤바(OverlayScrollbars 포함) 테마 대응

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 21:59:35 +09:00
4fa3bdb4a6 홈 화면 리디자인: 공지 위젯 섹션화 + 레이아웃 재배치
- NoticeWidget을 4섹션 구조로 재구성
  · 상단 2열 텍스트 리스트 (공지사항/업데이트, 5개/페이지, 슬라이드 전환, 이전/다음)
  · 이벤트/캐시샵은 2:1 이미지 카드 캐로셀, 제목 우측의 컴팩트 네비(◀ 1/N ▶)
  · D-day/시작 N일 전/상시판매 배지는 단색 배경 + 흰 글씨 medium
  · 넥슨 API 점검 시 섹션별 안내 표시
- 홈: 유틸리티를 상단으로 이동, 상·하단 UTILITIES/NOTICES 구분선, max-w-5xl 통일, pt-6 여백

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-17 21:42:01 +09:00
2d43b78ce4 보스 수익/해방 계산기도 zustand로 전환
- boss-crystal/store.js: characters/selectedChar/selections + persist
- liberation/store.js: calcMode + simple/weekly slot + persist
- 세 스토어(symbol 포함)에서 version/migrate/구 localStorage 호환 코드 제거

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 19:20:50 +09:00
df0bb7d14b 해방 계산기/관리자 폼 소소한 UI 조정
- 해방: 현재 진행 상태의 흔적 입력 우측에 / N 필요량 표시 (관리자 경로 입력 스타일, text-base)
- 해방: 날짜/퀘스트/흔적 3열을 1:1:1 균등 비율로 정렬
- 주차별 계산 헤더 분모를 6500 고정 → 현재 진행 기준 남은 흔적
- 보스/메뉴 관리자 폼 mx-auto 중앙 정렬

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 18:49:52 +09:00
791f4f8e35 캐릭터 코디/기본 정보 자동 새로고침
보스 수익 계산기/심볼 계산기에서 저장된 캐릭터의 character_image, level,
직업 정보를 페이지 로드마다 /api/character/search로 재조회해 반영.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 13:48:03 +09:00
3829ada3cf Nexon API 점검중 상태 감지/표시
- 백엔드: notices/character 라우트에서 OPENAPI00001/00007/00010/00011
  응답을 감지해 503 + { maintenance: true, code } 반환
- 프론트 api 클라이언트가 에러에 서버 필드(maintenance 등)를 병합
- 공지 위젯: 점검중이면 "넥슨 Open API 점검중" 안내 + retry 차단
- 캐릭터 검색 오류 메시지로 '점검중' 상황이 "존재하지 않는 캐릭터"와 구분

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 08:45:50 +09:00
7151315371 심볼 계산기: 효과적 만렙 처리 + 성장치 cascade 계산 수정
- 성장치가 만렙까지 cascade 가능한 경우(effectivelyMax) 완료로 취급:
  성장치에 (MAX) 표기, 남은 심볼/남은 일수/예상 완료일 '-', 입력/일퀘 버튼 비활성
- 체납 메소/남은 심볼을 성장치 cascade 방식으로 재계산:
  여러 레벨을 한 번에 올릴 수 있는 경우도 정확히 반영

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 00:48:00 +09:00
df057057ff UI 조정: 해방 주간 헤더 분기, 캐릭터 카드 보스 정렬
- 해방 주간 보스 설정 헤더: 단순 계산에선 합산만, 주차별에선 주간+월간/6500 분할 표시
- 보스 수익 계산기 캐릭터 카드의 보스 아이콘을 보스 목록 순서로 정렬 (12개 상한은 여전히 수익 기준으로 선발)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 22:07:23 +09:00
4e1d2556b2 보스 결정석 난이도 선택 UI를 CSS pill로 교체
이미지가 흐릿한 문제 해결. DIFFICULTIES 색상값을 사용해
EASY/NORMAL/HARD/CHAOS/EXTREME pill 버튼으로 직접 렌더링.

- 선택 시: 색상 풀톤
- 비선택 시: filter brightness(0.4)로 어둡게만 처리
- 크기 고정 (h-7 px-4)
- 브라우저 툴팁 제거

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 20:50:37 +09:00