feat: add DataAnnotations to Inquiry DTOs
TaxBaik CI/CD / build-and-deploy (push) Failing after 56s

- Add [Required], [StringLength], [RegularExpression] to all fields
- Name: Required, max 100 characters
- Phone: Required, Korean phone number regex validation
- Email: Optional, email format validation
- ServiceType: Optional, max 50 characters
- Message: Required, 10-5000 characters
- Status (UpdateInquiryDto): Required
- AdminMemo: Optional, max 1000 characters

Provides automatic validation at DTO layer via DataAnnotations.
All error messages are user-friendly in Korean.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-07-04 02:50:37 +09:00
parent 48e2dfaf38
commit b7baff18dc
2 changed files with 37 additions and 0 deletions
@@ -1,11 +1,28 @@
namespace TaxBaik.Application.DTOs;
using System.ComponentModel.DataAnnotations;
public class SubmitInquiryDto
{
[Required(ErrorMessage = "이름을 입력하세요.")]
[StringLength(100, ErrorMessage = "이름은 최대 100자까지 입력 가능합니다.")]
public string Name { get; set; } = string.Empty;
[Required(ErrorMessage = "전화번호를 입력하세요.")]
[RegularExpression(
@"^(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})$",
ErrorMessage = " .")]
public string Phone { get; set; } = string.Empty;
[EmailAddress(ErrorMessage = "올바른 이메일 형식이 아닙니다.")]
public string? Email { get; set; }
[StringLength(50, ErrorMessage = "상담분야는 최대 50자까지 입력 가능합니다.")]
public string ServiceType { get; set; } = string.Empty;
[Required(ErrorMessage = "문의 내용을 입력하세요.")]
[StringLength(5000, MinimumLength = 10, ErrorMessage = "문의 내용은 최소 10자, 최대 5000자까지 입력 가능합니다.")]
public string Message { get; set; } = string.Empty;
public bool SuppressNotification { get; set; }
}
@@ -1,12 +1,32 @@
namespace TaxBaik.Application.DTOs;
using System.ComponentModel.DataAnnotations;
public class UpdateInquiryDto
{
[Required(ErrorMessage = "이름을 입력하세요.")]
[StringLength(100, ErrorMessage = "이름은 최대 100자까지 입력 가능합니다.")]
public string Name { get; set; } = string.Empty;
[Required(ErrorMessage = "전화번호를 입력하세요.")]
[RegularExpression(
@"^(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})$",
ErrorMessage = " .")]
public string Phone { get; set; } = string.Empty;
[EmailAddress(ErrorMessage = "올바른 이메일 형식이 아닙니다.")]
public string? Email { get; set; }
[StringLength(50, ErrorMessage = "상담분야는 최대 50자까지 입력 가능합니다.")]
public string ServiceType { get; set; } = string.Empty;
[Required(ErrorMessage = "문의 내용을 입력하세요.")]
[StringLength(5000, MinimumLength = 10, ErrorMessage = "문의 내용은 최소 10자, 최대 5000자까지 입력 가능합니다.")]
public string Message { get; set; } = string.Empty;
[Required(ErrorMessage = "상태를 선택하세요.")]
public string Status { get; set; } = string.Empty;
[StringLength(1000, ErrorMessage = "관리 메모는 최대 1000자까지 입력 가능합니다.")]
public string? AdminMemo { get; set; }
}