feat: CSV 검증/템플릿 다운로드 API 구현 (#100) #101

Merged
seonkyu.kim merged 1 commits from feature/#100-csv-validate-template into develop 2026-02-10 06:24:08 +00:00
Owner

📋 작업 요약

  • CSV 파일 검증 API (device_id 필수, 메시지 변수 매칭, 행별 오류 검출)
  • 메시지별 CSV 템플릿 다운로드 API (device_id + 변수 컬럼 자동 생성)
  • MessageRepository 구현 (IMessageRepository 인터페이스만 존재하던 상태)

Closes #100

🛠️ 작업 내용 (Changes)

  • SPMS.Domain/Interfaces/IMessageRepository.cs — GetByMessageCodeAndServiceAsync 추가
  • SPMS.Infrastructure/Persistence/Repositories/MessageRepository.cs — 새 파일, 레포지토리 구현
  • SPMS.Application/DTOs/File/CsvValidateResponseDto.cs — 새 파일, 검증 결과 DTO
  • SPMS.Application/DTOs/File/CsvValidateErrorDto.cs — 새 파일, 행별 오류 DTO
  • SPMS.Application/DTOs/File/CsvTemplateRequestDto.cs — 새 파일, 템플릿 요청 DTO
  • SPMS.Application/Interfaces/IFileService.cs — ValidateCsvAsync, GetCsvTemplateAsync 추가
  • SPMS.Application/Services/FileService.cs — CSV 검증/템플릿 로직 구현 + IMessageRepository 의존성 추가
  • SPMS.API/Controllers/FileController.cs — csv/validate, csv/template 엔드포인트 추가
  • SPMS.Infrastructure/DependencyInjection.cs — IMessageRepository 등록

📢 리뷰어 참고 사항 (To Reviewers)

  • Message.Body에서 {{변수명}} 패턴(Regex)으로 템플릿 변수 추출
  • CSV 검증: 헤더 컬럼 매칭 + device_id 형식 검증(long 파싱) + 빈 행 체크
  • CSV 템플릿: UTF-8 BOM 포함하여 Excel에서도 한글 깨짐 없이 열림
  • MessageRepository는 이번 이슈에서 처음 구현 (향후 Message API에서도 재사용)

체크리스트 (Self Checklist)

  • 빌드(Build)가 성공적으로 수행되었는가?
  • 모든 단위 테스트(Unit Test)를 통과하였는가?
  • 불필요한 로그나 주석을 제거하였는가?
  • 컨벤션(Clean Architecture, Naming)을 준수하였는가?
  • 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가?

📸 스크린샷 / 테스트 로그 (Screenshots/Logs)

빌드했습니다.
    경고 0개
    오류 0개
## 📋 작업 요약 - CSV 파일 검증 API (device_id 필수, 메시지 변수 매칭, 행별 오류 검출) - 메시지별 CSV 템플릿 다운로드 API (device_id + 변수 컬럼 자동 생성) - MessageRepository 구현 (IMessageRepository 인터페이스만 존재하던 상태) ## 🔗 관련 이슈 (Related Issues) Closes #100 ## 🛠️ 작업 내용 (Changes) - [x] `SPMS.Domain/Interfaces/IMessageRepository.cs` — GetByMessageCodeAndServiceAsync 추가 - [x] `SPMS.Infrastructure/Persistence/Repositories/MessageRepository.cs` — 새 파일, 레포지토리 구현 - [x] `SPMS.Application/DTOs/File/CsvValidateResponseDto.cs` — 새 파일, 검증 결과 DTO - [x] `SPMS.Application/DTOs/File/CsvValidateErrorDto.cs` — 새 파일, 행별 오류 DTO - [x] `SPMS.Application/DTOs/File/CsvTemplateRequestDto.cs` — 새 파일, 템플릿 요청 DTO - [x] `SPMS.Application/Interfaces/IFileService.cs` — ValidateCsvAsync, GetCsvTemplateAsync 추가 - [x] `SPMS.Application/Services/FileService.cs` — CSV 검증/템플릿 로직 구현 + IMessageRepository 의존성 추가 - [x] `SPMS.API/Controllers/FileController.cs` — csv/validate, csv/template 엔드포인트 추가 - [x] `SPMS.Infrastructure/DependencyInjection.cs` — IMessageRepository 등록 ## 📢 리뷰어 참고 사항 (To Reviewers) - Message.Body에서 `{{변수명}}` 패턴(Regex)으로 템플릿 변수 추출 - CSV 검증: 헤더 컬럼 매칭 + device_id 형식 검증(long 파싱) + 빈 행 체크 - CSV 템플릿: UTF-8 BOM 포함하여 Excel에서도 한글 깨짐 없이 열림 - MessageRepository는 이번 이슈에서 처음 구현 (향후 Message API에서도 재사용) ## ✅ 체크리스트 (Self Checklist) - [x] 빌드(Build)가 성공적으로 수행되었는가? - [x] 모든 단위 테스트(Unit Test)를 통과하였는가? - [x] 불필요한 로그나 주석을 제거하였는가? - [x] 컨벤션(Clean Architecture, Naming)을 준수하였는가? - [x] 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가? ## 📸 스크린샷 / 테스트 로그 (Screenshots/Logs) ``` 빌드했습니다. 경고 0개 오류 0개 ```
seonkyu.kim added 1 commit 2026-02-10 06:22:41 +00:00
seonkyu.kim added the
Priority
Medium
Status
In Progress
Type
Feature
labels 2026-02-10 06:22:50 +00:00
seonkyu.kim self-assigned this 2026-02-10 06:22:55 +00:00
seonkyu.kim added this to the Phase 2-2: Public & 디바이스 & 파일 API milestone 2026-02-10 06:23:00 +00:00
seonkyu.kim requested review from Owners 2026-02-10 06:23:09 +00:00
seonkyu.kim merged commit 1cae5c3754 into develop 2026-02-10 06:24:08 +00:00
seonkyu.kim added
Status
Done
and removed
Status
In Progress
labels 2026-02-10 06:24:26 +00:00
seonkyu.kim deleted branch feature/#100-csv-validate-template 2026-02-10 06:24:28 +00:00
Sign in to join this conversation.
No description provided.