8ccde89dc0
improvement: ApnsSender 환경별 APNs 호스트 자동 분기 ( #273 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/274
2026-03-03 01:41:41 +00:00
SEAN
420a036c36
improvement: ApnsSender 환경별 APNs 호스트 자동 분기 ( #273 )
...
Closes #273
2026-03-03 10:37:35 +09:00
c97ae32080
fix: PushWorker APNs/FCM 크리덴셜 복호화 누락 수정 ( #271 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/272
2026-03-03 01:14:31 +00:00
SEAN
b8d87377b9
fix: PushWorker APNs/FCM 크리덴셜 복호화 누락 수정 ( #271 )
...
Closes #271
2026-03-03 10:10:29 +09:00
6c3a384a99
improvement: TagCode 도입 — 태그 식별자를 4자리 랜덤 코드로 변경 ( #269 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/270
2026-03-02 07:15:24 +00:00
SEAN
71cd7a5e98
improvement: TagCode 도입 — 태그 식별자를 4자리 랜덤 코드로 변경 ( #269 )
...
Closes #269
2026-03-02 16:12:06 +09:00
165328b7df
improvement: 태그 관리 API 프론트엔드 연동 수정 ( #267 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/268
2026-03-02 05:01:36 +00:00
SEAN
1ca4980293
improvement: 태그 관리 API 프론트엔드 연동 수정 ( #267 )
...
- TagSummaryDto에 tag_index 필드 추가 (서비스별 Id 순서 1-based 동적 계산)
- ServiceSummaryDto/ServiceResponseDto에 service_id 필드 추가
- ServiceCodeMiddleware OPTIONAL_FOR_ADMIN에 /v1/in/tag 경로 추가
Closes #267
2026-03-02 13:43:14 +09:00
432fde0baf
chore: Stats Controller Swagger 응답 스키마 추가 ( #265 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/266
2026-02-28 16:53:11 +00:00
SEAN
cb4cf01c4f
chore: Stats Controller Swagger 응답 스키마 추가 ( #265 )
...
- StatsController 10개 메서드에 [ProducesResponseType] 어노테이션 추가
- Swagger 문서에서 Stats API 응답 스키마(DashboardResponseDto 등) 노출
Closes #265
2026-03-01 01:51:32 +09:00
e0af7cd604
fix: AdminCode 컬럼 길이 불일치 수정 ( #257 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/264
2026-02-28 14:19:53 +00:00
42bf814af1
improvement: 대시보드 KPI 변화량/변화율 필드 추가 ( #262 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/263
2026-02-28 14:06:13 +00:00
SEAN
9dcdd56b2f
improvement: 대시보드 KPI 변화량/변화율 필드 추가 ( #262 )
...
- DashboardKpiDto에 success_rate_change, device_count_change, today_sent_change_rate 필드 추가
- StatsService.GetDashboardAsync에 직전 기간 성공률 변화, 오늘 신규 디바이스 수, 발송 변화율 계산 로직 구현
Closes #262
2026-02-28 22:50:31 +09:00
b02910a213
fix: JWT 토큰에 adminId 클레임 추가 ( #260 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/261
2026-02-28 09:37:17 +00:00
SEAN
748aa3e3b8
fix: JWT 토큰에 adminId 클레임 추가 ( #260 )
...
- GenerateAccessToken에서 adminId 클레임을 별도로 추가
- 컨트롤러에서 User.FindFirst("adminId")로 조회 가능하도록 수정
Closes #260
2026-02-28 18:34:40 +09:00
9164d9156b
fix: 컨트롤러 권한(Authorization) 설정 오류 수정 ( #258 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/259
2026-02-28 09:22:38 +00:00
SEAN
3ea873e438
fix: 컨트롤러 권한(Authorization) 설정 오류 수정 ( #258 )
...
- ServiceController: [Authorize(Roles = "Super")] → [Authorize]
- AccountController: [Authorize(Roles = "Super")] → [Authorize]
- MessageController: [Authorize] 추가
- StatsController: [Authorize] 추가
- PushController: [Authorize] 추가
Closes #258
2026-02-28 18:15:46 +09:00
SEAN
ecddbe1c26
fix: AdminCode 컬럼 길이 불일치 수정 ( #257 )
...
- HasMaxLength(8) → HasMaxLength(12) 변경
- 코드에서 12자 UUID를 생성하나 DB가 8자만 허용하는 버그
- 회원가입 시 'Data too long for column AdminCode' 500 에러 해결
2026-02-26 17:36:33 +09:00
acfa988c43
fix: 루트 경로 X-Service-Code 미들웨어 차단 해제 ( #255 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/256
2026-02-26 06:06:42 +00:00
SEAN
30c40d449d
fix: 루트 경로 접근 시 X-Service-Code 미들웨어 차단 해제 ( #255 )
...
- /v1로 시작하지 않는 경로(루트, 정적파일 등)는 ServiceCodeMiddleware SKIP
- 프론트엔드 SPA(index.html) 정상 서빙 보장
Fixes #255
2026-02-26 15:03:53 +09:00
71172d738b
improvement: 로그아웃 연동 완료 ( #253 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/254
2026-02-26 01:24:58 +00:00
SEAN
71102e38ac
improvement: 로그아웃 응답 표준화 및 단일 API 연동 완료 ( #253 )
...
- LogoutResponseDto 신규 (logged_out, redirect_to 힌트)
- LogoutAsync 반환 타입 Task → Task<LogoutResponseDto>
- AuthController Swagger 문서에 설정 화면 단일 API 사용 명시
Closes #253
2026-02-26 10:11:26 +09:00
49da5a91c8
improvement: 비밀번호 변경 보안 정책 적용 ( #251 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/252
2026-02-26 01:08:16 +00:00
SEAN
f31964c92e
improvement: 비밀번호 변경 보안 정책 적용 ( #251 )
...
- 비밀번호 정책 서버 검증 강화 (영대/소문자, 숫자, 특수문자 조합, 8~64자)
- 동일 비밀번호 재사용 금지 검증 추가
- 비밀번호 변경 후 세션 무효화 (Refresh Token 삭제)
- ChangePasswordResponseDto 신규 (re_login_required 힌트)
- 에러코드 추가 (PasswordPolicyViolation, PasswordReuseForbidden)
- AuthController Swagger 문서 보강
Closes #251
2026-02-26 10:07:12 +09:00
335676a282
improvement: 마이페이지 조회 확장 ( #249 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/250
2026-02-26 01:03:22 +00:00
SEAN
04dd5be046
improvement: 마이페이지 조회 확장 ( #249 )
...
- Admin 엔티티에 Organization 컬럼 추가 + Migration
- ProfileResponseDto에 last_login_at, organization 필드 추가
- UpdateProfileRequestDto에 organization 필드 추가
- AuthService 프로필 조회/수정 매핑 확장
- 활동 내역 DTO 및 GetActivityListAsync 메서드 추가
- ProfileController 활동 내역 조회 엔드포인트 추가
Closes #249
2026-02-26 10:01:48 +09:00
7dcdb03796
improvement: Notification 도메인 구축 ( #247 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/248
2026-02-26 00:47:32 +00:00
SEAN
c29a48163d
improvement: Notification 도메인 구축 ( #247 )
...
- Domain: NotificationCategory enum, Notification entity, INotificationRepository
- Infrastructure: NotificationConfiguration, NotificationRepository, AppDbContext/DI 등록
- Migration: AddNotificationTable 생성 및 적용
- Application: DTO 7개, INotificationService, NotificationService, DI 등록
- API: NotificationController (summary, list, read, read-all)
Closes #247
2026-02-26 09:44:28 +09:00
f474b916c4
improvement: 태그 삭제 시 디바이스 orphan 참조 제거 ( #186 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/246
2026-02-26 00:17:17 +00:00
SEAN
4db27aaf8a
improvement: 태그 삭제 시 디바이스 orphan 참조 제거 ( #186 )
...
- IDeviceRepository에 GetDevicesByTagIdAsync 메서드 추가
- DeviceRepository에 LIKE 기반 태그 참조 디바이스 조회 구현
- TagService.DeleteAsync에서 트랜잭션으로 원자적 처리:
디바이스 Tags JSON에서 삭제 대상 tagId 제거 후 태그 삭제
2026-02-26 09:12:41 +09:00
0ee0da4fa4
improvement: 태그 CRUD API 구현 ( #186 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/245
2026-02-25 09:11:13 +00:00
SEAN
7ffc152536
improvement: 태그 CRUD API 구현 ( #186 )
...
- Tag DTO 6종 생성 (List/Create/Update/Delete Request/Response)
- ITagRepository 확장 (GetTagListAsync, CountByServiceAsync)
- IDeviceRepository 확장 (GetDeviceCountsByTagIdsAsync)
- ITagService/TagService 구현 (CRUD 비즈니스 로직)
- TagController 신규 생성 (v1/in/tag/list, create, update, delete)
- DI 등록
Closes #186
2026-02-25 18:07:11 +09:00
6b4f502bb8
improvement: Tag 테이블 신설 및 도메인 모델 확정 ( #243 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/244
2026-02-25 08:41:58 +00:00
SEAN
c458cfe4e7
improvement: Tag 테이블 신설 및 도메인 모델 확정 ( #243 )
...
- Tag 엔티티 생성 (ServiceId, Name, Description, CreatedAt, CreatedBy)
- ITagRepository 인터페이스 및 TagRepository 구현
- TagConfiguration: Unique Index (ServiceId, Name), FK Restrict
- Service.TagList Navigation 추가
- ErrorCodes에 Tag 에러코드 4종 추가 (191~194)
- AppDbContext DbSet<Tag>, DI 등록
- EF Core Migration AddTagTable 생성 및 적용
Closes #243
2026-02-25 17:36:14 +09:00
ef00ea130d
improvement: 기기 엑셀 내보내기 API 추가 ( #241 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/242
2026-02-25 08:19:55 +00:00
SEAN
a2d563aa9d
improvement: 기기 엑셀 내보내기 API 추가 ( #241 )
...
- DeviceExportRequestDto: 목록 필터와 동일한 필터 파라미터 (page/size 제외)
- IDeviceRepository/DeviceRepository: GetAllFilteredAsync 추가 (전체 반환)
- DeviceService: ClosedXML 기반 엑셀 생성 (14개 컬럼)
- DeviceController: POST /v1/in/device/export [Authorize] 엔드포인트 추가
Closes #241
2026-02-25 17:16:13 +09:00
76873e7fbc
improvement: 관리자 기기 삭제/차단 API 추가 ( #239 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/240
2026-02-25 08:12:47 +00:00
SEAN
48049bba9e
improvement: 관리자 기기 삭제/차단 API 추가 ( #239 )
...
- IDeviceService: AdminDeleteAsync(long deviceId) 추가
- DeviceService: Device 조회 → IsActive=false → 토큰 캐시 무효화
- DeviceController: POST /v1/in/device/admin/delete [Authorize] 엔드포인트 추가
- 기존 SDK 삭제 API와 분리, JWT 인증 기반 관리자 전용
Closes #239
2026-02-25 17:06:11 +09:00
d98f8c89a4
improvement: 관리자 기기 목록 API 확장 ( #237 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/238
2026-02-25 08:01:44 +00:00
SEAN
afaeb6d116
improvement: 관리자 기기 목록 API 확장 ( #237 )
...
- DeviceListRequestDto: keyword, marketing_agreed 필터 추가
- DeviceSummaryDto: 8개 응답 필드 추가 (device_token, service_name, service_code, os_version, app_version, marketing_agreed, is_active, created_at)
- DeviceRepository: keyword/marketingAgreed 필터 + Include(Service) 추가
- DeviceService: 새 필터 전달 + 응답 매핑 확장
Closes #237
2026-02-25 16:56:59 +09:00
016550e3b9
improvement: 대시보드 TopMessage에 status 필드 추가 ( #193 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/236
2026-02-25 07:51:53 +00:00
SEAN
65eb9e785a
improvement: 대시보드 TopMessage에 status 필드 추가 ( #193 )
...
- TopMessageDto에 status 필드 추가 (SendStatus.Determine 적용)
- 대시보드/이력 간 동일 건의 상태 라벨 일치 보장
Closes #193
2026-02-25 16:50:17 +09:00
5fc2221d5b
improvement: 이력 엑셀 내보내기 API 추가 ( #191 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/235
2026-02-25 07:41:48 +00:00
SEAN
3d8c57f690
improvement: 이력 엑셀 내보내기 API 추가 ( #191 )
...
- POST /v1/in/stats/history/export 엔드포인트 추가
- history/list와 동일 필터(keyword/status/date) 기준 엑셀 내보내기
- PushSendLogRepository에서 GroupBy 쿼리를 private helper로 리팩토링
- ClosedXML로 엑셀 생성 (메시지코드/제목/서비스명/발송일시/대상수/성공/실패/오픈율/상태)
Closes #191
2026-02-25 16:39:56 +09:00
9350066fb4
improvement: 이력 목록/상세 API 추가 ( #233 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/234
2026-02-25 07:25:00 +00:00
SEAN
347c9aa4bf
improvement: 이력 목록/상세 API 추가 ( #233 )
...
- POST /v1/in/stats/history/list: 메시지별 발송 이력 목록 조회
(keyword/status/date 필터, 페이지네이션)
- POST /v1/in/stats/history/detail: 특정 메시지 상세 이력 조회
(기본정보+집계+실패사유 Top 5+본문)
- SendStatus.Determine() 규칙 재사용
Closes #233
2026-02-25 16:23:11 +09:00
f33971a1d0
improvement: 대시보드 통합 API 추가 ( #231 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/232
2026-02-25 07:12:24 +00:00
SEAN
ffde006e94
improvement: 대시보드 통합 API 추가 ( #231 )
...
Closes #231
2026-02-25 16:04:00 +09:00
b177557094
improvement: 통계 서비스 범위 정책 고정 ( #229 )
...
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/230
2026-02-25 06:50:52 +00:00
SEAN
a3b2da5ffb
improvement: 통계 서비스 범위 정책 고정 ( #229 )
...
- Stats 도메인 에러코드 추가 (171: DateRangeInvalid, 172: ServiceScopeInvalid)
- StatsService ParseDateRange에서 generic BadRequest → StatsDateRangeInvalid로 교체
- StatsController 전 엔드포인트 Swagger Description에 스코프 정책 안내 추가
- SpmsHeaderOperationFilter에서 message/list를 Optional로 반영 (미들웨어 정합)
Closes #229
2026-02-25 15:47:02 +09:00