From d1ecf134001411a708ad8c26ffa23d4d222d5c82 Mon Sep 17 00:00:00 2001 From: gahusb Date: Wed, 25 Mar 2026 03:54:50 +0900 Subject: [PATCH] =?UTF-8?q?stock=20AI=20=EC=96=B4=EB=93=9C=EB=B0=94?= =?UTF-8?q?=EC=9D=B4=EC=A0=80=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20UX=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Gemini Pro 기반 AI 어드바이저 탭 추가 (TAB_ADVISOR) - 보유 종목 현재가 + 뉴스 → 종목별 매도/매수/분할매도 지침 - 5분 캐시, 강제 새로고침 버튼 - 경량 마크다운 렌더러 (AdvisorMarkdown) - 실현손익 수수료 → 수수료 & 세금으로 레이블 변경 - 총 자산 추이 그래프: 0 데이터 제외 (장 미개장일 필터) - Todo 완료 패널 하단 이동 + 날짜 필터 추가 Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 156 ++++++++++++++++++-- src/api.js | 8 + src/pages/stock/Stock.css | 260 +++++++++++++++++++++++++++++++++ src/pages/stock/StockTrade.jsx | 189 +++++++++++++++++++++++- 4 files changed, 596 insertions(+), 17 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index abd6885..d5f2206 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -17,8 +17,14 @@ | `/lotto` | `Lotto` | 로또 추천/통계 | | `/stock` | `Stock` | 주식 뉴스/지수 | | `/stock/trade` | `StockTrade` | 주식 트레이딩 | -| `/travel` | `Travel` | 여행 사진 갤러리 | -| `/lab` | `EffectLab` | UI/UX 실험 | +| `/realestate` | `Subscription` | 청약 자격·일정 관리 | +| `/realestate/property` | `RealEstate` | 관심 단지 정보 | +| `/travel` | `Travel` | 여행 사진 갤러리 (Dark Room 테마) | +| `/lab` | `EffectLab` | UI/UX 실험 허브 | +| `/lab/sword-stream` | `SwordStream` | Three.js 파티클 인터랙션 | +| `/lab/day-calc` | `DayCalc` | 날짜 계산기 | +| `/lab/music` | `MusicStudio` | AI 음악 생성 스튜디오 (Sonic Forge) | +| `/todo` | `Todo` | 태스크 보드 | 라우트 정의: `src/routes.jsx` / 라우터 설정: `src/Router.jsx` @@ -49,23 +55,28 @@ apiPost('/api/portfolio', { ... }) ```js proxy: { - '/api': { - target: 'https://gahusb.synology.me', - changeOrigin: true, - secure: true, - }, + '/api': { target: 'https://gahusb.synology.me', changeOrigin: true, secure: true }, + '/media': { target: 'https://gahusb.synology.me', changeOrigin: true, secure: true }, + // /ext/* — Yahoo Finance, CNN Fear&Greed 등 외부 API 프록시 } ``` -개발 중 `/api/*` 요청은 NAS 백엔드로 프록시됨. 개발 서버 포트: **3007** +- `/api/*` → NAS 백엔드 +- `/media/*` → NAS 미디어 파일 (여행 사진 `/media/travel/`, 음악 `/media/music/`) +- 개발 서버 포트: **3007** ### API 엔드포인트 목록 | 분류 | 메서드 | 경로 | |------|--------|------| -| 로또 | GET | `/api/lotto/latest`, `/api/lotto/stats`, `/api/lotto/recommend` | -| 로또 | GET | `/api/lotto/best`, `/api/lotto/analysis` | -| 로또 | POST | `/api/admin/simulate` | +| 로또 기본 | GET | `/api/lotto/latest`, `/api/lotto/stats`, `/api/lotto/recommend` | +| 로또 기본 | GET | `/api/lotto/best`, `/api/lotto/analysis` | +| 로또 기본 | POST | `/api/admin/simulate` | +| 로또 고도화 | GET | `/api/lotto/stats/performance` | +| 로또 고도화 | GET | `/api/lotto/report/latest`, `/api/lotto/report/:drw_no`, `/api/lotto/report/history?limit=N` | +| 로또 고도화 | GET | `/api/lotto/analysis/personal` | +| 로또 구매 | GET | `/api/lotto/purchase?draw_no=N&days=N`, `/api/lotto/purchase/stats` | +| 로또 구매 | POST/PUT/DELETE | `/api/lotto/purchase`, `/api/lotto/purchase/:id` | | 히스토리 | GET | `/api/history` | | 히스토리 | DELETE | `/api/history/:id` | | 주식 | GET | `/api/stock/news`, `/api/stock/indices` | @@ -73,6 +84,21 @@ proxy: { | 트레이딩 | POST | `/api/trade/order` | | 포트폴리오 | GET/POST | `/api/portfolio` | | 포트폴리오 | PUT/DELETE | `/api/portfolio/:id` | +| 예수금 | PUT | `/api/portfolio/cash` — body: `{ broker, cash }` | +| 예수금 | DELETE | `/api/portfolio/cash/:broker` | +| 자산 스냅샷 | POST | `/api/portfolio/snapshot` — body: `{ total_assets }` 또는 body 없이 서버 계산 | +| 자산 스냅샷 | GET | `/api/portfolio/snapshot/history?days=N` — response: `{ history: [{date, total_assets}] }` | +| 실현손익 | GET | `/api/portfolio/sell-history?broker=X&days=N` — response: `{ records: [...] }` | +| 실현손익 | POST/PUT | `/api/portfolio/sell-history`, `/api/portfolio/sell-history/:id` | +| 실현손익 | DELETE | `/api/portfolio/sell-history/:id` | +| TODO | GET/POST | `/api/todos` | +| TODO | PUT/DELETE | `/api/todos/:id`, `/api/todos/done` | +| 블로그 | GET/POST | `/api/blog/posts` | +| 블로그 | PUT/DELETE | `/api/blog/posts/:id` | +| AI 음악 | POST | `/api/music/generate` — body: `{ title, genre, moods, instruments, duration_sec, bpm, key, scale, prompt }` → `{ task_id }` | +| AI 음악 | GET | `/api/music/status/:task_id` → `{ status, progress, message, audio_url?, error?, track? }` | +| AI 음악 라이브러리 | GET/POST | `/api/music/library` — response: `{ tracks: [...] }` | +| AI 음악 라이브러리 | DELETE | `/api/music/library/:id` | --- @@ -147,3 +173,111 @@ npm run preview # 빌드 결과물 미리보기 | `scripts/deploy-nas.cjs` | NAS 배포 스크립트 | | `src/content/blog/` | 블로그 마크다운 파일 | | `public/` | 정적 파일 (로고, API 스펙 등) | + +--- + +## Sonic Forge — AI 음악 생성 스튜디오 (`/lab/music`) + +### 파일 구조 + +| 파일 | 역할 | +|------|------| +| `src/pages/music/MusicStudio.jsx` | 메인 컴포넌트 | +| `src/pages/music/MusicStudio.css` | 스타일 (Bebas Neue · Syne · Courier Prime) | + +### 주요 컴포넌트 + +- **SonicRadar** — 헤더 우측 비주얼. SVG 링·크로스헤어·스윕 라인 + 48개 CSS 방사형 바. `isGenerating` / `accentColor` prop으로 상태 전환 +- **WaveformCanvas** — 스테이지 우측 캔버스 오실로스코프 (헤더와 별도) +- **AudioPlayer** — 실제 `