Compare commits

2 Commits

Author SHA1 Message Date
a50c6c8be2 docs: CLAUDE.md 서비스 네이밍 변경 + personal 서비스 반영
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 17:29:23 +09:00
b88ae331d7 fix(portfolio): 모바일에서 편집/PDF 툴바 플로팅 버튼으로 표시
768px 이하에서 display:none이던 toolbar를 우하단 FAB 스타일로 변경.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 15:21:14 +09:00
2 changed files with 22 additions and 6 deletions

View File

@@ -27,6 +27,7 @@
| `/todo` | `Todo` | 태스크 보드 | | `/todo` | `Todo` | 태스크 보드 |
| `/blog-lab` | `BlogMarketing` | 블로그 마케팅 수익화 대시보드 | | `/blog-lab` | `BlogMarketing` | 블로그 마케팅 수익화 대시보드 |
| `/agent-office` | `AgentOffice` | AI 에이전트 가상 오피스 (WebSocket + 채팅) | | `/agent-office` | `AgentOffice` | AI 에이전트 가상 오피스 (WebSocket + 채팅) |
| `/portfolio` | `Portfolio` | 개인 포트폴리오 (프로필·경력·프로젝트·자기소개) |
라우트 정의: `src/routes.jsx` / 라우터 설정: `src/Router.jsx` 라우트 정의: `src/routes.jsx` / 라우터 설정: `src/Router.jsx`
@@ -63,7 +64,7 @@ proxy: {
} }
``` ```
- `/api/*` → NAS 백엔드 - `/api/*` → NAS 백엔드 (nginx가 서비스별 라우팅: lotto, personal, stock-lab, music-lab 등)
- `/media/*` → NAS 미디어 파일 (여행 사진 `/media/travel/`, 음악 `/media/music/`) - `/media/*` → NAS 미디어 파일 (여행 사진 `/media/travel/`, 음악 `/media/music/`)
- 개발 서버 포트: **3007** - 개발 서버 포트: **3007**
@@ -93,10 +94,10 @@ proxy: {
| 실현손익 | GET | `/api/portfolio/sell-history?broker=X&days=N` — response: `{ records: [...] }` | | 실현손익 | GET | `/api/portfolio/sell-history?broker=X&days=N` — response: `{ records: [...] }` |
| 실현손익 | POST/PUT | `/api/portfolio/sell-history`, `/api/portfolio/sell-history/:id` | | 실현손익 | POST/PUT | `/api/portfolio/sell-history`, `/api/portfolio/sell-history/:id` |
| 실현손익 | DELETE | `/api/portfolio/sell-history/:id` | | 실현손익 | DELETE | `/api/portfolio/sell-history/:id` |
| TODO | GET/POST | `/api/todos` | | TODO | GET/POST | `/api/todos` — personal 서비스 |
| TODO | PUT/DELETE | `/api/todos/:id`, `/api/todos/done` | | TODO | PUT/DELETE | `/api/todos/:id`, `/api/todos/done` — personal 서비스 |
| 블로그 | GET/POST | `/api/blog/posts` | | 블로그 | GET/POST | `/api/blog/posts` — personal 서비스 |
| 블로그 | PUT/DELETE | `/api/blog/posts/:id` | | 블로그 | PUT/DELETE | `/api/blog/posts/:id` — personal 서비스 |
| AI 음악 | POST | `/api/music/generate` — body: `{ title, genre, moods, instruments, duration_sec, bpm, key, scale, prompt }``{ task_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 | `/api/music/status/:task_id``{ status, progress, message, audio_url?, error?, track? }` |
| AI 음악 라이브러리 | GET/POST | `/api/music/library` — response: `{ tracks: [...] }` | | AI 음악 라이브러리 | GET/POST | `/api/music/library` — response: `{ tracks: [...] }` |
@@ -114,6 +115,9 @@ proxy: {
| 부동산 | GET | `/api/realestate/announcements`, `/api/realestate/matches` | | 부동산 | GET | `/api/realestate/announcements`, `/api/realestate/matches` |
| 부동산 | PUT | `/api/realestate/profile` | | 부동산 | PUT | `/api/realestate/profile` |
| AI 큐레이터 | GET | `/api/lotto/briefing/latest`, `/api/lotto/curator/usage` | | AI 큐레이터 | GET | `/api/lotto/briefing/latest`, `/api/lotto/curator/usage` |
| 포트폴리오 | GET | `/api/profile/public` — personal 서비스 |
| 포트폴리오 | POST | `/api/profile/auth` — personal 서비스 |
| 포트폴리오 | CRUD | `/api/profile/careers`, `/api/profile/projects`, `/api/profile/skills`, `/api/profile/introductions` — personal 서비스 |
--- ---

View File

@@ -810,7 +810,19 @@
@media (max-width: 768px) { @media (max-width: 768px) {
.pf-toolbar { .pf-toolbar {
display: none; position: fixed;
bottom: 16px;
right: 16px;
z-index: 90;
gap: 8px;
flex-direction: column;
}
.pf-toolbar .button {
font-size: 13px;
padding: 8px 14px;
border-radius: 20px;
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.4);
} }
.pf-profile-card { .pf-profile-card {