# 2026-03-21 작업 내역

## 1. 모바일 반응형 오버플로우 수정

### 문제
- 400px 이하 화면에서 콘텐츠가 화면을 벗어남
- iframe(btc/index.php) 차트 섹션이 오버플로우 발생

### 수정 파일
- `frontend/assets/scss/base/_variables.scss` - xxs(340px), xs(400px) 브레이크포인트 추가
- `frontend/assets/scss/pages/main.scss` - 오버플로우 방지 스타일 추가
  - `.chart`, `.chart__container`, `.chart__section`, `.chart__canvas` 등에 `min-width: 0`, `max-width: 100%`, `overflow: hidden` 적용
- `btc/index.php` - 인라인 스타일에 오버플로우 제어 추가
- `btc/css_chart/style.css` - 400px, 340px 미디어 쿼리 추가

---

## 2. 빌드 시 캐시 무효화

### 수정 파일
- `frontend/nuxt.config.ts` - Vite 빌드 옵션에 타임스탬프 추가
```js
build: {
  rollupOptions: {
    output: {
      entryFileNames: `_nuxt/[name]-[hash]-${Date.now()}.js`,
      chunkFileNames: `_nuxt/[name]-[hash]-${Date.now()}.js`,
      assetFileNames: `_nuxt/[name]-[hash]-${Date.now()}.[ext]`
    }
  }
}
```

- `btc/index.php` - CSS 파일에 PHP 타임스탬프 추가
```php
<link rel="stylesheet" href="/btc/css_chart/style.css?v=<?php echo time(); ?>" />
```

---

## 3. 잭팟 기능 주석 해제

### 수정 파일
- `frontend/components/layout/Header.vue`
  - 데스크톱 잭팟 버튼 활성화
  - 모바일 하단 네비게이션 잭팟 버튼 활성화
  - 프로필 서브메뉴에 잭팟 링크 추가
  - 잭팟 관련 모달 4개 활성화 (보너스, 지급내역, 보너스지급표, 순위기준)

- `frontend/pages/mypage/wallet.vue`
  - 잭팟 정보 섹션 활성화 (금주 잭팟 예상 금액, 내 잭팟 당첨 순위)

---

## 4. BTC 클라이언트 스크립트 업데이트

### 변경 내용 (script2.js → script.js)
- 차트 배경색 변경 (더 어두운 톤)
  - UP: `#307a5f`, `#4a1c22`
  - DOWN: `#1d4a39`, `#742e3a`
- 종료 점 색상 변경
  - UP: `#40fab6` (청록)
  - DOWN: `#f23e5d` (분홍)
- 폰트 색상 변경
  - UP: `#40fab6`
  - DOWN: `#e05c6a`

### 추가 수정
- 이미지 경로 수정: `/img/` → `/btc/img/`
- 사운드 경로 수정: `/sounds/` → `/btc/sounds/`
- `cachedResults` 변수 추가
- `$status[0].offsetWidth` null 체크 추가

---

## 5. BTC 서버 업데이트

### 변경 내용 (server2.js → server.js 병합)

#### server2.js 개선 사항 (유지)
- `preConfirmedStarts`, `preConfirmedResults` 방식
  - 23초/53초: 시작가 미리 확정
  - 28초/58초: 결과가 미리 확정
- 단순화된 `preventDraw` (±0.02 조정)
- `cleanupOldRounds`에 `getPreResultHint._logged` 정리 추가

#### server.js 필수 기능 (유지)
- `notifyGameServer` 함수 (Push 방식 통신)
  - `/chart/start`: 시작가 전송 → 라운드 잠금
  - `/chart/result`: 결과 전송 → 라운드 정산

### 통신 구조
```
btc-server (9090) → socket-server (3001)
├─ Push: notifyGameServer('/chart/start') → lockBettingRoundsWithChartPrice()
├─ Push: notifyGameServer('/chart/result') → settleRoundWithChartResult()
└─ Pull: /api/current-round, /api/current-price 등 (백업용)
```

---

## ChartSection.vue 수정

- `openLoginModal` 함수 추가
```js
const openLoginModal = () => {
  window.dispatchEvent(new CustomEvent('open-login-modal'));
};
```
