[Feature] CSV 검증/템플릿 다운로드 API (FILE_05~06) #100

Closed
opened 2026-02-10 06:20:14 +00:00 by seonkyu.kim · 0 comments
Owner

📋 개요

대용량 발송용 CSV 파일 검증 및 메시지별 CSV 템플릿 다운로드 API를 구현합니다.

  • FILE_05: /v1/in/file/csv/validate — CSV 파일 검증 (변수 매칭, 행 검증)
  • FILE_06: /v1/in/file/csv/template — 메시지별 CSV 템플릿 다운로드

🔒 보안

  • JWT 인증 ([Authorize]) + X-Service-Code 헤더 (대시보드 API)

📐 설계

  • Message.Body에서 {{변수명}} 패턴으로 템플릿 변수 추출
  • CSV 검증: device_id 필수 컬럼 + 메시지 변수 컬럼 매칭 확인 + 행별 오류
  • CSV 템플릿: device_id + 메시지 변수를 컬럼 헤더로 CSV 파일 생성/다운로드
  • MessageRepository 구현 필요 (IMessageRepository 인터페이스만 존재)

체크리스트

  • IMessageRepository에 GetByMessageCodeAndServiceAsync 추가
  • MessageRepository 구현
  • DTOs 생성 (CsvValidateResponse, CsvValidateError, CsvTemplateRequest)
  • IFileService 확장 (ValidateCsvAsync, GetCsvTemplateAsync)
  • FileService에 CSV 검증/템플릿 로직 구현
  • FileController에 2개 엔드포인트 추가
  • DI 등록 (IMessageRepository)
  • 빌드 확인 (0 errors, 0 warnings)

📎 참고

  • API 명세: Documents/API_Specification.md 9.5~9.6
  • Message 엔티티: Body 필드에 {{variable}} 형태 변수 포함
  • Milestone: Phase 2-2 (v0.3.0)
## 📋 개요 대용량 발송용 CSV 파일 검증 및 메시지별 CSV 템플릿 다운로드 API를 구현합니다. - **FILE_05**: `/v1/in/file/csv/validate` — CSV 파일 검증 (변수 매칭, 행 검증) - **FILE_06**: `/v1/in/file/csv/template` — 메시지별 CSV 템플릿 다운로드 ## 🔒 보안 - JWT 인증 ([Authorize]) + X-Service-Code 헤더 (대시보드 API) ## 📐 설계 - Message.Body에서 `{{변수명}}` 패턴으로 템플릿 변수 추출 - CSV 검증: device_id 필수 컬럼 + 메시지 변수 컬럼 매칭 확인 + 행별 오류 - CSV 템플릿: device_id + 메시지 변수를 컬럼 헤더로 CSV 파일 생성/다운로드 - MessageRepository 구현 필요 (IMessageRepository 인터페이스만 존재) ## ✅ 체크리스트 - [x] IMessageRepository에 GetByMessageCodeAndServiceAsync 추가 - [x] MessageRepository 구현 - [x] DTOs 생성 (CsvValidateResponse, CsvValidateError, CsvTemplateRequest) - [x] IFileService 확장 (ValidateCsvAsync, GetCsvTemplateAsync) - [x] FileService에 CSV 검증/템플릿 로직 구현 - [x] FileController에 2개 엔드포인트 추가 - [x] DI 등록 (IMessageRepository) - [x] 빌드 확인 (0 errors, 0 warnings) ## 📎 참고 - API 명세: `Documents/API_Specification.md` 9.5~9.6 - Message 엔티티: Body 필드에 `{{variable}}` 형태 변수 포함 - Milestone: Phase 2-2 (v0.3.0)
seonkyu.kim added the
Priority
Medium
Status
In Progress
Type
Feature
labels 2026-02-10 06:20:20 +00:00
seonkyu.kim self-assigned this 2026-02-10 06:20:23 +00:00
seonkyu.kim added this to the Phase 2-2: Public & 디바이스 & 파일 API milestone 2026-02-10 06:20:24 +00:00
seonkyu.kim added
Status
Done
and removed
Status
In Progress
labels 2026-02-10 06:24:22 +00:00
Sign in to join this conversation.
No description provided.