Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
196 commits
Select commit Hold shift + click to select a range
f89e4b3
develop init
19013na Jul 31, 2025
6f2c415
MNMS-143 feat: 대기열 1차 완료
19013na Aug 1, 2025
f5ebcbb
MNMS-143 feat: 보안문자 생성 기능
19013na Aug 1, 2025
f628e29
MNMS-143 feat: 보안문자 인증 및 보안강화
19013na Aug 1, 2025
7fcf79a
MNMS-143 refactor: 보안문자 리팩토링
19013na Aug 1, 2025
dfee8db
MNMS-143 fix: 대기열 Schedule 추가
19013na Aug 5, 2025
ef346ab
Merge pull request #1 from 3-mnms/feature/MNMS-143
19013na Aug 5, 2025
83bfde6
MNMS-184 feat: 대기열 대기자 퇴장
19013na Aug 5, 2025
54cf1b0
MNMS-184 fix: 대기열 입장 시 웹소켓 구독 수정
19013na Aug 5, 2025
918a2fd
MNMS-184 fix: 조건 스케줄러 변경
19013na Aug 5, 2025
60b2d4b
Merge pull request #2 from 3-mnms/feature/MNMS-184
19013na Aug 5, 2025
5c333af
MNMS-205 feat: kafka 연결
19013na Aug 6, 2025
bc72311
Merge pull request #3 from 3-mnms/feature/MNMS-205
19013na Aug 6, 2025
9e4058e
MNMS-256 feat: 예매하기 진행
19013na Aug 7, 2025
ffcc411
Merge pull request #5 from 3-mnms/feature/MNMS-256
19013na Aug 7, 2025
ebfe5fd
MNMS-282 fix: JwtPrincipal로 user 정보 가져오기 수정
19013na Aug 8, 2025
db3bc2e
MNMS-282 fix: user JwtPrincipal 전체 적용
19013na Aug 8, 2025
4b34515
MNMS-282 fix: 예매 처리 수정 및 전반적인 예외처리 추가
19013na Aug 9, 2025
69f68af
MNMS-282 feat: Swagger 적용
19013na Aug 9, 2025
12b1ca9
MNMS-282 feat: QR 기능 및 ticket entity 수정 및 로직 추가
19013na Aug 9, 2025
3ca0784
MNMS-282 feat: 외부 User 서비스 연동 - userId 기반 사용자 정보 조회 기능 추가
19013na Aug 11, 2025
6cd1037
MNMS-318 :whale: feat(ci): booking Dockerfile 및 Docker 빌드/배포 워크플로 추가
V4N1LLA Aug 11, 2025
87ea3dd
MNMS-282 fix: 예매자 dto 변경
19013na Aug 11, 2025
0caecac
MNMS-282 fix: 대기열 수정
19013na Aug 11, 2025
a348bfb
MNMS-282 fix: festivalId, selectedDate추가한 대기열
19013na Aug 12, 2025
6710ab2
MNMS-282 Refactor: 대기열 로직 리팩토링 및 코드 가독성 개선
19013na Aug 12, 2025
9397a5d
MNMS-282 Feat: 예매 단계 조회 및 저장&수정
19013na Aug 13, 2025
948d8d3
MNMS-282 Fix: db h2에서 mariaDB로 변경
19013na Aug 13, 2025
f8edb6e
MNMS-282 Fix: 예약 오류 수정
19013na Aug 14, 2025
171fb71
MNMS-282 Chore: 3차 가예매 수정 완료
19013na Aug 14, 2025
eb3fb62
MNMS-282 Refactor: 예매 리팩토링 완료
19013na Aug 14, 2025
7d512be
MNMS-282 Feat: 예매 Scheduler 적용, kafka, enum 폴더 구조 추가
19013na Aug 14, 2025
a2c6677
MNMS-282 Chore: SelectedTicketCount만큼 QrCode 생성
19013na Aug 14, 2025
1afabbc
Merge pull request #6 from 3-mnms/feature/MNMS-282
19013na Aug 14, 2025
2ba4b2b
MNMS-282 Chore: 최대 매수 나눠서 예매 조건 수정
19013na Aug 17, 2025
96d4431
MNMS-282 Chore: JwtPrincipal loginId -> userId 변경
19013na Aug 17, 2025
68b9e9e
MNMS-282 Feat: QR 확인 시 주최자 확인 조건
19013na Aug 17, 2025
261db95
Merge pull request #7 from 3-mnms/feature/MNMS-282
19013na Aug 17, 2025
c6684f5
MNMS-352 Feat: 티켓 예매 취소
19013na Aug 17, 2025
466ec45
MNMS-352 Feat: 페스티벌 kafka 구독(Listener구성)
19013na Aug 18, 2025
8e52426
MNMS-352 Chore: API 성공 응답값 SuccessResponse로 변경
19013na Aug 19, 2025
7178b46
MNMS-352 Fix: set constructor of the Festival, Qrcode, Schedule, Ticket
19013na Aug 19, 2025
1f1b405
Merge pull request #8 from 3-mnms/feature/MNMS-352
19013na Aug 19, 2025
420ccdc
MNMS-351 Feat: 페스티벌 주최자에게 제공하는 API 완료
19013na Aug 19, 2025
f565929
build(api-booking): add production Dockerfile for Spring Boot (Java 17)
V4N1LLA Aug 19, 2025
daefc2a
ci(api-booking): add workflow api-booking-docker-dispatch.yml (build …
V4N1LLA Aug 19, 2025
ab1a91b
MNMS-351 Feat: 페스티벌 kafka & 예매자 정보 조회
19013na Aug 20, 2025
b1e47b1
MNMS-351 Chore: 페스티벌 kafka 수정 테스트 완료
19013na Aug 20, 2025
b661bc9
MNMS-351 Feat: 결제 kafka 구독 코드 1차 수정 완료
19013na Aug 20, 2025
4db6310
MNMS-351 Feat: 결제 kafka 구독 코드 2차 완료
19013na Aug 20, 2025
00d576f
MNMS-351 Docs: 주석 정리
19013na Aug 20, 2025
d4b206f
MNMS-351 Fix: user 정보 가져오기 변경
19013na Aug 20, 2025
2d333bb
Merge pull request #9 from 3-mnms/feature/MNMS-351
19013na Aug 20, 2025
a3a7807
MNMS-384 Fix: ticket에 String type의 address 추가
19013na Aug 20, 2025
b9799e4
Merge pull request #10 from 3-mnms/fix/MNMS-384
19013na Aug 20, 2025
c3c0726
MNMS-383 Feat: /api/host/booking/list API에 HOST ROLE 설정
19013na Aug 20, 2025
8fc1338
fix: workflow 파일 매핑 수정
V4N1LLA Aug 21, 2025
535872a
Merge branch 'develop' of https://github.com/3-mnms/booking into develop
V4N1LLA Aug 21, 2025
f562a61
ci(api): single dispatch with multi-targets (develop-gke,develop-aws)
V4N1LLA Aug 21, 2025
c188c13
Merge branch 'feature/MNMS-318' of https://github.com/3-mnms/booking …
19013na Aug 21, 2025
b1927e5
:sparkles: feat : OCR 기능 구현
BitedRadish Aug 21, 2025
5819b09
MNMS-383 Fix: AuthenticationPrincipal -> Authentication로 변경
19013na Aug 21, 2025
33a1080
Merge pull request #12 from 3-mnms/feature/MNMS-390
19013na Aug 21, 2025
998aead
Merge pull request #13 from 3-mnms/feature/MNMS-383
19013na Aug 21, 2025
7e1f05d
MNMS-412 fix: 결제 제한 조건 추가
19013na Aug 21, 2025
f6f0937
MNMS-412 Feat: ocr 정제 2, 3차 수행 완료
19013na Aug 22, 2025
ae0c6af
MNMS-412 Feat: 양도 기능 가족관계증명서 인증 후 티켓 정보 변경
19013na Aug 22, 2025
0d54b59
MNMS-412 Chore: update comments and remove unnecessary code
19013na Aug 22, 2025
904109e
Merge pull request #14 from 3-mnms/feature/MNMS-412
19013na Aug 22, 2025
7738b61
ci(workflows): 모든 서비스 멀티아키 이미지 푸시(amd64/arm64) + 태그 분리(-win/-mac)
V4N1LLA Aug 22, 2025
e7ca0f9
Merge branch 'develop' of https://github.com/3-mnms/booking into develop
V4N1LLA Aug 22, 2025
88c267c
Update api-booking-docker-dispatch.yml
rookies-dogun Aug 22, 2025
9552e84
Update api-booking-docker-dispatch.yml
rookies-dogun Aug 22, 2025
72c22ce
ci(booking): 멀티아키 빌드 + latest(dev/main), v0.1 태그 추가
V4N1LLA Aug 22, 2025
0cd2838
MNMS-412 Chore: swagger 메시지 변경
19013na Aug 22, 2025
151f695
MNMS-412 Feat: 주최측 예매자 정보 조회
19013na Aug 23, 2025
b417b27
Merge pull request #15 from 3-mnms/feature/MNMS-412
19013na Aug 24, 2025
6b8101c
MNMS-459 Fix: 대기열 동시성 문제 해결 (테스트 미완)
19013na Aug 25, 2025
b87275f
MNMS-459 Feat: 개인 사용자 예매 내역 조회
19013na Aug 26, 2025
3a82e71
MNMS-459 Fix: ticket/detail param 변경 및 swagger 변경
19013na Aug 26, 2025
ad9ecc5
Merge pull request #16 from 3-mnms/refactor/MNMS-459
19013na Aug 26, 2025
a1812a9
MNMS-458 Chore: 주최자 측 예매자 조회
19013na Aug 26, 2025
e45c533
Merge pull request #17 from 3-mnms/refactor/MNMS-458
19013na Aug 26, 2025
9c08423
MNMS-458 Chore: 주최자 측 예매자 조회 + 운영자 추가
19013na Aug 27, 2025
acb75d3
MNMS-458 Chore: 가예매 조회 seller ID 반환 추가
19013na Aug 27, 2025
c6e508c
Merge pull request #18 from 3-mnms/refactor/MNMS-458
19013na Aug 27, 2025
d055933
MNMS-511 Story: 공연 별 예매자 성별 / 나이 통계 기능 구현
CECHERI Aug 27, 2025
e60f9b8
MNMS-455 Feat: 공통 양도 기능 구현
19013na Aug 27, 2025
acd332c
MNMS-511 Story: 공연-공연시작날짜시간 별 입정 인원 현황 조회 기능 구현
CECHERI Aug 28, 2025
752bb0c
MNMS-524 Story: 예매자와 주최자는 공연의 QR 입장 현황 확인 기능 구현
CECHERI Aug 28, 2025
d46062b
MNMS-455 Feat: 양도 승인 기능 완료 및 주최측 예매자 리스트 조회 수정
19013na Aug 28, 2025
c101c29
MNMS-524 Story: 주최자는 공연의 예매자 수 / 수용인원을 확인 기능 구현
CECHERI Aug 28, 2025
932be5c
Merge pull request #19 from 3-mnms/feature/MNMS-524
CECHERI Aug 28, 2025
999d55a
Merge branch 'develop' into feature/MNMS-455
19013na Aug 29, 2025
9d143af
Merge pull request #20 from 3-mnms/feature/MNMS-455
19013na Aug 29, 2025
66ef720
MNMS-524 Bug: 예매자수 집계 오류 수정
CECHERI Aug 29, 2025
1205cca
MNMS-454 Feat&Chore&Refactor : 지인 양도 코드 추가 및 ocr 임시 수정 및 리팩토링
19013na Aug 29, 2025
ac9ef42
Merge branch 'develop' of https://github.com/3-mnms/booking into refa…
19013na Aug 29, 2025
e1c1a11
MNMS-454 Chore: merge 충돌 오류 해결
19013na Aug 29, 2025
91d9db3
MNMS-454 Fix: 양도 조건 추가 및 ocr 수정
19013na Aug 29, 2025
97a64f2
MNMS-454 Refactor: 양도 테스트 및 리팩토링
19013na Aug 29, 2025
397ccae
MNMS-454 Fix: 지인 양도 결제 완료 코드 추가
19013na Aug 29, 2025
977a02f
MNMS-454 Chore: 결제 완료 코드 수정
19013na Aug 29, 2025
a43b7dd
MNMS-454 Fix: OCR 3차 추출 코드 변경 (효율성)
19013na Aug 29, 2025
e4d8d1d
Merge pull request #21 from 3-mnms/refactor/MNMS-454
19013na Aug 29, 2025
24ee254
hotfix: 긴급 패치 - 삭제된 티켓 리스트 조회 controller code 추가
19013na Aug 30, 2025
f00382f
MNMS-548 fix: ocr parser 조건 변경
19013na Aug 30, 2025
72b3de8
Merge pull request #22 from 3-mnms/fix/MNMS-548
19013na Aug 30, 2025
0d6f2ea
MNMS-513 Refactor: WebSocket 메시지 누락 및 Transaction 설정 추가
19013na Aug 30, 2025
ebc7912
MNMS-513 Fix: WebSocket 코드 수정
19013na Aug 30, 2025
e5ddd57
MNMS-513 Chore: 예매 리스트에 poster 추가
19013na Sep 1, 2025
bb9b466
MNMS-513 Refactor: 대기열 -> 예매 페이지 큐 업데이트 방식 확정
19013na Sep 1, 2025
2315fc0
MNMS-513 Refactor: 예약자/대기자 키 관리 중복 관리 수행
19013na Sep 1, 2025
eda3b52
MNMS-513 Refactor: 대기열 예외 처리 추가
19013na Sep 1, 2025
d89f085
MNMS-513 Refactor: WebSocket 구독 방식
19013na Sep 1, 2025
0e475ae
MNMS-513 Refactor: 대기열 번호 전체 갱신 방식 부분 갱신 변경
19013na Sep 2, 2025
3c0bb9d
Merge pull request #23 from 3-mnms/refactor/MNMS-513
19013na Sep 2, 2025
4809ebd
hotfix: 긴급 패치 - 양도 /transfer/watch api response에 transferId 추가
19013na Sep 2, 2025
53be215
Merge pull request #24 from 3-mnms/refactor/MNMS-513
19013na Sep 2, 2025
8d040ad
MNMS-462 Refactor: 예매 디테일 내역 조회 authentication name 추가
19013na Sep 3, 2025
befbaeb
MNMS-462 Feat: 양도자 양도 가능 티켓 조회 기능 추가
19013na Sep 3, 2025
23b619d
Merge pull request #25 from 3-mnms/refactor/MNMS-462
19013na Sep 3, 2025
df64a45
MNMS-575 feat: prod 용 설정 제작
rookies-dogun Sep 3, 2025
2bdf190
Merge branch 'develop' of https://github.com/3-mnms/booking into develop
rookies-dogun Sep 3, 2025
e7c3686
MNMS-462 Feat: 예매 완료 시 예매자 이메일로 예매 정보 전송
19013na Sep 4, 2025
6903db9
MNMS-462 Refactor: host, ticket, errorcode 수정
19013na Sep 4, 2025
037026f
MNMS-462 Refactor: booking email 전송 메소드 리팩토링
19013na Sep 4, 2025
363ef92
MNMS-462 Refactor: BookingCommandService 리팩토링
19013na Sep 4, 2025
33d91a5
Merge pull request #26 from 3-mnms/refactor/MNMS-462
19013na Sep 4, 2025
73e793f
hotfix: 긴급 패치 - application-prod 추가
19013na Sep 4, 2025
ecbfc4c
hotfix: 긴급 패치 - payment kafka 코드 변경 및 application-dev, prod 수정
19013na Sep 4, 2025
11f53de
MNMS-524 Fix: develop merge and 통계 예매 완료 상태인 예매자만 조회되도록 수정
CECHERI Sep 5, 2025
8ba73e6
Merge pull request #27 from 3-mnms/feature/MNMS-524
CECHERI Sep 5, 2025
57128fc
hotfix: 긴급 패치 - email 수신자 수정
19013na Sep 5, 2025
af51167
Merge branch 'develop' of https://github.com/3-mnms/booking into develop
19013na Sep 5, 2025
88271ed
feat(booking): expose Prometheus metrics for scraping
V4N1LLA Sep 5, 2025
d513d65
feat: tomcat 및 빠진 의존성 추가
V4N1LLA Sep 5, 2025
6c89ff5
feat: tomcat 및 빠진 의존성 추가
V4N1LLA Sep 5, 2025
f27c9bc
chore: booking redis redis host 매칭 이름 변경
V4N1LLA Sep 5, 2025
3b270f5
hotfix: 긴급 패치 - applicaton-dev,prod 수정 완료
19013na Sep 6, 2025
ddbf799
MNMS-620 featix: ㅠbooking 원복
rookies-dogun Sep 7, 2025
6adf6f6
hotfix: websocket gateway와 서버 cors 중복 헤더 문제로 서버에서 cors 비활성화
19013na Sep 9, 2025
46a60f2
hotfix: websocket 경로 auth 허용
19013na Sep 9, 2025
b7bc15b
hotfix: websocket origin 허용
19013na Sep 10, 2025
6f65499
MNMS-632 Chore: swagger 에러 메시지 추가 완료
19013na Sep 10, 2025
8e7cc2d
MNMS-632 Fix: Swagger 오류 메시지 수정 및 중복 예매 진행 방지
19013na Sep 11, 2025
09cd483
MNMS-632 Fix: ticket_pick 예매때 조회 반환
19013na Sep 11, 2025
cc2457b
MNMS-632 Fix: 양도 거절 시 조건 수정
19013na Sep 11, 2025
ccbd789
MNMS-632 Fix/Feat: 예매 가예매 자동 삭제 스케줄러 -> Redis로 변경
19013na Sep 11, 2025
5b5ca53
MNMS-632 Chore: 주석 정리
19013na Sep 12, 2025
97aeeae
Merge pull request #28 from 3-mnms/fix/MNMS-632
19013na Sep 12, 2025
281b923
swagger 추가
rookies-dogun Sep 12, 2025
a423543
header 추가
rookies-dogun Sep 12, 2025
e745296
he 중복 빌드 부분 제거
rookies-dogun Sep 12, 2025
a7e0943
빌드 시간 단축
rookies-dogun Sep 12, 2025
41fe695
swagger ì„docker ¤정
rookies-dogun Sep 12, 2025
7907dd7
header 추가
rookies-dogun Sep 12, 2025
b5df21f
ws 오류 해결
rookies-dogun Sep 12, 2025
d688045
Fix: 예매자 명단 ADMIN도 조회 가능하게 버그 수정, api/host/list jwt인증 없이도 가능하게
CECHERI Sep 12, 2025
2b53de3
MNMS-632 Merge & Chore: 가예매 bookingUsersKey 삭제 완료
19013na Sep 12, 2025
3f53ce2
MNMS-632 Chore: websocket bean 수정
19013na Sep 12, 2025
c1c0136
MNMS-632 Chore: websocket 주석 삭제
19013na Sep 12, 2025
7845597
Merge pull request #29 from 3-mnms/fix/MNMS-632
19013na Sep 12, 2025
92ee68a
MNMS-632 Chore: websocket userId 추가
19013na Sep 12, 2025
3b0e9b0
Merge pull request #30 from 3-mnms/fix/MNMS-632
19013na Sep 12, 2025
f565e8f
MNMS-632 Fix: 이벤트 중복 구독 삭제 및 이전 수정 복구
19013na Sep 12, 2025
78ed9b6
MNMS-632 Chore: Swagger api만 변경
19013na Sep 12, 2025
58aba42
Merge pull request #31 from 3-mnms/fix/MNMS-632
19013na Sep 12, 2025
e45317f
MNMS-632 Fix: ttlMinutes 변경
19013na Sep 12, 2025
693c0d7
Merge pull request #32 from 3-mnms/fix/MNMS-632
19013na Sep 12, 2025
3f6804f
MNMS-679 Bug: 공연 별 예매자 통계 비 로그인자는 조회 실패 오류 수정
CECHERI Sep 15, 2025
6f6b920
Merge pull request #33 from 3-mnms/feature/MNMS-678
CECHERI Sep 15, 2025
13ef644
MNMS-632 Fix: 대기열
19013na Sep 15, 2025
ec74efd
Merge pull request #34 from 3-mnms/fix/MNMS-632
19013na Sep 15, 2025
93f5246
MNMS-581 Fix: 예매 내역 없을 때 NOTFOUND에서 200 빈 리스트로 수정
19013na Sep 15, 2025
f8f728b
MNMS-581 Fix: QR 사용했을 때 양도 불가능 하도록 수정
19013na Sep 15, 2025
7219971
MNMS-581 Chore: QR 예외처리 순서만 변경
19013na Sep 15, 2025
1db97ac
MNMS-581 Fix: websocket 변경 사항 일부 복귀
19013na Sep 16, 2025
26857da
Merge pull request #35 from 3-mnms/fix/MNMS-581
19013na Sep 16, 2025
67953f3
MNMS-691 fix: 대기열 긴급 commit
19013na Sep 16, 2025
6350da1
MNMS-691 feat: add websocket
rookies-dogun Sep 16, 2025
0a7b4ae
MNMS-691 feat: websocket 오류 테스트 완
19013na Sep 16, 2025
9694494
Merge pull request #36 from 3-mnms/fix/MNMS-691
19013na Sep 16, 2025
91720a7
MNMS-691 fix: 삭제된 email 템플릿 추가
19013na Sep 16, 2025
b586d9e
Merge pull request #37 from 3-mnms/fix/MNMS-691
19013na Sep 16, 2025
28d8ec5
MNMS-691 Feat: websocket front -> back 통신 controller 작성
19013na Sep 17, 2025
5cbb205
Merge pull request #38 from 3-mnms/fix/MNMS-691
19013na Sep 17, 2025
d08a59d
MNMS-691 Fix: 가예매 상태 수정 및 websocket 삭제
19013na Sep 17, 2025
5f84cb9
Merge pull request #39 from 3-mnms/fix/MNMS-691
19013na Sep 17, 2025
e41467a
MNMS-598 Feat: Ticket reservation_date type 변경
19013na Sep 18, 2025
72ea19a
MNMS-598 Fix: 가족관계 증명서 공격 방지 및 지인 양도 금지 조건 추가
19013na Sep 18, 2025
bd3f706
MNMS-598 Fix: 지인 양도 요청 시, 예매 후 15분 제한 예외처리
19013na Sep 18, 2025
69fdbef
MNMS-598 Chore: 가예매 ttl 조정 및 주석 변경
19013na Sep 18, 2025
7a44088
Merge pull request #40 from 3-mnms/refactor/MNMS-598
19013na Sep 18, 2025
63517ee
application.properties 변수 추가
19013na Sep 19, 2025
277d488
hotfix: 예매 완료 후 email 전송 비동기 처리
19013na Sep 22, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 99 additions & 0 deletions .github/workflows/api-booking-docker-dispatch.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
name: "💰 api-booking – Docker Build & GitOps Dispatch"

on:
push:
branches: [ main, develop ]
workflow_dispatch: {}

permissions:
contents: read

concurrency:
group: api-booking-${{ github.ref_name }}
cancel-in-progress: true

env:
SERVICE: booking
IMAGE: ${{ secrets.DOCKER_USERNAME }}/api-booking
DEVOPS_REPO: 3-mnms/gitops-repo

jobs:
build-push:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-java@v3
with:
distribution: temurin
java-version: '17'

- run: chmod +x ./gradlew
- run: ./gradlew bootJar --no-daemon

- name: ⏱️ Tag
run: echo "TAG=v$(date -u +'%Y%m%d%H%M%S')" >> $GITHUB_ENV

- uses: docker/setup-buildx-action@v3

- uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}

- id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.IMAGE }}
tags: |
# 1) 타임스탬프 태그 (기본)
type=raw,value=${{ env.TAG }}
# 2) git sha 태그
type=sha
# 3) 고정 별칭
type=raw,value=v0.1
# 4) latest (main, develop 모두에서 발행)
type=raw,value=latest

- uses: docker/build-push-action@v5
with:
context: .
file: ./Dockerfile
push: true
platforms: linux/amd64,linux/arm64
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max

# develop → 한번만 디스패치 (두 타깃 동시)
- name: Dispatch to GitOps (develop-gke + develop-aws)
if: ${{ github.ref_name == 'develop' }}
uses: peter-evans/repository-dispatch@v3
with:
token: ${{ secrets.GH_PAT }}
repository: ${{ env.DEVOPS_REPO }}
event-type: image-updated
client-payload: |
{
"service": "${{ env.SERVICE }}",
"image": "${{ env.IMAGE }}",
"tag": "${{ env.TAG }}",
"targets": "develop-gke,develop-aws"
}

# main → prod
- name: Dispatch to GitOps (prod)
if: ${{ github.ref_name == 'main' }}
uses: peter-evans/repository-dispatch@v3
with:
token: ${{ secrets.GH_PAT }}
repository: ${{ env.DEVOPS_REPO }}
event-type: image-updated
client-payload: |
{
"service": "${{ env.SERVICE }}",
"image": "${{ env.IMAGE }}",
"tag": "${{ env.TAG }}",
"env": "prod"
}
17 changes: 17 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ bin/
out/
!**/src/main/**/out/
!**/src/test/**/out/
!**/logs/

### NetBeans ###
/nbproject/private/
Expand All @@ -35,3 +36,19 @@ out/

### VS Code ###
.vscode/


# 로그 파일
logs/
*.log
*.gz

# 힙 덤프 파일
*.hprof

# env
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
20 changes: 20 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Debian/Ubuntu 계열 JRE (amd64/arm64 모두 제공)
FROM eclipse-temurin:17-jre-jammy

# spring 사용자/그룹 생성 (Debian 표준 명령)
RUN groupadd -r spring \
&& useradd -r -g spring -d /home/spring -s /usr/sbin/nologin spring \
&& mkdir -p /app /home/spring

WORKDIR /app

# 빌드 산출물 복사 (권한도 함께 설정)
ARG JAR_FILE=build/libs/*.jar
COPY --chown=spring:spring ${JAR_FILE} /app/app.jar

# 비루트 실행
USER spring

EXPOSE 8080
ENV JAVA_OPTS="-XX:+UseContainerSupport -XX:MaxRAMPercentage=75"
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar /app/app.jar"]
70 changes: 67 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,76 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.kafka:spring-kafka'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.kafka:spring-kafka-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'


// security
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-resource-server'

// JWT
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'

// mariadb + h2
runtimeOnly 'org.mariadb.jdbc:mariadb-java-client'
runtimeOnly 'com.h2database:h2'

// mongodb
//implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'


// websocket
implementation 'org.springframework.boot:spring-boot-starter-websocket'

// redis
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'redis.clients:jedis' // 삭제 가능

// kaptcha
implementation 'com.github.penggle:kaptcha:2.3.2'

// Kafka
implementation 'org.springframework.kafka:spring-kafka'

// JSON 직렬화용
//implementation 'com.fasterxml.jackson.core:jackson-databind'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.19.2'
implementation 'org.springframework.boot:spring-boot-starter-json'
testImplementation 'org.springframework.kafka:spring-kafka-test'

// 역직렬화
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.15.2'

// QR 생성
implementation 'com.google.zxing:core:3.5.2'
implementation 'com.google.zxing:javase:3.5.2'

// swagger
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.5.0'

// WebClient 사용
implementation 'org.springframework.boot:spring-boot-starter-webflux'

// test
testImplementation 'it.ozimov:embedded-redis:0.7.3'

//Mail
implementation 'org.springframework.boot:spring-boot-starter-mail'

// prometheus
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'io.micrometer:micrometer-registry-prometheus'

// email retry
implementation 'org.springframework.retry:spring-retry'
implementation 'org.springframework.boot:spring-boot-starter-aop'
}

tasks.named('test') {
Expand Down
13 changes: 0 additions & 13 deletions src/main/java/com/mnms/booking/BookingApplication.java

This file was deleted.

17 changes: 17 additions & 0 deletions src/main/java/com/mnms/booking/TekcitApplication.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.mnms.booking;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.kafka.annotation.EnableKafka;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling
@EnableKafka
public class TekcitApplication {

public static void main(String[] args) {
SpringApplication.run(TekcitApplication.class, args);
}

}
26 changes: 26 additions & 0 deletions src/main/java/com/mnms/booking/config/AsyncConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.mnms.booking.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.retry.annotation.EnableRetry;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;

import java.util.concurrent.Executor;

@Configuration
@EnableAsync
@EnableRetry
public class AsyncConfig {

@Bean(name = "taskExecutor")
public Executor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5);
executor.setMaxPoolSize(10);
executor.setQueueCapacity(100);
executor.setThreadNamePrefix("Async-");
executor.initialize();
return executor;
}
}
29 changes: 29 additions & 0 deletions src/main/java/com/mnms/booking/config/CaptchaConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.mnms.booking.config;

import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;

@Configuration
public class CaptchaConfig {

@Bean
public DefaultKaptcha captchaProducer() {
DefaultKaptcha kaptcha = new DefaultKaptcha();
Properties properties = new Properties();
properties.setProperty("kaptcha.border", "no");
properties.setProperty("kaptcha.textproducer.font.color", "black");
properties.setProperty("kaptcha.image.width", "200");
properties.setProperty("kaptcha.image.height", "60");
properties.setProperty("kaptcha.textproducer.font.size", "50");
properties.setProperty("kaptcha.session.key", "captchaCode");
properties.setProperty("kaptcha.textproducer.char.length", "5");
properties.setProperty("kaptcha.textproducer.font.names", "Arial,Courier");
Config config = new Config(properties);
kaptcha.setConfig(config);
return kaptcha;
}
}
Loading