Update walkthrough: CRM 전용 내용으로 재작성

pjs
2026-02-16 02:23:35 +09:00
parent 56bb7c4815
commit 571b9f962f

@@ -1,140 +1,92 @@
# CRM 및 홈페이지 개선 작업 요약 # CRM 관리자 사이트 개선 작업 요약
> **작업 기간:** 2026년 2월 13일 ~ 2월 16일 > **작업 기간:** 2026년 2월 13일 ~ 2월 16일
> **적용 프로젝트:** madeu_crm (관리자 사이트), madeu_diet_home (다이어트홈), madeu_petit_home (쁘띠홈) > **적용 프로젝트:** madeu_crm (관리자 사이트)
--- ---
## 🔧 무엇을 했나요? ## 🔧 무엇을 했나요?
크게 **4가지 영역** 개선이 이루어졌습니다: CRM 관리자 사이트에서 **3가지 영역** 개선습니다:
1. CRM(관리자 사이트)의 이벤트 관리 기능 개선 1. 이벤트 관리 기능 개선
2. 온라인 예약 기능의 캘린더 및 시간대 선택 개선 2. 센터별 운영시간 / 휴무일 관리 기능 신규 구현
3. 센터별 운영시간/휴무일 관리 기능 신규 구현 3. 예약 기능 분리 및 정리
4. 고객 홈페이지의 이벤트 목록/상세 화면 개선
--- ---
## 📋 1. CRM 이벤트 관리 기능 개선 ## 📋 1. 이벤트 관리 기능 개선
### 이벤트 등록/수정 화면 통일 ### 등록/수정 화면 통일
기존에는 이벤트 **등록 화면**과 **수정 화면**의 디자인이 달랐습니다.
| 항목 | 변경 전 | 변경 후 | | 항목 | 변경 전 | 변경 후 |
|------|---------|---------| |------|---------|---------|
| 등록 화면 | 수정 화면과 다른 디자인 | 수정 화면과 **완전히 동일한 디자인** | | 등록 화면 | 수정 화면과 다른 디자인 | 수정 화면과 **완전히 동일한 디자인** |
| 이미지 업로드 | 등록 화면에서 일부 기능 누락 | 이미지 업로드, 미리보기 등 **모든 기능 통일** | | 이미지 업로드 | 등록 화면에서 일부 기능 누락 | 이미지 업로드, 미리보기 등 **모든 기능 통일** |
| 시술 선택 | 등록 시 일부 동작 안 됨 | 등록/수정 모두 정상 동작 |
### 이벤트 목록 화면 개선 ### 이벤트 목록 화면 개선
- **이벤트 시작일/종료일** 컬럼이 목록(그리드)에 추가되었습니다 - 목록(그리드)에 **이벤트 시작일/종료일** 컬럼이 추가되었습니다
- "이벤트(다이어트)", "이벤트(쁘띠)" 메뉴에 따라 표시되는 컬럼이 자동으로 변경됩니다 - "이벤트(다이어트)", "이벤트(쁘띠)" 메뉴에 따라 표시 컬럼이 자동 변경됩니다
### 날짜 저장 버그 수정 ### 날짜 저장 버그 수정
- **문제:** 이벤트 시작일/종료일이 "2026-02-" 처럼 불완전하게 저장되는 문제 - **문제:** 이벤트 시작일/종료일이 "2026-02-" 처럼 날짜가 잘려서 저장되는 문제
- **해결:** 날짜가 "20260215" 형식으로 정확히 저장되도록 수정 - **해결:** 날짜가 "20260215" 형식으로 빠짐없이 정확히 저장되도록 수정
--- ---
## 📅 2. 온라인 예약 캘린더 개선 ## 🏥 2. 센터별 운영시간 / 휴무일 관리
### 캘린더에서 예약 불가 날짜 표시 ### 운영시간 관리 화면
고객이 예약할 때 보는 캘린더에 다음과 같은 개선이 적용됩니다: CRM에서 각 센터의 요일별 기본 운영시간을 설정할 수 있습니다.
(예: 월~금 10:00~19:00, 토 10:00~14:00)
| 날짜 유형 | 표시 방식 | 클릭 가능? | ### 별도 스케줄 기능 (신규)
|-----------|----------|-----------|
| 일반 영업일 | 기본 표시 | ✅ 가능 |
| 일요일 | 빨간색 글자 + 회색 배경 + 흐리게 | ❌ 불가 |
| 공휴일 | 빨간색 글자 + 회색 배경 + 흐리게 | ❌ 불가 |
| 병원 자체 휴무일 | 빨간색 글자 + 회색 배경 + 흐리게 | ❌ 불가 |
| 별도 운영일 (아래 3번 참고) | 기본 표시 | ✅ 가능 (일요일/공휴일이어도 예외적으로 예약 가능) |
### 예약 시간대 표시 수정 기본 운영시간 외에 **특정 날짜만** 운영시간을 다르게 설정해야 할 때 사용합니다.
- **문제:** 평일인데 시간대가 제대로 표시되지 않는 문제 **사용 예시:**
- **해결:** 시간대 조회 로직의 조건 오류를 수정하여 정상 표시
### 캘린더 반응형 (화면 크기 대응) | 상황 | 처리 방법 |
|------|----------|
| 2/18(화)에 오전만 운영하고 싶다 | 2/18에 별도 스케줄 등록 (09:00~13:00) |
| 2/23(일)에 특별 영업하고 싶다 | 2/23에 별도 스케줄 등록 + 운영 ON |
| 3/1(토)에 임시 휴무하고 싶다 | 3/1에 별도 스케줄 등록 + 운영 OFF |
- 캘린더가 화면 크기에 맞게 자동으로 조절되도록 개선 > 💡 **우선순위:** 별도 스케줄이 등록된 날짜는 기본 운영시간 대신 별도 스케줄이 적용됩니다.
--- ### 휴무일 관리 개선
## 🏥 3. 센터별 운영시간/휴무일 관리 (신규 기능)
### 별도 스케줄 기능이란?
기본적으로 병원은 **요일별 운영시간** (예: 월~금 10:00~19:00)이 설정되어 있습니다.
하지만 특정 날짜에 운영시간을 변경해야 할 때가 있습니다.
**예시:**
- 2/18(화)은 평일이지만 **오전만 운영** → 별도 스케줄로 등록
- 2/23(일)은 보통 휴무지만 **특별 영업** → 별도 스케줄로 `운영 ON` 등록
### 별도 스케줄의 우선순위
```
별도 스케줄 (특정 날짜) > 기본 요일별 운영시간
```
별도 스케줄이 등록된 날짜는 기본 운영시간 대신 별도 스케줄의 시간이 적용됩니다.
### 휴무일 관련 개선
| 항목 | 변경 전 | 변경 후 | | 항목 | 변경 전 | 변경 후 |
|------|---------|---------| |------|---------|---------|
| 휴무일 반복 옵션 | 기본값 없음 (실수로 빈 값 저장 가능) | **"반복 안함"이 기본 선택** | | 휴무일 반복 옵션 | 기본값 없음 (빈 값 저장 가능) | **"반복 안함"이 기본 선택** |
| 운영시간 탭 버튼 | 다른 화면과 크기 다름 | 다른 화면과 **동일한 버튼 크기**로 통일 | | 운영시간 탭 버튼 | 다른 화면과 크기 다름 | 다른 화면과 **동일하게 통일** |
--- ---
## 🖥️ 4. 고객 홈페이지 이벤트 화면 개선 ## 🔀 3. 예약 기능 분리
### 이벤트 목록 화면 ### 변경 전
고객이 보는 이벤트 목록 페이지에 다음 기능이 추가되었습니다: 예약 관련 코드가 **시술안내(WebService)** 코드 안에 섞여 있었습니다.
- 시술 조회도 하고, 예약 저장도 하고, 캘린더 정보도 가져오는 등
- 하나의 파일에 너무 많은 기능이 들어있어 관리가 어려웠습니다
| 기능 | 설명 | ### 변경 후
|------|------|
| **이벤트 기간 표시** | 각 이벤트 카드에 📅 시작일 ~ 종료일이 표시됩니다 |
| **종료된 이벤트 표시** | 종료일이 지난 이벤트는 흐리게 표시되고, 우상단에 "종료된 이벤트" 배지가 붙습니다 |
| **지난 이벤트 클릭 차단** | 종료된 이벤트를 클릭하면 상세페이지로 이동하지 않고, **"지난 이벤트" 안내 팝업**이 표시됩니다 |
### 이벤트 상세 화면 예약 기능을 **독립적인 모듈**로 분리했습니다.
- 시술 선택, 가격 계산, 예약 버튼 등의 기능은 동일 | 기능 | 변경 전 | 변경 후 |
- 코드 구조만 개선 (화면/동작 변경 없음) |------|---------|---------|
| 예약 저장 | WebServiceController에 포함 | **ReservationController**로 분리 |
| 예약 조회 | WebServiceService에 포함 | **ReservationService**로 분리 |
| 예약 SQL | WebServiceSqlMap에 포함 | **ReservationMapper**로 분리 |
### 예약 화면 > 💡 **사용자 화면에 변화는 없습니다.** 내부 코드만 정리하여 향후 기능 추가나 수정이 쉬워졌습니다.
- 기존 예약 화면 코드 구조 개선 (별도 파일로 분리)
- 예약 로직은 독립 모듈로 분리하여 유지보수성 향상
---
## 📁 코드 구조 개선 (기술적 배경)
여러 화면의 코드가 **한 파일에 800~1,600줄씩** 섞여 있었습니다.
이를 역할별로 분리하여 유지보수가 쉬워졌습니다.
| 화면 | 변경 전 (줄 수) | 변경 후 (줄 수) | 비고 |
|------|----------------|----------------|------|
| 예약 화면 | 1,614줄 | 97줄 | 스타일·기능을 각각 별도 파일로 분리 |
| 이벤트 상세 | 780줄 | 80줄 | 스타일·기능을 각각 별도 파일로 분리 |
| 이벤트 목록 | 600줄 | 60줄 | 스타일·기능을 각각 별도 파일로 분리 |
> 💡 화면에서 보이는 것은 전혀 변하지 않습니다. **내부 코드만 깔끔하게 정리**한 것입니다.
---
## ✅ 적용된 프로젝트
| 프로젝트 | 적용된 변경 |
|---------|------------|
| **madeu_crm** | 이벤트 관리, 운영시간/휴무일 관리, 별도 스케줄 |
| **madeu_diet_home** | 예약 캘린더, 이벤트 목록/상세, 코드 분리, 지난이벤트 팝업 |
| **madeu_petit_home** | 다이어트홈과 동일한 변경 적용 |
--- ---