diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 378f855..d1d42a0 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -1,8 +1,10 @@ services: # 프론트엔드 - Vite 개발 서버 - fromis9-web: + fromis9-frontend: image: node:20-alpine - container_name: fromis9-web + container_name: fromis9-frontend + labels: + - "com.centurylinklabs.watchtower.enable=false" working_dir: /app command: sh -c "npm install && npm run dev -- --host 0.0.0.0 --port 80" volumes: diff --git a/docker-compose.yml b/docker-compose.yml index cd0cb03..d4b7e29 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,9 @@ services: fromis9-web: build: . - container_name: fromis9-web + container_name: fromis9-frontend + labels: + - "com.centurylinklabs.watchtower.enable=false" env_file: - .env networks: diff --git a/frontend/src/pages/pc/AlbumDetail.jsx b/frontend/src/pages/pc/AlbumDetail.jsx index cf8cd3f..d92965d 100644 --- a/frontend/src/pages/pc/AlbumDetail.jsx +++ b/frontend/src/pages/pc/AlbumDetail.jsx @@ -279,10 +279,12 @@ function AlbumDetail() { className="col-span-1" >

앨범 소개

-
-

- {album.description} -

+
+
+

+ {album.description} +

+
)} diff --git a/frontend/src/pages/pc/Discography.jsx b/frontend/src/pages/pc/Discography.jsx index 26cb314..4ffdbe0 100644 --- a/frontend/src/pages/pc/Discography.jsx +++ b/frontend/src/pages/pc/Discography.jsx @@ -35,11 +35,12 @@ function Discography() { return titleTrack ? titleTrack.title : tracks[0].title; }; - // 앨범 타입별 개수 계산 + // 앨범 타입별 개수 계산 (album_type_short 우선 사용) + const getAlbumType = (album) => album.album_type_short || album.album_type; const albumStats = { - 정규: albums.filter(a => a.album_type === '정규').length, - 미니: albums.filter(a => a.album_type === '미니').length, - 싱글: albums.filter(a => a.album_type === '싱글').length, + 정규: albums.filter(a => getAlbumType(a) === '정규').length, + 미니: albums.filter(a => getAlbumType(a) === '미니').length, + 싱글: albums.filter(a => getAlbumType(a) === '싱글').length, 총: albums.length }; diff --git a/frontend/src/pages/pc/admin/AdminAlbumForm.jsx b/frontend/src/pages/pc/admin/AdminAlbumForm.jsx index 4b4a540..0261ec7 100644 --- a/frontend/src/pages/pc/admin/AdminAlbumForm.jsx +++ b/frontend/src/pages/pc/admin/AdminAlbumForm.jsx @@ -456,8 +456,14 @@ function AdminAlbumForm() { }; const updateTrack = (index, field, value) => { + // 작사/작곡/편곡 필드에서 '|' (전각 세로 막대)를 ', '로 자동 변환 + let processedValue = value; + if (['lyricist', 'composer', 'arranger'].includes(field)) { + processedValue = value.replace(/[||]/g, ', '); + } + setTracks(prev => prev.map((track, i) => - i === index ? { ...track, [field]: value } : track + i === index ? { ...track, [field]: processedValue } : track )); }; @@ -746,7 +752,7 @@ function AdminAlbumForm() { name="description" value={formData.description} onChange={handleInputChange} - rows={4} + rows={8} className="w-full px-4 py-2.5 border border-gray-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent resize-none" placeholder="앨범에 대한 설명을 입력하세요..." /> @@ -830,7 +836,7 @@ function AdminAlbumForm() { value={track.duration || ''} onChange={(e) => updateTrack(index, 'duration', e.target.value)} className="w-full px-3 py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent text-center" - placeholder="3:30" + placeholder="0:00" />
@@ -857,7 +863,6 @@ function AdminAlbumForm() { animate={{ height: 'auto', opacity: 1 }} exit={{ height: 0, opacity: 0 }} transition={{ duration: 0.2 }} - className="overflow-hidden" > {/* 작사/작곡/편곡 */}
@@ -912,7 +917,7 @@ function AdminAlbumForm() { value={track.lyrics || ''} onChange={(e) => updateTrack(index, 'lyrics', e.target.value)} rows={12} - className="w-full px-3 py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent resize-y min-h-[200px]" + className="w-full px-3 py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent resize-none min-h-[200px]" placeholder="가사를 입력하세요..." />