diff --git a/CLAUDE.md b/CLAUDE.md index b31b3c4..ab4fdb7 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,2878 +1,239 @@ -# CLAUDE.md — TaxBaik 운영 메모 +# CLAUDE.md — TaxBaik 운영 메모 (핵심) -## 우선 기준 +## 📌 이 파일의 역할 -1. [docs/INDEX.md](./docs/INDEX.md) -2. [docs/ENGINEERING_HARNESS.md](./docs/ENGINEERING_HARNESS.md) -3. [docs/DOUZONE_UX_GUIDE.md](./docs/DOUZONE_UX_GUIDE.md) -4. [docs/COMMON_CODE_POLICY.md](./docs/COMMON_CODE_POLICY.md) -5. [docs/COMBO_POLICY.md](./docs/COMBO_POLICY.md) +**전체 구조 & 진행 상황만 기록** -이 파일은 실행 절차, 서버 메모, 과거 이력만 둔다. 아키텍처/UX/콤보 기준은 위 문서를 따른다. - -## 🎯 **개발 핵심 지침 (Development Standards 2026-07)** - -### 입력 검증 패턴 (Validation Pattern) - -**원칙: 클라이언트 + 서버 이중 검증** - -#### 1. 클라이언트 (프론트엔드) -- ✅ 실시간 마스킹 (사용자 입력하면서 자동 포맷팅) -- ✅ 실시간 피드백 (에러 메시지 즉시 표시) -- ✅ 유효성 검사 후 제출 차단 -- ✅ 문자 카운터 (예: "현재: 50/5000") - -**예시: 전화번호** -```javascript -// 입력: 01012345678 → 표시: 010-1234-5678 -// 정규식: ^(0(2|3[1-3]|4[1-4]|...|70|50[5-9])\d{7,8}|0\d{9,10})$ -``` - -#### 2. 서버 (백엔드) -- ✅ DTO 어노테이션 (DataAnnotations) -- ✅ 서비스 로직 검증 (명확한 에러 메시지) -- ✅ 데이터베이스 제약 조건 - -**패턴: InquiryService.cs** -```csharp -// 1. DTO 레벨 -public class SubmitInquiryDto -{ - [Required] - [StringLength(100)] - public string Name { get; set; } - - [Required] - [RegularExpression(@"^(0(2|3[1-3]|...")] - public string Phone { get; set; } - - [StringLength(5000, MinimumLength = 10)] - public string Message { get; set; } -} - -// 2. 서비스 로직 -public async Task SubmitAsync(...) -{ - if (string.IsNullOrWhiteSpace(message)) - throw new ValidationException("문의 내용을 입력하세요."); - - var trimmedMessage = message.Trim(); - if (trimmedMessage.Length < 10) - throw new ValidationException("문의 내용은 최소 10자 이상이어야 합니다."); -} -``` - -### 한국 전화번호 처리 표준 - -**지원 형식:** -- 고정전화: `02-123-4567`, `031-1234-5678` -- 휴대폰: `010-1234-5678`, `011-1234-5678` -- VoIP: `070-1234-5678`, `0505-1234-5678` - -**포맷팅 규칙:** -- 2-3자리 국번 + 3-4자리 국번 뒤 + 4자리 번호 -- 고정전화(10자): `XXXX-XXX-XXXX` (4-3-3) -- 휴대폰(11자): `XXX-XXXX-XXXX` (3-4-4) - -**정규식:** -```csharp -private static readonly Regex PhoneRegex = new( - @"^(0(?:2|3[1-3]|4[1-4]|5[1-5]|6[1-4]|70|50[5-9]|[7-9](?:\d{1,2})?)\d{7,8}|0\d{9,10})$"); -``` - -### 메시지 내용 길이 제한 표준 - -**규칙:** -- 최소: 10자 (너무 짧은 내용 방지) -- 최대: 5000자 (DB 및 성능) - -**적용:** -- 프론트엔드: `