온헤어 CRM 화면과 사용 흐름
1. 문서 범위
온헤어 원장님과 디자이너가 웹에서 다음 업무를 처리하는 첫 버전을 정의한다.
- 휴대전화 번호로 고객 찾기 및 중복 합치기
- 고객별 시술 이력, 염색약 번호, 배합, 시술 메모 확인
- 오늘·내일 예약 확인 건 등록 및 관리
- 전날 오후 6시 예약 확인 알림톡 자동 발송
- 방문 3시간 전 당일 예약 안내 알림톡 자동 발송
- 방문 결과 및 노쇼 기록
- 시술 기록 작성과 시술 직후 재예약
- 마지막 시술 후 두 달이 지난 뜸해진 고객 관리
- 기존 CSV 자료 가져오기
- 직원 계정과 가게 단위 권한 관리
대상 플랫폼은 Next.js 기반 웹이다. 모바일 앱 스토어 배포는 전제하지 않는다.
2. 역할과 공통 접근 권한
| 구분 | 원장님 | 디자이너 |
|---|---|---|
| 오늘·내일 예약 확인 | 전체 예약 확인 건 | 본인이 담당 디자이너인 예약 확인 건 |
| 고객 목록 | 전체 고객 | 자기 담당 고객 |
| 고객 상세 | 전체 고객 상세 | 자기 담당 고객 상세 |
| 시술 기록 | 전체 고객 기록 확인·작성 | 자기 담당 고객 기록 확인·작성 |
| 뜸해진 고객 | 전체 또는 담당 디자이너별 조회 | 자기 담당 고객 |
| 자료 가져오기·병합 | 가능 | 불가 |
| 직원·권한 설정 | 가능 | 불가 |
| 알림톡 설정 | 가능 | 불가 |
| 병합 이력·병합 취소 | 가능 | 불가 |
| 조회·수정·내보내기 기록 | 확인 가능 | 불가 |
모든 조회와 수정 요청은 화면에서만 숨기지 않고 서버에서도 다음 조건을 검사한다.
- 로그인한 직원이 현재 가게에 소속되어 있는가
- 계정이 활성 상태인가
- 원장님 또는 디자이너 역할에 허용된 행동인가
- 디자이너가 접근하는 고객이나 예약 확인 건이 자기 담당 범위인가
권한 충돌 확인 필요
다음 두 요구가 함께 존재한다.
- 각 디자이너는 자기 담당 고객만 자세히 본다.
- 담당 디자이너가 쉬는 날 다른 디자이너가 이전 시술 이력과 염색약 번호를 확인해야 한다.
첫 버전에서 아래 중 어떤 방식으로 처리할지 확인 필요다.
- 임시 열람 요청 후 원장님 승인
- 원장님이 해당 고객의 담당 디자이너를 일시적으로 변경
- 대체 시술 예약 확인 건이 배정된 디자이너에게 예약 당일만 열람 허용
방식이 확정되기 전까지 다른 담당 고객을 검색하면 상세 정보를 노출하지 않고 담당 고객이 아닙니다. 원장님 확인이 필요합니다. 상태를 표시한다.
3. 공통 화면 구조
상단 영역
- 서비스명: 온헤어
- 현재 가게명
- 로그인 직원 이름
- 역할: 원장님 또는 디자이너
- 로그아웃
- 휴대전화 번호 빠른 검색
주 메뉴
모든 직원에게 표시:
- 오늘·내일 예약 확인
- 고객 목록
- 뜸해진 고객
원장님에게만 추가 표시:
- 원장 설정
공통 휴대전화 번호 처리
- 원본 입력값과 정규화 번호를 함께 저장한다.
- 공백, 하이픈, 점, 괄호를 제거해 검사한다.
+82,0082,82형식을 처리한다.- 기존
011,016,017,018,019를 임의로010으로 변경하지 않는다. - 가게 식별값과 정규화 번호가 모두 같을 때 같은 고객으로 판정한다.
- 다른 가게의 고객은 같은 번호여도 합치지 않는다.
- 번호가 없거나 검증에 실패하면 자동 병합하지 않고
검토 필요로 둔다.
4. 핵심 사용 흐름
흐름 A. 원장님의 최초 설정
로그인
→ 가게와 역할 확인
→ 원장 설정
→ 직원·권한 설정
→ 직원 계정 등록
→ 자료 가져오기·중복 합치기
→ CSV 열 연결 및 오류 검토
→ 중복 고객 병합 검토
→ 알림톡 설정
→ 오늘·내일 예약 확인
완료 조건:
- 원장님과 디자이너 계정이 현재 가게에 연결되어 있다.
- 기존 고객과 시술 이력이 정상 데이터 또는 검토 필요 데이터로 보관된다.
- 중복 고객이 대표 고객 기준으로 정리된다.
- 발신 프로필과 알림톡 템플릿 상태를 확인할 수 있다.
흐름 B. 예약 확인 건 등록과 알림톡 발송
오늘·내일 예약 확인
→ 예약 확인 건 직접 등록
→ 휴대전화 번호로 기존 고객 검색
→ 고객 선택 또는 신규 고객 등록
→ 방문 예정 일시·담당 디자이너·예정 시술 입력
→ 예약 연락처 스냅샷 저장
→ 전날 오후 6시 예약 확인 알림톡
→ 방문 3시간 전 당일 예약 안내 알림톡
→ 발송 결과 저장
→ 방문 결과 기록
발송 실패 시:
발송 실패 표시
→ 실패 이유 확인
→ 알림톡 설정 확인 또는 수동 연락
→ 전화·카카오톡 채널 등 연락 일시와 결과 기록
흐름 C. 시술 완료와 재예약
예약 확인 건에서 방문 결과를 시술 완료로 변경
→ 연결된 시술 기록 확인
→ 시술 기록이 없으면 담당 디자이너에게 내부 할 일 표시
→ 시술 기록 작성
→ 시술 종류·메모·염색약 번호·배합 입력
→ 필요하면 사진 첨부
→ 필요하면 다음 예약 일시 입력
→ 저장
→ 시술 이력 갱신
→ 내부 할 일 자동 완료
→ 다음 예약이 있으면 예약 확인 건 생성
흐름 D. 뜸해진 고객 관리
마지막 시술일로부터 달력 기준 2개월 경과
→ 앞으로 잡힌 예약 확인 건이 있는지 검사
→ 미래 예약이 없으면 뜸해짐으로 분류
→ 뜸해진 고객 목록 표시
→ 마케팅 수신동의 확인
→ 직원이 연락
→ 연락 일시·채널·결과 기록
→ 새 예약 등록
→ 뜸해진 고객 목록에서 자동 제외
흐름 E. 고객 중복 병합
같은 정규화 번호 발견
→ 중복 고객 병합 검토
→ 대표 고객 선택
→ 이름·담당 디자이너·동의 상태 비교
→ 미래 예약과 발송 예정 알림톡 검토
→ 병합 사유 입력
→ 병합 실행
→ 시술 기록과 예약 확인 건을 대표 고객에 연결
→ 통합 대상 고객은 병합됨 상태로 보관
→ 병합 이력 생성
5. 화면 상세
로그인 [login]
목적
직원 계정으로 로그인하고 소속 가게와 역할을 확인한 뒤 허용된 첫 화면으로 이동한다.
진입 조건
- 서비스에 처음 접속했을 때
- 로그아웃했을 때
- 로그인 유효 시간이 끝났을 때
- 비활성 또는 차단된 계정으로 보호된 주소에 접근했을 때
사용자가 보는 정보
- 온헤어 서비스명
- 설정된 로그인 수단 입력 영역
- 로그인 버튼
- 계정 상태 또는 오류 안내
로그인 수단의 구체적인 방식은 정해지지 않았다. 이메일·비밀번호, 휴대전화 인증 등 어떤 수단을 사용할지 확인 필요다.
할 수 있는 행동
- 로그인 정보 입력
- 로그인 실행
- 오류 확인 후 다시 시도
상태
| 상태 | 표시 내용 |
|---|---|
| 성공 | 현재 가게, 직원 역할을 확인하고 첫 화면으로 이동 |
| 오류 | 로그인 정보를 확인해 주세요. |
| 계정 비활성 | 사용이 중지된 계정입니다. 원장님에게 확인해 주세요. |
| 가게 미소속 | 연결된 가게를 찾을 수 없습니다. |
| 로그인 만료 | 로그인이 만료되었습니다. 다시 로그인해 주세요. |
다음 화면
- 로그인 성공 → 오늘·내일 예약 확인
[today-tomorrow-reservations]
완료 조건
- 서버에서 계정 활성 상태, 가게 소속, 역할을 확인했다.
- 현재 가게 식별값과 직원 식별값이 로그인 상태에 연결되었다.
오늘·내일 예약 확인 [today-tomorrow-reservations]
목적
오늘과 내일의 예약 확인 건, 알림톡 발송 상태, 고객 확인 상태, 방문 결과를 한곳에서 관리한다.
진입 조건
- 로그인 성공 후 첫 화면
- 주 메뉴에서 선택
- 알림톡 발송 오류 알림 선택
사용자가 보는 정보
상단 요약:
- 오늘 예약 확인 건 수
- 내일 예약 확인 건 수
- 알림톡 발송 성공·실패·처리 중 수
- 시술 기록 미작성 내부 할 일 수
- 노쇼 수
예약 확인 건별 정보:
- 방문 예정 일시
- 예약 당시 고객명
- 예약 연락처 스냅샷
- 현재 연결 고객
- 담당 디자이너
- 예정 시술 종류
- 예약·방문 접점
- 고객 확인 상태
- 전날 예약 확인 알림톡 상태
- 당일 예약 안내 알림톡 상태
- 방문 결과
- 연결된 시술 기록 여부
- 수동 연락 일시와 결과
예약·방문 접점 선택값:
- 네이버 플레이스·예약·톡톡
- 카카오톡 채널
- 개인 카카오톡
- 인스타그램·SNS
- 전화
- 매장·현장 방문
방문 결과 선택값:
- 시술 완료
- 노쇼
- 고객 취소
- 매장 취소
할 수 있는 행동
- 오늘과 내일 탭 전환
- 담당 디자이너별 필터
- 고객명 또는 휴대전화 번호 검색
- 예약 확인 건 직접 등록
- 기존 예약 확인 건 수정
- 고객 상세 열기
- 방문 결과 기록
- 시술 기록 작성
- 발송 실패 이유 확인
- 수동 연락 일시·채널·결과 기록
- 알림톡 설정으로 이동
예약 확인 건 등록 영역
입력 항목:
- 휴대전화 번호
- 기존 고객 또는 신규 고객
- 예약 당시 고객명
- 예약 연락처 스냅샷
- 방문 예정 일시
- 담당 디자이너
- 예정 시술 종류
- 예약·방문 접점
- 고객 확인 상태
휴대전화 번호 입력 직후 같은 정규화 번호의 고객을 찾는다.
- 기존 고객 1명 발견: 기존 고객을 연결한다.
- 같은 번호 고객이 여러 명 발견: 중복 고객 병합 검토로 이동한다.
- 기존 고객 없음: 고객 이름, 담당 디자이너, 동의 상태를 입력해 신규 고객을 만든다.
- 검증 실패 번호: 자동 알림톡 발송을 중지하고
검토 필요로 저장한다.
자동 발송 표시
- 전날 오후 6시 예약 확인 알림톡
- 방문 3시간 전 당일 예약 안내 알림톡
- 기준 시간대: Asia/Seoul
- 같은 예약 확인 건과 안내 종류는 한 번만 성공 발송
- 이미 성공한 알림톡은 예약 상태를 다시 저장해도 자동 재발송하지 않음
예시 안내:
김서연 고객님, 내일 오후 2시 온헤어 민주 디자이너 시술이 예정되어 있습니다. 예정 시술은 염색입니다. 변경이나 취소가 필요하시면 온헤어로 연락해 주세요.
상태
| 상태 | 표시 내용 |
|---|---|
| 성공 | 예약 확인 건과 발송 결과가 최신 상태로 표시됨 |
| 빈 상태 | 오늘 또는 내일 등록된 예약 확인 건이 없습니다. |
| 발송 실패 | 실패 사유와 수동 연락 기록 버튼 표시 |
| 설정 오류 | 알림톡 연결 상태를 확인해 주세요. |
| 번호 검토 필요 | 예약 연락처를 확인해야 자동 발송할 수 있습니다. |
| 시술 기록 누락 | 시술 기록을 작성해 주세요. 내부 할 일 표시 |
| 권한 오류 | 디자이너에게 허용되지 않은 예약 확인 건은 상세 비공개 |
다음 화면
- 고객 선택 → 고객 상세
[customer-detail] - 시술 기록 작성 → 시술 기록 작성
[treatment-record] - 발송 설정 오류 → 알림톡 설정
[notification-settings] - 중복 고객 발견 → 중복 고객 병합 검토
[customer-merge-review]
완료 조건
- 예약 확인 건에 고객, 방문 예정 일시, 담당 디자이너, 예정 시술, 접점이 저장되었다.
- 예약 연락처 스냅샷이 저장되었다.
- 방문 결과가 네 가지 값 중 하나로 기록된다.
- 알림톡 요청 및 결과 식별값과 성공·실패·처리 중 상태가 기록된다.
고객 목록 [customer-list]
목적
휴대전화 번호, 이름, 담당 디자이너로 고객을 찾고 상세 기록으로 이동한다.
진입 조건
- 주 메뉴에서 선택
- 오늘·내일 예약 확인에서 고객 찾기 선택
- 고객 상세에서 목록으로 돌아가기
사용자가 보는 정보
고객별 목록 항목:
- 고객 이름
- 화면 표시 휴대전화 번호
- 담당 디자이너
- 현재 관리 단계
- 마지막 방문일
- 최근 시술 종류
- 다음 예약 일시
- 마케팅 수신동의 상태
- 중복 또는 검토 필요 상태
권한에 따른 범위:
- 원장님: 현재 가게의 전체 고객
- 디자이너: 자기 담당 고객
할 수 있는 행동
- 휴대전화 번호 검색
- 고객 이름 검색
- 담당 디자이너 필터
- 고객 단계 필터
- 고객 상세 열기
- 신규 고객 등록
- 중복 의심 고객 검토
- 원장님이 고객 자료 내보내기
- 병합됨 고객 포함 여부 선택
신규 고객 등록
필수 또는 관리 항목:
- 고객 이름
- 휴대전화 번호
- 담당 디자이너
- 개인정보 동의 상태·동의일·동의 경로
- 마케팅 수신동의 상태·동의일·동의 경로
번호 입력 후 같은 정규화 번호가 발견되면 새 고객을 바로 만들지 않는다.
상태
| 상태 | 표시 내용 |
|---|---|
| 성공 | 검색 조건에 맞는 고객 목록 표시 |
| 빈 상태 | 조건에 맞는 고객이 없습니다. |
| 신규 등록 성공 | 고객이 등록되었습니다. |
| 중복 발견 | 기존 고객 카드와 병합 검토 버튼 표시 |
| 번호 오류 | 휴대전화 번호를 확인해 주세요. |
| 권한 제한 | 자기 담당 고객만 확인할 수 있습니다. |
다음 화면
- 고객 선택 → 고객 상세
[customer-detail] - 중복 고객 선택 → 중복 고객 병합 검토
[customer-merge-review] - 신규 고객 저장 → 고객 상세
[customer-detail]
완료 조건
- 휴대전화 번호 검색 결과가 정규화 번호 기준으로 일치한다.
- 디자이너에게 다른 담당 고객의 상세 정보가 노출되지 않는다.
- 고객 신규 등록 시 중복 검사가 먼저 수행된다.
고객 상세 [customer-detail]
목적
고객 기본 정보, 동의 상태, 시술 이력, 염색약 번호, 배합, 다음 예약과 연락 기록을 한곳에서 확인한다.
진입 조건
- 고객 목록에서 고객 선택
- 오늘·내일 예약 확인에서 고객 선택
- 뜸해진 고객에서 고객 선택
- 휴대전화 번호 빠른 검색 결과 선택
- 병합 이력에서 대표 고객 또는 통합 대상 고객 선택
사용자가 보는 정보
고객 기본 정보:
- 고객 이름
- 원본 휴대전화 번호
- 화면 표시 번호
- 담당 디자이너
- 현재 관리 단계
- 마지막 방문일
- 개인정보 동의 상태와 변경 이력
- 마케팅 수신동의 상태와 변경 이력
- 고객 상태: 활성, 병합됨, 검토 필요
시술 이력:
- 시술 일시
- 실제 담당 디자이너
- 시술 종류
- 시술 메모
- 염색약 번호
- 배합
- 시술 사진
- 작성자·작성일·수정일
예약 확인 건:
- 미래 예약
- 과거 예약과 방문 결과
- 알림톡 발송 상태
- 예약 연락처 스냅샷
- 다음 예약 일시
뜸해진 고객 연락 이력:
- 연락 일시
- 연락 채널
- 연락 결과
- 기록한 직원
할 수 있는 행동
- 고객 기본 정보 수정
- 담당 디자이너 변경
- 개인정보 및 마케팅 수신동의 상태 변경
- 시술 기록 작성
- 예약 확인 건 등록
- 과거 시술 사진 보기
- 중복 고객 찾기
- 병합 이력 보기
- 원장님이 고객 자료 내보내기
상태
| 상태 | 표시 내용 |
|---|---|
| 성공 | 기본 정보와 시간순 시술 이력 표시 |
| 시술 이력 없음 | 아직 등록된 시술 이력이 없습니다. |
| 미래 예약 없음 | 예정된 다음 예약이 없습니다. |
| 동의 미확인 | 기존 자료에서 동의 사실을 확인하지 못했습니다. |
| 병합됨 고객 | 대표 고객 링크와 병합 일시 표시 |
| 권한 오류 | 이 고객의 상세 기록을 볼 권한이 없습니다. |
| 사진 오류 | 사진 대신 접근 실패 안내 표시 |
다음 화면
- 시술 기록 작성 → 시술 기록 작성
[treatment-record] - 예약 등록 → 오늘·내일 예약 확인
[today-tomorrow-reservations] - 중복 검토 → 중복 고객 병합 검토
[customer-merge-review] - 병합 기록 확인 → 고객 병합 이력
[customer-merge-history]
완료 조건
- 고객에게 연결된 전체 시술 이력과 예약 확인 건이 시간순으로 표시된다.
- 병합 전 기록도 대표 고객 상세에서 확인된다.
- 담당 디자이너와 작성자는 병합 때문에 임의로 바뀌지 않는다.
- 동의 변경 일시, 경로, 변경자가 이력으로 남는다.
시술 기록 작성 [treatment-record]
목적
시술 후 시술 종류, 시술 메모, 염색약 번호와 배합을 남기고 필요하면 사진과 다음 예약을 추가한다.
진입 조건
- 고객 상세에서 시술 기록 작성 선택
- 오늘·내일 예약 확인에서 시술 완료 처리
- 시술 기록 미작성 내부 할 일 선택
사용자가 보는 정보
- 고객 이름과 휴대전화 번호
- 고객 담당 디자이너
- 최근 시술 기록 요약
- 최근 염색약 번호와 배합
- 연결된 예약 확인 건
- 방문 예정 또는 시술 일시
- 실제 담당 디자이너
입력 항목:
- 시술 일시
- 실제 담당 디자이너
- 시술 종류
- 시술 메모
- 염색약 번호
- 배합
- 시술 사진
- 다음 예약 일시
- 다음 예약 담당 디자이너
- 다음 예정 시술
시술 종류와 시술 메모는 시술 기록 완료 판단에 필요한 항목이다. 염색약 번호와 배합은 해당 시술에 필요할 때 입력한다.
할 수 있는 행동
- 최근 시술 기록 펼쳐보기
- 시술 종류와 메모 입력
- 염색약 번호와 배합 입력
- 사진 선택 첨부
- 다음 예약 함께 등록
- 임시 입력 취소
- 시술 기록 저장
성공 상태
저장 후 다음 처리를 함께 수행한다.
- 고객의 마지막 방문일 갱신
- 고객 단계 재계산
- 연결된 시술 기록 미작성 내부 할 일 완료
- 두 번째 이상 시술이면 재방문 고객 판정에 반영
- 다음 예약 입력 시 예약 확인 건 생성
- 다음 예약이 생성되면 고객 단계를
다음 예약 잡힘으로 재계산
오류 상태
| 오류 | 처리 |
|---|---|
| 시술 종류 누락 | 해당 항목으로 이동하고 저장 중지 |
| 시술 메모 누락 | 해당 항목으로 이동하고 저장 중지 |
| 사진 업로드 실패 | 다시 시도하거나 사진을 제거한 후 저장 |
| 연결 예약 변경됨 | 최신 예약 정보를 다시 불러오도록 안내 |
| 권한 없음 | 저장하지 않고 고객 상세로 돌아감 |
| 중복 저장 요청 | 같은 연결 식별값으로 시술 기록을 중복 생성하지 않음 |
다음 화면
- 저장 성공 → 고객 상세
[customer-detail] - 다음 예약 생성 후 확인 → 오늘·내일 예약 확인
[today-tomorrow-reservations]
완료 조건
- 시술 종류와 시술 메모가 저장되었다.
- 염색약 번호와 배합을 입력할 수 있다.
- 작성자, 작성일, 수정일, 실제 담당 디자이너가 기록된다.
- 사진은 동의와 권한을 검사한 뒤에만 접근할 수 있다.
- 다음 예약을 입력한 경우 별도 예약 확인 건이 연결된다.
뜸해진 고객 [inactive-customers]
목적
마지막 시술 후 두 달이 지났고 미래 예약이 없는 고객을 확인하고 연락 일시, 연락 채널과 연락 결과를 기록한다.
진입 조건
- 주 메뉴에서 선택
- 오늘·내일 예약 확인의 뜸해진 고객 요약 선택
사용자가 보는 정보
- 고객 이름
- 휴대전화 번호
- 담당 디자이너
- 마지막 시술일
- 마지막 시술 종류
- 마지막 시술 후 지난 기간
- 마케팅 수신동의 상태
- 최근 연락 일시
- 최근 연락 채널
- 최근 연락 결과
- 향후 예약 유무
할 수 있는 행동
- 담당 디자이너별 필터
- 마지막 방문일 기준 정렬
- 마케팅 수신동의 상태 필터
- 고객 상세 열기
- 연락 기록 추가
- 새 예약 확인 건 등록
연락 기록 입력 항목:
- 연락 일시
- 연락 채널
- 연락 결과
- 기록한 직원
연락 채널은 온헤어의 기존 접점을 사용한다. 연락 결과는 정해진 선택값이 제공되지 않았으므로 첫 버전에서는 직접 입력하는 방식으로 둔다.
상태
| 상태 | 표시 내용 |
|---|---|
| 성공 | 조건에 맞는 고객과 최근 연락 기록 표시 |
| 빈 상태 | 현재 뜸해진 고객이 없습니다. |
| 동의 미확인 | 광고성 연락 전 확인 필요 안내 |
| 수신 거부 | 마케팅 연락 대상 선택 불가 |
| 새 예약 등록 | 목록에서 자동 제외 |
| 권한 오류 | 디자이너에게 자기 담당 고객만 표시 |
다음 화면
- 고객 선택 → 고객 상세
[customer-detail] - 새 예약 등록 → 오늘·내일 예약 확인
[today-tomorrow-reservations]
완료 조건
- 달력 기준 마지막 시술일로부터 2개월이 지났다.
- 앞으로 잡힌 예약 확인 건이 없다.
- 마케팅 수신동의 상태가 목록에 함께 표시된다.
- 고객별 연락 일시, 채널, 결과가 기록된다.
자료 가져오기·중복 합치기 [import-merge]
목적
엑셀·구글시트의 CSV 파일과 수첩 자료에서 고객 정보, 방문 이력, 시술 메모, 염색약 번호와 배합을 가져온다.
진입 조건
- 원장 설정에서 선택
- 원장님 역할로 로그인한 상태
사용자가 보는 정보
가져오기 단계:
- 파일 선택
- 원본 열과 CRM 항목 연결
- 전화번호·날짜·담당자 형식 확인
- 중복 고객 검토
- 시술 이력 연결 확인
- 가져오기 실행
- 결과 확인
열 연결 대상:
- 고객 이름
- 휴대전화 번호
- 담당 디자이너
- 방문일 또는 시술 일시
- 시술 종류
- 시술 메모
- 염색약 번호
- 배합
- 다음 예약 일시
- 개인정보 동의
- 마케팅 수신동의
할 수 있는 행동
- CSV 파일 업로드
- 원본 열과 CRM 항목 연결
- 날짜 형식 지정
- 담당자 이름 연결
- 오류 행 수정
- 오류 행만 다시 처리
- 같은 번호 고객 병합 검토
- 가져오기 실행
- 원본 오류 목록 내려받기
- 수첩 자료 직접 입력 시작
담당자 연결:
- 현재 직원 한 명과 일치: 연결 제안
- 동명이인: 원장님 선택
- 현재 직원 없음: 이전 담당자 텍스트로 보관
- 빈 값: 담당자 미지정
상태
| 상태 | 표시 내용 |
|---|---|
| 성공 | 생성·연결·검토 필요 건수를 요약 |
| 빈 파일 | 가져올 데이터가 없습니다. |
| 필수 열 미연결 | 누락된 열 표시 후 다음 단계 중지 |
| 번호 오류 | 원본 행 번호와 오류 이유 표시 |
| 날짜 오류 | 해당 값과 허용 형식 표시 |
| 담당자 미연결 | 이전 담당자 텍스트 보존 안내 |
| 중복 발견 | 중복 고객 병합 검토로 이동 |
| 재업로드 | 같은 가져오기 작업 식별값이면 중복 생성 방지 |
| 처리 중 오류 | 운영 데이터 반영을 취소하고 다시 시도 가능 상태 유지 |
가져오기 완료 요약
- 새 고객 생성 건수
- 기존 고객 연결 건수
- 병합 검토 완료 건수
- 전화번호 오류 건수
- 담당자 연결 확인 필요 건수
- 날짜 오류 건수
- 가져오지 못한 행 수
다음 화면
- 중복 검토 → 중복 고객 병합 검토
[customer-merge-review] - 완료 후 고객 확인 → 고객 목록
[customer-list] - 병합 결과 확인 → 고객 병합 이력
[customer-merge-history]
완료 조건
- 원본 파일을 임시 저장 영역에서 검증한 후 운영 데이터에 반영한다.
- 오류 행은 삭제하지 않고 원본 행 번호와 함께 보관한다.
- 같은 파일을 다시 처리해도 고객과 시술 기록이 중복 생성되지 않는다.
- 톡톡, 카카오톡, SNS, 전화의 대화 내용은 가져오지 않는다.
직원·권한 설정 [staff-permissions]
목적
직원을 현재 가게에 소속시키고 원장님 또는 디자이너 역할과 계정 활성 상태를 관리한다.
진입 조건
- 원장 설정에서 선택
- 원장님 역할로 로그인한 상태
사용자가 보는 정보
직원별 정보:
- 직원 이름
- 역할
- 로그인 수단
- 계정 활성 상태
- 담당 고객 수
- 담당 예약 확인 건 수
- 마지막 로그인
- 마지막 권한 변경일
- 계정 차단일
기록 영역:
- 고객 조회 기록
- 고객 수정 기록
- 자료 내보내기 기록
- 권한 변경 기록
할 수 있는 행동
- 직원 계정 등록
- 원장님 또는 디자이너 역할 지정
- 계정 활성화
- 계정 즉시 차단
- 직원 상세 기록 확인
- 조회·수정·내보내기 기록 확인
상태
| 상태 | 표시 내용 |
|---|---|
| 성공 | 변경한 권한과 변경 시각 표시 |
| 직원 없음 | 등록된 직원이 없습니다. |
| 중복 계정 | 기존 계정 확인 안내 |
| 자기 계정 차단 | 운영 중인 마지막 원장님 계정 차단 방지 |
| 권한 오류 | 원장님이 아닌 사용자의 접근 차단 |
| 직원 차단 | 이후 로그인과 서버 요청을 즉시 거부 |
담당 디자이너 퇴사 시 고객 인계 기능은 나중 범위다. 첫 버전에서는 계정 차단은 가능하지만 자동 고객 인계는 수행하지 않는다.
다음 화면
- 설정 완료 → 원장 설정
[owner-settings] - 직원 담당 고객 확인 → 고객 목록
[customer-list]
완료 조건
- 직원이 현재 가게에 연결된다.
- 역할과 계정 활성 상태가 서버 권한 검사에 반영된다.
- 권한 변경자와 변경 시각이 남는다.
- 차단된 계정은 즉시 접근할 수 없다.
원장 설정 [owner-settings]
목적
가게 정보, 직원·권한, 자료 가져오기, 중복 병합 이력과 알림톡 설정으로 이동하는 원장님 전용 화면이다.
진입 조건
- 주 메뉴에서 원장 설정 선택
- 오늘·내일 예약 확인에서 설정 선택
- 원장님 역할로 로그인한 상태
사용자가 보는 정보
설정 카드:
- 가게 정보
- 직원·권한 설정
- 자료 가져오기·중복 합치기
- 고객 병합 이력
- 알림톡 설정
가게 정보:
- 가게명
- 시간대: Asia/Seoul
- 계정 활성 직원 수
- 고객 수
- 알림톡 자동 발송 가능 여부
할 수 있는 행동
- 가게 정보 확인·수정
- 각 설정 화면으로 이동
- 최근 가져오기 결과 확인
- 최근 병합 작업 확인
- 알림톡 오류 확인
상태
| 상태 | 표시 내용 |
|---|---|
| 성공 | 각 설정의 현재 상태 요약 |
| 초기 상태 | 아직 설정되지 않은 항목 안내 |
| 알림톡 오류 | 설정 카드에 오류 원인 표시 |
| 권한 오류 | 디자이너의 화면 접근 차단 |
다음 화면
- 직원·권한 설정 →
[staff-permissions] - 자료 가져오기·중복 합치기 →
[import-merge] - 고객 병합 이력 →
[customer-merge-history] - 알림톡 설정 →
[notification-settings]
완료 조건
- 원장님만 접근할 수 있다.
- 현재 가게 범위의 설정만 표시된다.
- 각 설정의 오류나 미완료 상태를 첫 화면에서 확인할 수 있다.
중복 고객 병합 검토 [customer-merge-review]
목적
같은 휴대전화 번호의 고객을 비교하고 대표 고객과 충돌 정보 처리 방법을 확정한다.
진입 조건
- 자료 가져오기에서 중복 발견
- 고객 목록에서 중복 의심 고객 선택
- 고객 상세에서 중복 고객 찾기
- 예약 등록 중 같은 번호 고객 여러 명 발견
사용자가 보는 정보
고객 비교:
| 비교 항목 | 고객 A | 고객 B |
|---|---|---|
| 이름 | 현재 값 | 현재 값 |
| 휴대전화 번호 | 원본·정규화 번호 | 원본·정규화 번호 |
| 최근 방문일 | 최근 일자 | 최근 일자 |
| 시술 기록 수 | 건수 | 건수 |
| 담당 디자이너 | 현재 담당자 | 현재 담당자 |
| 미래 예약 | 예약 요약 | 예약 요약 |
| 개인정보 동의 | 상태·일시·경로 | 상태·일시·경로 |
| 마케팅 수신동의 | 상태·일시·경로 | 상태·일시·경로 |
검토 영역:
- 대표 고객 선택
- 대표 이름 선택
- 선택하지 않은 이름의 이전 이름·별칭 보관
- 대표 담당 디자이너 선택
- 개인정보 동의 충돌 확인
- 마케팅 수신동의 충돌 확인
- 미래 예약별 연결 처리
- 발송 예정 알림톡 재검증
- 이동할 시술 기록과 예약 확인 건
- 병합 사유
할 수 있는 행동
- 대표 고객 선택
- 충돌 항목별 값 선택
- 시술 이력 미리보기
- 미래 예약 확인
- 발송 예정 알림톡 유지 또는 중지 검토
- 병합 실행
- 검토 보류
병합 기본 원칙
- 마케팅 수신동의 한쪽이 수신 거부면 수신 거부를 기본 제안한다.
- 병합으로 새로운 동의를 만들거나 기존 수신 거부를 동의로 확대하지 않는다.
- 과거 시술 기록의 담당 디자이너, 작성자, 작성일을 바꾸지 않는다.
- 이미 발송 성공한 알림톡은 재발송하지 않는다.
- 통합 대상 고객을 삭제하지 않고
병합됨상태로 보관한다.
상태
| 상태 | 표시 내용 |
|---|---|
| 병합 가능 | 모든 필수 충돌 항목을 확인함 |
| 검토 필요 | 이름, 동의, 담당자 또는 미래 예약 충돌 표시 |
| 번호 불일치 | 자동 병합 중지, 원장님 사유 입력 필요 |
| 동시 수정 | 최신 고객 정보를 다시 불러오도록 안내 |
| 처리 오류 | 전체 병합 작업을 되돌리고 변경 전 상태 유지 |
| 성공 | 대표 고객과 이동된 기록 수 표시 |
다음 화면
- 병합 성공 → 고객 상세
[customer-detail] - 작업 기록 확인 → 고객 병합 이력
[customer-merge-history] - 검토 보류 → 자료 가져오기·중복 합치기
[import-merge]
완료 조건
- 대표 고객이 지정되었다.
- 이름, 담당 디자이너, 동의 상태, 미래 예약 충돌을 모두 검토했다.
- 병합 사유와 실행자가 기록되었다.
- 고객 상태 변경, 기록 재연결, 병합 이력 생성이 하나의 작업으로 완료되었다.
- 일부 기록만 이동한 상태가 발생하지 않는다.
고객 병합 이력 [customer-merge-history]
목적
병합 실행자, 시각, 사유, 충돌 선택값과 이동한 기록을 확인하고 원장님이 필요한 병합을 취소한다.
진입 조건
- 원장 설정에서 선택
- 중복 고객 병합 완료 화면
- 고객 상세의 병합 이력 선택
사용자가 보는 정보
- 병합 이력 식별값
- 대표 고객
- 통합 대상 고객
- 실행자
- 실행 시각
- 병합 사유
- 이름·담당자·동의 상태 선택 결과
- 이동한 시술 기록
- 이동한 예약 확인 건
- 발송 예정 알림톡 처리 결과
- 병합 취소 여부
- 병합 취소 실행자·시각·사유
할 수 있는 행동
- 병합 작업 검색
- 대표 고객 상세 열기
- 통합 대상 고객 원본 보기
- 이동 기록 확인
- 병합 취소 실행
- 병합 취소 사유 입력
병합 취소 처리
- 통합 대상 고객을 활성 상태로 되돌린다.
- 해당 병합으로 이동한 시술 기록과 예약 확인 건을 원래 고객에게 되돌린다.
- 병합 이후 새로 생성된 기록은 자동 분리하지 않는다.
- 자동 분리할 수 없는 기록은
검토 필요로 표시한다.
상태
| 상태 | 표시 내용 |
|---|---|
| 성공 | 병합 작업 목록과 상세 기록 표시 |
| 빈 상태 | 아직 고객 병합 이력이 없습니다. |
| 취소 가능 | 병합 이후 기록 상태를 검사하고 취소 버튼 표시 |
| 추가 기록 존재 | 자동 분리되지 않을 기록을 미리 안내 |
| 동시 처리 | 병합 또는 취소 완료 후 다시 시도하도록 안내 |
| 취소 성공 | 되돌린 기록과 검토 필요 기록 수 표시 |
| 권한 오류 | 원장님 외 접근 차단 |
다음 화면
- 대표 고객 선택 → 고객 상세
[customer-detail] - 통합 대상 고객 선택 → 고객 상세
[customer-detail] - 병합 취소 후 검토 → 중복 고객 병합 검토
[customer-merge-review]
완료 조건
- 병합으로 이동한 기록과 병합 후 생성된 기록을 구분한다.
- 취소 실행자, 시각과 사유가 남는다.
- 병합 취소 중 오류가 발생하면 전체 취소 작업을 되돌린다.
알림톡 설정 [notification-settings]
목적
카카오 알림톡 발신 프로필, 예약 확인·당일 안내 템플릿과 자동 발송 가능 상태를 관리한다.
진입 조건
- 원장 설정에서 선택
- 오늘·내일 예약 확인의 발송 오류 안내 선택
- 원장님 역할로 로그인한 상태
사용자가 보는 정보
- 발신 프로필 연결 상태
- API 연결 상태
- 예약 확인 알림톡 템플릿 상태
- 당일 예약 안내 알림톡 템플릿 상태
- 발송 결과 수신 상태
- 최근 연결 확인 시각
- 최근 발송 오류
- 자동 발송 가능 여부
- 발송 시각 규칙
발송 시각:
- 내일 예약 확인: 전날 오후 6시
- 당일 예약 안내: 방문 3시간 전
- 시간대: Asia/Seoul
할 수 있는 행동
- 발신 프로필 연결 정보 등록
- 사용할 알림톡 템플릿 선택
- API 연결 확인
- 발송 결과 수신 상태 확인
- 자동 발송 활성 상태 확인
- 오류 예약 목록 열기
예시 템플릿 내용
예약 확인 알림톡:
#{고객명} 고객님, 내일 #{방문시각} 온헤어 #{담당디자이너} 디자이너 시술이 예정되어 있습니다. 예정 시술은 #{예정시술}입니다. 변경이나 취소가 필요하시면 온헤어로 연락해 주세요.
당일 예약 안내 알림톡:
#{고객명} 고객님, 오늘 #{방문시각} 온헤어 예약이 예정되어 있습니다. 담당 디자이너는 #{담당디자이너}, 예정 시술은 #{예정시술}입니다. 변경이나 취소가 필요하시면 온헤어로 연락해 주세요.
상태
| 상태 | 표시 내용 |
|---|---|
| 정상 | 알림톡 자동 발송이 가능합니다. |
| 발신 프로필 미연결 | 자동 발송 중지와 연결 필요 안내 |
| 템플릿 사용 불가 | 해당 종류 자동 발송 중지 |
| API 오류 | 최근 오류와 확인 시각 표시 |
| 결과 수신 오류 | 처리 중 상태가 오래 유지되는 건 표시 |
| 발송 실패 | 수동 연락 대상 목록으로 연결 |
| 권한 오류 | 원장님 외 접근 차단 |
다음 화면
- 오류 예약 확인 → 오늘·내일 예약 확인
[today-tomorrow-reservations] - 설정 완료 → 원장 설정
[owner-settings]
완료 조건
- 발신 프로필, 템플릿, API 연결 상태를 각각 확인할 수 있다.
- 하나라도 유효하지 않으면 자동 발송을 중지하고 원인을 표시한다.
- 알림톡 요청 식별값과 결과 식별값을 저장한다.
- 같은 결과가 여러 번 도착해도 최종 상태가 잘못 바뀌지 않는다.
6. 고객 단계 자동 분류
고객 단계는 저장된 표시값만 믿지 않고 시술 기록, 미래 예약과 방문 횟수로 다시 계산할 수 있어야 한다.
| 단계 | 판정 기준 |
|---|---|
| 문의 중 | 휴대전화 번호를 확인했지만 예약 확인 건과 완료 시술 기록이 없음 |
| 방문 예약됨 | 첫 방문 전 미래 예약 확인 건이 있음 |
| 시술 완료 | 첫 시술 기록이 저장됐고 미래 예약이 없음 |
| 다음 예약 잡힘 | 완료 시술 이후 미래 예약 확인 건이 있음 |
| 재방문 고객 | 두 번째 이상 시술 기록이 있고 미래 예약이 없으며 뜸해짐 기준 전 |
| 뜸해짐 | 마지막 시술 후 달력 기준 2개월이 지났고 미래 예약이 없음 |
재계산이 필요한 순간:
- 고객 병합
- 병합 취소
- 예약 확인 건 등록 또는 수정
- 방문 결과 변경
- 시술 기록 저장 또는 수정
- 다음 예약 생성 또는 취소
7. 자동화 규칙과 예외
예약 확인 알림톡
발송 조건:
- 내일 방문할 예약 확인 건
- 방문 결과가 고객 취소 또는 매장 취소가 아님
- 예약 연락처 스냅샷이 정상
- 발신 프로필과 템플릿이 사용 가능
- 같은 예약 확인 건의 예약 확인 알림톡이 아직 성공하지 않음
발송 시각:
- 방문 전날 오후 6시
당일 예약 안내 알림톡
발송 조건:
- 방문 시간이 지나지 않음
- 방문 결과가 고객 취소 또는 매장 취소가 아님
- 예약 연락처 스냅샷이 정상
- 같은 예약 확인 건의 당일 안내가 아직 성공하지 않음
발송 시각:
- 방문 3시간 전
변경 시 처리
예약 시간, 고객 연결, 연락처, 병합 상태가 바뀌면 발송 예정 작업을 다시 계산한다.
- 이미 성공한 안내는 자동 재발송하지 않는다.
- 번호 충돌이나 병합 검토가 끝나지 않았으면 자동 발송을 중지한다.
- 발송 실패 시 전화, 카카오톡 채널 등 수동 연락 결과를 남길 수 있다.
시술 기록 미작성 내부 할 일
생성 조건:
- 방문 결과가 시술 완료
- 연결된 시술 기록이 없음
완료 조건:
- 해당 예약 확인 건에 시술 기록이 연결됨
같은 예약 확인 건에는 내부 할 일을 한 번만 생성한다.
8. 공통 데이터 완료 기준
고객
- 이름
- 휴대전화 번호 원본값
- 정규화 번호
- 담당 디자이너
- 현재 관리 단계
- 개인정보 동의 상태·일시·경로
- 마케팅 수신동의 상태·일시·경로
- 마지막 방문일
- 고객 상태
시술 기록
- 고객
- 시술 일시
- 실제 담당 디자이너
- 시술 종류
- 시술 메모
- 염색약 번호
- 배합
- 선택 사진
- 선택 다음 예약
- 작성자·작성일·수정일
- 연결 예약 확인 건
- 원래 고객 식별값
- 병합 이력 식별값
예약 확인 건
- 고객
- 방문 예정 일시
- 담당 디자이너
- 예정 시술 종류
- 예약·방문 접점
- 고객 확인 상태
- 예약 당시 고객명
- 예약 연락처 스냅샷
- 예약 확인 알림톡 상태
- 당일 안내 알림톡 상태
- 방문 결과
- 연결 시술 기록
- 수동 연락 일시·채널·결과
고객 확인 상태의 구체적인 선택값은 제공되지 않았으므로 확인 필요다.
9. 화면별 기능 연결
| 화면 | 주요 연결 기능 |
|---|---|
[login] | MF07 |
[today-tomorrow-reservations] | F14, F15, F37, F38, F39, F40, F42, MF05 |
[customer-list] | F10, F26, F34, F36 |
[customer-detail] | F10, F11, F18, F26, F36 |
[treatment-record] | F11, F38, F41, F42 |
[inactive-customers] | F32, F43 |
[import-merge] | F35, MF03 |
[staff-permissions] | F34, MF07 |
[owner-settings] | F34, F35, MF04, MF07 |
[customer-merge-review] | MF01 |
[customer-merge-history] | MF02 |
[notification-settings] | F14, F15, F40, MF04, MF05 |
10. 구현 전 확인 필요
-
대체 시술 열람 방식
자기 담당 고객만 상세 열람하는 권한과 담당자 휴무 시 대체 열람 요구를 함께 만족시킬 방식을 정해야 한다. -
로그인 수단
직원이 사용할 구체적인 로그인 수단이 정해지지 않았다. -
고객 확인 상태 선택값
예약 확인 건에 기록할 고객 확인 상태의 구체적인 값이 정해지지 않았다. -
전날 오후 6시 이후 등록된 다음 날 예약
정규 발송 시각이 지난 뒤 등록된 예약 확인 알림톡을 즉시 보낼지, 수동 연락 대상으로 표시할지 정해야 한다. -
알림톡 연결 조건
카카오 알림톡 발신 프로필과 API 사용 조건을 갖출 수 있는지 확인해야 한다. 연결할 수 없으면 같은 화면에서 발송 대상과 수동 연락 결과를 관리한다. -
브랜드 시각 요소
로고와 색상 기준이 제공되지 않았다. 확정 전에는온헤어서비스명을 텍스트로 표시하고 중립적인 화면 색상을 사용한다.