Use Cases (업데이트: 2026. 8. 7.)

Claude Code로 뷰티·웰니스 초진 폼을 사전 점검하기: 동의와 금기 누락 막기

뷰티·웰니스 매장의 초진 폼에서 동의, 금기, CSV 내보내기, 직원 확인 경계를 점검합니다.

Claude Code로 뷰티·웰니스 초진 폼을 사전 점검하기: 동의와 금기 누락 막기

첫 방문 폼에는 “피부가 민감함”, “임신 중”, “복용 약 있음”이라고 적혀 있었는데, CSV로 내보내면 그 내용이 일반 비고 칸에 묻혀 직원이 놓칩니다. 예약은 확정됐고 고객은 이미 도착했는데, 그때서야 서비스 중단, 메뉴 변경, 취소 조건 설명, 재예약이 필요해집니다. 뷰티 살롱, 웰니스 스튜디오, 릴랙스 케어, 퍼스널 트레이닝 체험에서는 큰 랜딩 페이지보다 이 작은 입력 사고를 먼저 막아야 합니다.

폼을 길게 만든다고 해결되지는 않습니다. 질문이 많으면 이탈이 늘고, 수집한 정보를 누가 확인하는지도 흐려집니다. 필요한 일은 AI가 읽기 전에 예약 필드, 동의 필드, 금기 카테고리, 직원 전용 세부 정보를 나누는 것입니다. 여기서 금기는 건강 상태, 복용 약, 임신, 피부 상태, 나이처럼 서비스를 멈추거나 바꾸는 판단에 영향을 주는 조건을 뜻합니다.

이 글은 Claude Code로 뷰티·웰니스 초진 폼을 로컬에서 preflight하는 흐름입니다. 제목의 약속은 실시간 연동이 아니라 제출 전 점검과 로컬 계약 확인입니다. 폼 서비스, 예약 시스템, 고객 DB, 메일 발송에는 연결하지 않습니다. 확인한 공식 출처는 Claude Code 권한 설정, 설정과 샌드박스, 일본 개인정보보호위원회의 개인정보 자료, 일본 후생노동성 미용 영업 위생관리 자료, 일본 소비자청의 미용의료 주의 페이지입니다. 이 글은 개별 법률, 의료, 운영 판단이 아닙니다.

핵심 요점

  • 초진 폼은 예약에 필요한 필드, 직원이 확인할 필드, AI 작업 CSV에 넣지 않을 필드로 나눕니다.
  • Claude Code에는 가상 데이터나 익명화된 CSV만 읽히고, 동의, 금기, 확인 담당, 발송 전 문구 누락을 찾게 합니다.
  • 사람이 판단할 범위는 서비스 가능 여부, 건강 상태, 동의 문구, 개인정보, 미성년자 동의, 환불과 취소 조건입니다.
  • 세 가지 Use case는 폼 항목 점검, CSV 열 검사, 직원 확인 메일 초안입니다.
  • 주 CTA는 초보자가 직접 패턴을 늘리기 위한 제품 템플릿 하나로 제한합니다.

업무 흐름: AI에 넘기기 전에 폼을 나누기

먼저 폴더와 표를 나눕니다. intake-raw/ 는 원본입니다. 이름, 전화, 이메일, 피부나 몸 상태 자유 입력, 복용 약, 임신, 미성년자 동의, 사진 사용 여부, 결제 관련 맥락을 둡니다. intake-ai-work/ 는 AI 작업 사본입니다. 가상 ID, 희망 메뉴, 방문 목적, 동의 여부, 금기 카테고리, 직원 확인 필요 여부만 둡니다. intake-approved/ 는 직원이 확인한 체크리스트와 답장 문구입니다.

자료AI 작업 사본직원만 보는 내용
예약 폼희망 메뉴, 방문 목적, 초진/재방문이름, 전화, 이메일, 주소
사전 상담금기 카테고리, 주의 카테고리진단명, 약명, 상세 건강 상태
동의문동의 여부, 날짜, 필수/선택최종 법무·운영 문구
CSV 내보내기열 이름, 빈칸, 직원 확인 플래그식별 정보와 원문 자유 입력
직원 체크검토자, 멈출 조건, 시점서비스 가능 여부, 메뉴 변경, 환불 판단
flowchart TD
  A[intake-raw 원본] --> B[열 분류]
  B --> C[AI용 CSV로 익명화]
  C --> D[Node.js preflight]
  D --> E[Claude Code 누락 확인]
  E --> F[직원 리뷰]
  F --> G[intake-approved 체크리스트]

중요한 습관은 Claude Code에 “전부 읽고 판단해줘”라고 하지 않는 것입니다. 먼저 열을 줄입니다. 자유 입력에는 이름, 건강 세부 정보, 가족 관계가 들어가기 쉬우므로 AI 파일에는 sensitive_note_present: true 같은 플래그만 둡니다. 판단이 필요하면 직원이 원본을 별도로 열어봅니다.

Claude Code가 맡을 범위와 사람이 판단할 범위

Claude Code가 맡을 범위는 폼 항목 누락, 위험한 CSV 열 이름, 동의 체크 누락, 직원 확인 플래그 누락, 직원 또는 고객에게 보낼 초안 문구입니다. “첫 체험 폼에 사진 사용과 취소 동의가 있는가”, “금기 카테고리가 있는 행에 staff_review가 있는가” 같은 확인에 적합합니다.

사람이 판단할 범위는 서비스 진행 여부, 메뉴 변경, 건강이나 약 정보 처리, 미성년자 동의, 환불, 취소, 광고와 효과 표현, 개인정보 처리입니다. Claude Code가 “뚜렷한 문제 없음”이라고 써도 서비스 가능 판단은 아닙니다. 뷰티·웰니스에서는 안심시키는 표현이 쉽게 단정으로 바뀌므로 마지막 승인은 사람이 남깁니다.

Claude Code 공식 권한 문서는 deny, ask, allow 순서로 규칙이 평가된다고 설명합니다. 설정 문서는 샌드박스가 Bash 명령과 자식 프로세스의 파일 시스템 및 네트워크 경계를 만든다고 설명합니다. 초진 원본은 Read(/intake-raw/**) 를 거부하고 intake-ai-work/ 만 허용합니다. 이것은 안전 증명이 아니라 실수의 입구를 좁히는 장치입니다.

함께 읽을 내부 글로 Claude Code 권한 가이드뷰티 살롱 메뉴 설명 흐름가 가깝습니다. 폼과 메뉴는 실패 지점이 다르므로 따로 점검해야 합니다.

세 가지 Use case

Use case 1: 초진 폼 항목을 점검하기

입력: 폼 필드 목록, 필수/선택, 희망 메뉴, 동의문, 사진 사용, 취소 조건, 직원 확인이 필요한 질문.

출력: 예약 필드, 직원 확인 필드, AI에서 제외할 필드, 초진 고객용 짧은 설명, 제출 후 안내문.

사람의 확인: 서비스 가능 여부, 금기 처리, 미성년자 동의, 사진 사용, 취소·환불 조건, 동의문 최종 표현.

항목 점검은 먼저 삭제할 항목을 정하는 것부터 시작합니다. 첫 체험의 목적이 시간 예약이라면 깊은 건강 문진은 예약 후 확인으로 넘길 수 있습니다. 반대로 서비스 전 반드시 봐야 하는 조건은 고객 도착 전에 직원 확인 플래그로 나와야 합니다.

Use case 2: CSV 열에 위험 항목이 섞였는지 보기

입력: 익명화한 CSV 열 이름, 샘플 행, 필수 열, 직원 확인 플래그, 발송 전 규칙.

출력: AI에 넘길 수 있는 열, 멈출 열, 빈칸 경고, staff_review 가 필요한 행, 직원이 원본에서 볼 필드.

사람의 확인: 이름, 전화, 이메일, 주소, 자유 입력 원문, 약, 진단, 임신, 미성년자, 본인 동의, 사진 사용.

CSV 내보내기는 폼 화면보다 문제가 잘 숨습니다. 관리 화면에는 “비고”로 보였던 값이 CSV에서는 note 하나로 합쳐질 수 있습니다. Claude Code가 읽기 전에 로컬 검사가 위험한 열 이름과 단순 위험값을 막아야 합니다.

Use case 3: 직원 확인 메일 초안 만들기

입력: 가상 ID, 희망 메뉴, 확인 카테고리, 예약 시간대, 담당 직원, 답변 기한, 매장의 일반 연락 수단.

출력: 직원 확인 메일, 고객에게 보낼 방문 전 확인문, 확인 체크란, 보내면 안 되는 정보 목록.

사람의 확인: 수신자, 고객 실제 이름, 실제 건강 정보, 서비스 판단, 취소 조건, 환불 안내, 책임자 승인.

메일 초안에서는 AI가 실제 개인정보를 채우게 하지 않습니다. “고객 A”나 “예약 B-001” 같은 가상 ID로 문구를 만들고, 발송 전 직원이 원본을 확인합니다. 부드러운 문구는 도움이 되지만 판단 책임은 매장에 남습니다.

복사해 쓸 수 있는 프롬프트

다음 프롬프트는 intake-ai-work/intake-redacted.csv 만 읽는 전제입니다. 원본 폼, 고객 기록, 차트, 사진, 결제 데이터는 넣지 않습니다.

Act as a beauty and wellness first-visit intake form reviewer.
Read only ./intake-ai-work/intake-redacted.csv and output in this order:

1. Columns that may be used by AI and columns that must be stopped
2. Missing consent, photo permission, and cancellation fields
3. Whether rows with contraindication categories have staff_review
4. Fields staff must check in the original record
5. Draft pre-visit confirmation message to the guest
6. Pre-publication checklist

Constraints:
- Do not decide service eligibility, medical issues, or refunds
- Do not infer name, phone, email, address, diagnosis, medication, pregnancy week, or raw free-text notes
- Do not touch intake-raw, customer databases, booking systems, email sending, or external networks
- If you detect personal-data-like values, stop and report only the field name
- End with: "Not sendable before staff review"

실행 가능한 확인 코드

이 헬퍼를 도입한다면 저장 경로는 tools/check-beauty-intake-preflight.mjs 입니다. 이 글은 저장소에 그 파일을 만들지 않습니다. 아래가 전체 내용이며, 테스트는 가상의 로컬 fixture만 사용합니다.

const files = [
  {
    path: "intake-ai-work/intake-redacted.csv",
    text: "intake_id,menu,consent,contraindication_category,staff_review\nB-001,trial_facial,true,sensitive_skin,true"
  },
  {
    path: "intake-ai-work/bad.csv",
    text: "name,email,medication_note\nAiko,[email protected],blood pressure medicine"
  }
];

const blockedFields = [
  "name",
  "email",
  "phone",
  "address",
  "birthdate",
  "medication",
  "diagnosis",
  "pregnancy_week",
  "free_note"
];

const valuePatterns = [
  /[\w.+-]+@[\w.-]+\.[A-Za-z]{2,}/,
  /\b\d{2,4}-\d{2,4}-\d{3,4}\b/,
  /\b(?:medicine|diagnosis|pregnant|allergy)\b/i
];

const findings = [];

for (const file of files) {
  const lowerText = file.text.toLowerCase();
  for (const field of blockedFields) {
    if (lowerText.includes(field)) {
      findings.push({ path: file.path, type: "blocked field", field });
    }
  }
  for (const pattern of valuePatterns) {
    if (pattern.test(file.text)) {
      findings.push({ path: file.path, type: "blocked value", pattern: String(pattern) });
    }
  }
}

console.table(findings);
if (findings.length > 0) {
  process.exitCode = 1;
}

이 코드는 고정된 로컬 fixture에서 위험한 필드명과 단순 값을 감지할 수 있음을 보일 뿐입니다. PDF, 이미지, 손글씨, 여러 열 조합에 의한 재식별, 실제 폼 연동, 예약 시스템 동작은 증명하지 않습니다.

{
  "permissions": {
    "deny": [
      "Read(/intake-raw/**)",
      "Edit(/intake-raw/**)",
      "Read(/customer-records/**)",
      "Edit(/customer-records/**)",
      "Bash(git push *)"
    ],
    "allow": [
      "Read(/intake-ai-work/**)",
      "Edit(/intake-ai-work/**)",
      "Bash(node tools/check-beauty-intake-preflight.mjs *)"
    ]
  },
  "sandbox": {
    "enabled": true,
    "failIfUnavailable": true,
    "allowUnsandboxedCommands": false,
    "filesystem": {
      "denyRead": ["./intake-raw", "./customer-records"],
      "denyWrite": ["./intake-raw", "./customer-records"]
    }
  }
}

Pitfall: 흔한 원인과 수정 방법

첫 번째 원인은 동의를 맨 끝의 작은 체크박스로 두는 것입니다. 고객은 무엇에 동의했는지 모르고, 직원도 문구가 언제 바뀌었는지 추적하기 어렵습니다. 사진 사용, 취소, 건강 확인, 연락 방법을 나누고 동의문 버전이나 업데이트 날짜를 내보내도록 고칩니다.

두 번째 원인은 금기를 자유 입력으로만 받는 것입니다. 자유 입력은 유연해 보이지만 검색하기 어렵고 AI에 넘기기 위험합니다. 카테고리 필드와 staff_review 플래그를 만들고 상세 내용은 원본에 남깁니다.

세 번째 원인은 Read 거부만으로 충분하다고 생각하는 것입니다. Bash, 자식 프로세스, 로컬 헬퍼가 원본을 읽는 다른 경로가 될 수 있습니다. Claude Code deny, sandbox의 denyReaddenyWrite, 폴더 운영, 가상 데이터 거부 테스트를 겹쳐야 합니다.

네 번째 원인은 실제 예약 CSV로 검사 코드를 시험하는 것입니다. 터미널 기록과 로그에 값이 남습니다. 허용 샘플과 거부 샘플 모두 가상 ID로 만들고, 운영 로그에는 감지된 개인정보 값을 다시 출력하지 않습니다.

작은 ROI 측정

처음 2주는 첫 체험 폼만 측정합니다. 변경 전에는 예약 후 확인 전화 수, 당일 메뉴 변경 수, 동의 설명에서 멈춘 건수, 직원이 원본을 다시 연 건수를 기록합니다. 변경 후에도 같은 숫자를 기록하고 preflight가 멈춘 CSV 행 수를 추가합니다.

계산은 건수 × (확인 시간 + 당일 재작업 시간)preflight 중단 건수 를 나란히 놓으면 충분합니다. 예약이 늘어도 당일 변경이 같이 늘었다면 기대치를 맞추지 못한 것입니다. 방문 전 확인이 늘어도 당일 중지가 줄었다면 의미가 있을 수 있습니다. 결과를 만들지 말고 같은 기간 같은 항목을 봅니다.

자주 묻는 질문

Q. 건강이나 복용 약 질문을 모두 지우면 안전한가요?

아닙니다. 서비스 전에 필요한 확인까지 지우면 현장 위험이 커집니다. AI가 보는 열은 줄이고 직원이 원본을 확인할 필드는 남기는 것이 목표입니다.

Q. Claude Code 권한 설정만으로 개인정보 대책이 되나요?

그것만으로 충분하다고 보지 않습니다. 권한은 tool 경계입니다. sandbox, 폴더 분리, 값을 남기지 않는 로그, 직원 확인을 함께 씁니다.

Q. 미용의료에 가까운 표현도 Claude Code로 고칠 수 있나요?

경고와 리뷰 메모는 만들 수 있습니다. 다만 의료광고나 법무 판단은 이 글의 범위 밖입니다. 효과 단정은 사람이 공식 정보와 매장 규칙으로 확인합니다.

Q. 어떤 폼부터 시작해야 하나요?

첫 체험, 사진 사용, 취소 조건, 건강 확인이 한 화면에 섞인 폼부터 시작합니다. 트래픽이 가장 큰 폼보다 당일 확인이 많은 폼이 먼저입니다.

제품 템플릿

이 preflight는 작은 초보자 연습으로 시작할 수 있습니다. 가상 CSV를 만들고, 위험한 열에서 멈추는지, staff_review 누락이 보이는지, 직원 확인 전 발송 불가 문구가 나오는지 확인합니다.

같은 패턴을 메뉴 설명, FAQ, 답장 초안, 공개 전 체크에 넓히고 싶다면 제품 템플릿을 한 가지 다음 단계로 잡으세요. 관련 뷰티 살롱 메뉴 흐름은 가격과 시간 설명을, 권한 가이드는 접근 제어 기초를 다룹니다.

실제로 테스트한 결과

이 글에서는 /images/hero/hero-024.webpsite/public/images/hero/hero-024.webp 에 존재함을 확인했습니다. Claude Code 권한 페이지, 설정과 sandbox 페이지, 일본 PPC 개인정보 페이지, 후생노동성 위생관리 자료, 소비자청 미용의료 주의 페이지도 확인했습니다.

JavaScript 블록은 가상의 intake-ai-work/intake-redacted.csvintake-ai-work/bad.csv 를 메모리 배열로 표현합니다. 필드명과 단순 값에 대한 로컬 fixture 경계를 보여줄 뿐입니다. 폼 서비스, 예약 시스템, 고객 DB, 메일 발송, 실제 고객 데이터 runtime test는 실행하지 않았습니다. 공개 전 검사는 이 slug, frontmatter, 내부 링크, 외부 링크, CTA, 코드 fence, 10개 언어 파일, Qiita 글을 대상으로 합니다.

#claude-code #뷰티 #웰니스 #폼 #초진
무료

무료 PDF: Claude Code 치트시트

이메일을 입력하면 명령, 리뷰 습관, 안전한 워크플로를 정리한 PDF를 받을 수 있습니다.

개인정보를 안전하게 관리하며 스팸을 보내지 않습니다.

Masa

작성자 소개

Masa

Claude Code 실무 워크플로와 팀 도입을 검증하는 엔지니어입니다.