Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
841 commits
Select commit Hold shift + click to select a range
3dee256
feat: notify 과정 중 에러 발생 시 discord 알림 전송 구현
chominju02 Aug 2, 2025
cc25138
MOSU-153 refactor: 컨플릭트 해결
jbh010204 Jul 30, 2025
4b7806e
refactor: Update ExamApplication handling 처리에 status 포함하도록 변경
jbh010204 Aug 2, 2025
2ca4d8e
MOSU-153 refactor: 신청 조회시 신청 상태 구조 변경
jbh010204 Aug 2, 2025
904cfe2
Merge pull request #185 from mosu-dev/refactor/mosu-184
chominju02 Aug 2, 2025
2090494
refactor: databaseinitializer 수정
chominju02 Aug 2, 2025
ac6748f
feat: Update ArchivingOrchestratorCronConfig to change trigger schedu…
polyglot-k Aug 2, 2025
751d218
feat: Increase batch size in ApplicationFailureLogDomainArchiver from…
polyglot-k Aug 2, 2025
4e86554
feat: Schedule domain archivers with a 10-minute interval in Archivin…
polyglot-k Aug 2, 2025
66cf69b
feat: Filter out null values in ApplicationFailureLog batch processing
polyglot-k Aug 2, 2025
16acef7
feat: Update ApplicationFailureLogJpaRepositoryCustomImpl to use curr…
polyglot-k Aug 2, 2025
bc19157
feat: Refactor deleteAllUsingBatchWithExamApplications to use NamedPa…
polyglot-k Aug 2, 2025
5e698fd
Merge branch 'develop' of https://github.com/mosu-dev/mosu-server int…
polyglot-k Aug 2, 2025
4e3a8e2
feat: Add error handling and logging for batch archiving in Applicati…
polyglot-k Aug 2, 2025
39045f8
feat: Add null check and logging for domain archivers in ArchivingOrc…
polyglot-k Aug 2, 2025
606d7eb
feat: Implement graceful shutdown for ArchivingOrchestratorJob with @…
polyglot-k Aug 2, 2025
f236af4
Merge pull request #183 from mosu-dev/feature/cron
polyglot-k Aug 2, 2025
15ee2be
feat: Change Hibernate ddl-auto setting from create-drop to update in…
polyglot-k Aug 2, 2025
859c2d2
feat: Add LogCleanup interface for log data deletion based on date
polyglot-k Aug 2, 2025
8e7e130
feat: Add LogCleanupJob and trigger for periodic log cleanup
polyglot-k Aug 2, 2025
fde6d80
feat: Implement LogCleanupJob for periodic log cleanup of old logs
polyglot-k Aug 2, 2025
42ecbcd
feat: Prevent concurrent execution of ApplicationFailureLogDomainArch…
polyglot-k Aug 2, 2025
bc342c1
feat: Add ApplicationFailureLogCleanup for log deletion based on date
polyglot-k Aug 2, 2025
851ec3c
refactor: 환불 알림톡 관련 로그 추가
chominju02 Aug 2, 2025
4527196
refactor: 쿠키 보안 설정 주석 처리 및 SameSite 정책 변경
toothlessdev Aug 2, 2025
e41dc6c
fix: 쿠키 도메인 우회용 cors 설정
toothlessdev Aug 2, 2025
2e3c3a4
Merge pull request #188 from mosu-dev/fix#187
toothlessdev Aug 2, 2025
ab2cbc5
refactor: 쿠키 도메인 설정 주석 처리
toothlessdev Aug 2, 2025
d02c7b7
Merge pull request #189 from mosu-dev/fix#187
toothlessdev Aug 2, 2025
d702d47
fix: 쿠기 관련 설정 롤백
toothlessdev Aug 2, 2025
ed1927a
feat: Enhance notification handling in RefundTxEventListener with err…
polyglot-k Aug 3, 2025
f7f572d
feat: Improve refund processing logging in RefundService
polyglot-k Aug 3, 2025
c9aca8f
feat: Refactor query structure in RefundJpaRepository for improved re…
polyglot-k Aug 3, 2025
81d468c
feat: Enhance error handling in refund processing and clean up code s…
polyglot-k Aug 3, 2025
e709ea4
feat: Update refund status parsing to include 'DONE' state in CancelT…
polyglot-k Aug 3, 2025
6d81d60
feat: Update NotifyService to log successful notification sends and i…
polyglot-k Aug 3, 2025
11b83ce
feat: Update DiscordNotifier and NotifyService to improve error loggi…
polyglot-k Aug 3, 2025
b15ca6e
feat: Add documentation for DiscordNotifier component to clarify erro…
polyglot-k Aug 3, 2025
7484ac7
feat: Refactor repository interfaces to implement custom repository m…
polyglot-k Aug 3, 2025
27498a1
feat: Refactor ApplicationFailureLogDomainArchiver to remove custom r…
polyglot-k Aug 3, 2025
acba226
chore: Refactor repository package structure for improved organizatio…
polyglot-k Aug 3, 2025
385b328
feat: Add dev.mosuedu.com to CORS configuration in SecurityConfig and…
toothlessdev Aug 3, 2025
db0ef27
feat: Caffeine을 통한 IP rate limiting filter 구현
jbh010204 Aug 3, 2025
5ee29b1
MOSU-191 feat: Update rate limiting configuration in security-config.yml
jbh010204 Aug 3, 2025
33987f0
feat: Introduce AbstractFailureLogFactory to streamline failure log c…
polyglot-k Aug 3, 2025
55d4727
feat: Add PaymentFailureLogJpaEntity and PaymentFailureLogJpaReposito…
polyglot-k Aug 3, 2025
702f3c8
feat: Implement PaymentFailureLogJpaRepositoryImpl for batch saving p…
polyglot-k Aug 3, 2025
f8b242f
feat: Add custom repository interface and query for retrieving failed…
polyglot-k Aug 3, 2025
e7952e0
feat: Add RefundFailureLogDomainArchiver for archiving refund failure…
polyglot-k Aug 3, 2025
96446a6
feat: Implement PaymentJpaRepositoryImpl for batch deletion of paymen…
polyglot-k Aug 3, 2025
405cdbf
feat: Add PaymentFailureLogFactory for creating payment failure log e…
polyglot-k Aug 3, 2025
6f415c3
feat: Implement PaymentFailureLogDomainArchiver for archiving failed …
polyglot-k Aug 3, 2025
a78e525
feat: Add RefundFailureLogFactory for creating refund failure log ent…
polyglot-k Aug 3, 2025
c617537
feat: Add RefundFailureLogJpaEntity for refund failure logging
polyglot-k Aug 3, 2025
8ad6d96
MOSU-191 refactor: IpRateLimitingProperties vaildate 방식 변경
jbh010204 Aug 3, 2025
f8e60ce
MOSU-191 feat: client IP address 추출을 위한 IP 유틸구현
jbh010204 Aug 3, 2025
300ab07
MOSU-191 feat: Increment request counter before checking if IP is blo…
jbh010204 Aug 3, 2025
181db44
refactor: Move RefundFailureLogJpaEntity to the domain package
polyglot-k Aug 3, 2025
8d532f3
feat: Add RefundFailureLogJpaRepository and RefundFailureLogJpaReposi…
polyglot-k Aug 3, 2025
560108f
feat: Implement RefundFailureLogJpaRepositoryImpl for batch saving re…
polyglot-k Aug 3, 2025
1236db6
feat: Add RefundJpaRepositoryCustom interface and implement failed re…
polyglot-k Aug 3, 2025
1364ecd
feat: Implement RefundJpaRepositoryImpl for batch deletion of exam ap…
polyglot-k Aug 3, 2025
ee4c727
feat: Implement RefundFailureLogDomainArchiver for archiving failed r…
polyglot-k Aug 3, 2025
e8b018c
feat: Add method to delete payment failure logs older than a specifie…
polyglot-k Aug 3, 2025
9c736d4
feat: Refactor create method in PaymentFailureLogFactory to use Payme…
polyglot-k Aug 3, 2025
84e84dd
feat: Add transactional support to archive method in ApplicationFailu…
polyglot-k Aug 3, 2025
c029df5
feat: Add transactional support and disallow concurrent execution in …
polyglot-k Aug 3, 2025
ea945a1
feat: Implement PaymentFailureLogCleanup for deleting old payment fai…
polyglot-k Aug 3, 2025
246254a
feat: Implement RefundFailureLogCleanup for deleting old refund failu…
polyglot-k Aug 3, 2025
7714279
Merge pull request #192 from mosu-dev/feat/mosu-191
polyglot-k Aug 3, 2025
f70a138
Merge branch 'develop' of https://github.com/mosu-dev/mosu-server int…
polyglot-k Aug 3, 2025
e9515c8
feat: Add index on status and created_at columns in PaymentJpaEntity
polyglot-k Aug 3, 2025
d8b67ee
Merge pull request #193 from mosu-dev/feat/cron-2
polyglot-k Aug 3, 2025
6e74439
chore: Rename domain packages to include 'entity' for clarity
polyglot-k Aug 3, 2025
ede1fe5
chore: Update imports to include 'entity' in domain classes for consi…
polyglot-k Aug 3, 2025
24c926e
refactor: Rename 'util' package to 'support' for improved clarity and…
polyglot-k Aug 3, 2025
8d10873
fix: Change JOIN to RIGHT JOIN in ExamJpaRepository for correct data …
polyglot-k Aug 3, 2025
e3786b6
feat: Add ExamQuotaCacheInitializer to optimize initial cache loading
polyglot-k Aug 3, 2025
1bfb5d1
refactor: Simplify ExamQuotaCacheManager by removing CommandLineRunne…
polyglot-k Aug 3, 2025
0a8affc
feat: Add ExamQuotaLoadService to asynchronously load exam quotas and…
polyglot-k Aug 3, 2025
9b9f023
feat: Add CACHE_OPERATION_NOT_SUPPORTED error code for unsupported ca…
polyglot-k Aug 4, 2025
3f8ed46
feat: Add methods to count applications grouped by exam ID and retrie…
polyglot-k Aug 4, 2025
40ba56c
feat: Update ExamQuotaLoadService to filter out null values in load m…
polyglot-k Aug 4, 2025
bad7294
feat: Add OperationType enum for increment and decrement operations
polyglot-k Aug 4, 2025
c79bfed
feat: Add OperationType enum for increment and decrement operations
polyglot-k Aug 4, 2025
9e72062
feat: Refactor AtomicExamQuota operators to use OperationType enum fo…
polyglot-k Aug 4, 2025
4d9804f
feat: Improve formatting and readability in ExamQuotaAtomicOperationC…
polyglot-k Aug 4, 2025
223ec2e
Merge pull request #195 from mosu-dev/refactor/redis-failover
polyglot-k Aug 4, 2025
9213d02
feat: Add IP rate limiting configuration and enable flag
polyglot-k Aug 4, 2025
3cfd09c
feat: Add Docker CI configuration and Gradle caching
polyglot-k Aug 4, 2025
78514b0
feat: Add deployment script for blue-green deployment with health checks
polyglot-k Aug 4, 2025
831c157
MOSU-178 refactor: ErrorCode 토큰 관련 에러 명칭 변경
jbh010204 Aug 4, 2025
a4656c6
MOSU-178 refactor: plusInfo 암호화를 위한 EncodeUtil 수정
jbh010204 Aug 4, 2025
4d354ca
MOSU-178 refactor: SignUpToken -> Token으로 명칭 변경
jbh010204 Aug 4, 2025
109d13d
MOSU-178 refacotor: 비밀번호 변경 API @UserID 어노테이션 제거
jbh010204 Aug 4, 2025
a087699
MOSU-178 refacotor: Rename validateSignUpToken to validateToken and u…
jbh010204 Aug 4, 2025
314c964
MOSU-178 refacotor: Update KmcUserInfo to include KmcPlusInfo and mod…
jbh010204 Aug 4, 2025
453b795
MOSU-178 refactor: Rename SignUpToken to Token and update related ser…
jbh010204 Aug 4, 2025
066aaca
MOSU-178 refactor: Update gender parsing to return Korean labels
jbh010204 Aug 4, 2025
fd4a957
MOSU-178 feat: Implement KMC token processing and user validation for…
jbh010204 Aug 4, 2025
d685d6c
feat: Add step to clone external KMC jar repository into libs directory
jbh010204 Aug 4, 2025
b09d71a
rafactor: 리뷰내용반영
jbh010204 Aug 4, 2025
bd12aa0
MOSU-178 refactor: 비밀번호 찾기 기능 변경
jbh010204 Aug 4, 2025
c9194e0
MOSU-178 feat: @PhoneNumber로 전화번호 매핑하도록 구현
jbh010204 Aug 5, 2025
f6e5bfb
MOSU-178 refactor: 비밀번호 변경시 전화번호로만 가능하도록 변경
jbh010204 Aug 5, 2025
8f36d92
MOSU-178 refactor: 비밀번호 변경 리팩토링
jbh010204 Aug 5, 2025
caa1f2a
MOSU-178 fix: phoneNumber resolver 값 null 가져오는 문제 해결
jbh010204 Aug 5, 2025
d9cb3bf
Merge pull request #200 from mosu-dev/feat/mosu-178
jbh010204 Aug 5, 2025
8ec8313
fix: resolver MvcConfig에 적용
jbh010204 Aug 5, 2025
020686e
feat: Update AccessTokenFilter to allow additional static resource paths
polyglot-k Aug 5, 2025
52d3f9f
feat: Add BankCode enum for managing bank information
polyglot-k Aug 5, 2025
c122ce6
feat: Add CreateVirtualAccountRequest and CreateVirtualAccountRespons…
polyglot-k Aug 5, 2025
161f89d
feat: Add INVALID_VIRTUAL_ACCOUNT_DEPOSIT_EVENT error code for handli…
polyglot-k Aug 5, 2025
4284227
feat: Update TossPaymentClient to use path segments for payment confi…
polyglot-k Aug 5, 2025
b3b1709
feat: Add TossVirtualAccountClient for creating virtual accounts via …
polyglot-k Aug 5, 2025
302ae25
feat: Add TossVirtualAccountPayload record for handling virtual accou…
polyglot-k Aug 5, 2025
dc1fce3
feat: Add VirtualAccountResponse record for handling virtual account …
polyglot-k Aug 5, 2025
ce9b11d
feat: Add VirtualAccountOrderIdGenerator for generating unique virtua…
polyglot-k Aug 5, 2025
bbf5e9c
feat: Implement VirtualAccountService for creating virtual accounts a…
polyglot-k Aug 5, 2025
dc6cfd9
feat: Add VirtualAccountController for managing virtual account creat…
polyglot-k Aug 5, 2025
d8c3fa5
feat: Add VirtualAccountCallbackListener and VirtualAccountCallbackSe…
polyglot-k Aug 5, 2025
e7eb43f
feat: Add DepositSuccessEvent and DepositFailureEvent for deposit eve…
polyglot-k Aug 5, 2025
fb954c9
feat: Add DepositEvent and DepositEventRequest for deposit event hand…
polyglot-k Aug 5, 2025
0dd3417
feat: Add error codes for virtual account deposit event and creation …
polyglot-k Aug 5, 2025
b1dd9c3
feat: Enhance virtual account creation with error handling for failures
polyglot-k Aug 5, 2025
8bf0ec8
feat: Update application configuration for Thymeleaf and secure secre…
polyglot-k Aug 5, 2025
74fb11e
feat: Change response status to CREATED for successful virtual accoun…
polyglot-k Aug 5, 2025
8e54f9a
feat: Update sequence generation to ensure non-negative values in Vir…
polyglot-k Aug 5, 2025
adef71f
Merge branch 'develop' of https://github.com/mosu-dev/mosu-server int…
polyglot-k Aug 5, 2025
6e06ea9
Merge pull request #202 from mosu-dev/feat/deposit
polyglot-k Aug 5, 2025
5135a87
chore: Refactor payment DTOs to use 'toss' package for better organiz…
polyglot-k Aug 5, 2025
649c952
MOSU-204 rename: AccessTokenFilter -> TokenFilter로 변경
wlgns12370 Aug 5, 2025
01286ad
MOSU-204 feat: Whitelist 구현
wlgns12370 Aug 5, 2025
444c446
MOSU-204 feat: 메서드에 따른 토큰 검증 절차 변경
wlgns12370 Aug 5, 2025
aa773ab
MOSU-207 fix: Faq userId 추출해서 사용하도록 변경
wlgns12370 Aug 5, 2025
a6d4237
MOSU-207 fix: GET으로 정적 리소스 조회 설정
wlgns12370 Aug 5, 2025
d6cfa25
Merge pull request #206 from mosu-dev/feature/mosu-204
wlgns12370 Aug 5, 2025
8d3c872
Merge pull request #208 from mosu-dev/fix/mosu-207
wlgns12370 Aug 5, 2025
2b0d650
feat: Add DepositEventHandler interface for handling deposit events
polyglot-k Aug 6, 2025
a1f961a
feat: Enhance DepositEvent classes with orderId and secret fields
polyglot-k Aug 6, 2025
31c4ac8
feat: Include orderId and secret in DepositSuccessEvent and DepositFa…
polyglot-k Aug 6, 2025
4c09da3
feat: Implement DepositSuccessEventHandler and DepositFailureEventHan…
polyglot-k Aug 6, 2025
bdaf10e
feat: Integrate DepositSuccessEventHandler and DepositFailureEventHan…
polyglot-k Aug 6, 2025
2f4c769
feat: Add MailTemplatePath class for email template constants
polyglot-k Aug 6, 2025
8ec6d08
feat: Add SubjectFormat class for deposit success email subject const…
polyglot-k Aug 6, 2025
bdb6533
feat: Add VirtualAccountLogJpaEntity and VirtualAccountLogJpaReposito…
polyglot-k Aug 6, 2025
570cb22
feat: Add asynchronous logging of virtual account creation events
polyglot-k Aug 6, 2025
444d4ef
feat: Implement MailNotifier for asynchronous email notifications on …
polyglot-k Aug 6, 2025
361b8cf
feat: Add MailConfig for configuring JavaMailSender with SMTP properties
polyglot-k Aug 6, 2025
6f235e6
feat: Add error code for missing virtual account log
polyglot-k Aug 6, 2025
a66e0c7
feat: Add DepositSuccessMailRequest for email notification context
polyglot-k Aug 6, 2025
dadfd4d
feat: Add Thymeleaf and Spring Mail dependencies to build.gradle
polyglot-k Aug 6, 2025
0d3ac11
feat: Enhance DepositEvent with createdAt field and formatted date me…
polyglot-k Aug 6, 2025
c25dd7c
feat: Update DepositFailureEvent to include createdAt parameter
polyglot-k Aug 6, 2025
16cce81
feat: Update DepositFailureEvent to include createdAt parameter
polyglot-k Aug 6, 2025
d38d86d
feat: Add WAITING status to DepositStatus enum
polyglot-k Aug 6, 2025
a03792d
feat: Update DepositSuccessEvent to include createdAt parameter
polyglot-k Aug 6, 2025
7cc9f27
feat: Enhance DepositSuccessEventHandler to handle deposit success no…
polyglot-k Aug 6, 2025
4353404
feat: Configure mail settings in application.yml for SMTP integration
polyglot-k Aug 6, 2025
cba4b6d
feat: Add deposit completion notification template in deposit-complet…
polyglot-k Aug 6, 2025
ad774e9
feat: Remove mail sending dependency from build.gradle
polyglot-k Aug 6, 2025
06ecccb
feat: Add transactional and asynchronous handling to DepositFailureEv…
polyglot-k Aug 6, 2025
e804874
feat: Refactor DepositFailureEventHandler to use VirtualAccountLogSer…
polyglot-k Aug 6, 2025
3877438
feat: Refactor DepositSuccessEventHandler to use VirtualAccountLogSer…
polyglot-k Aug 6, 2025
8a0b8d8
feat: Add VirtualAccountLogService for managing virtual account logs …
polyglot-k Aug 6, 2025
22cfa9f
feat: Refactor VirtualAccountService to use VirtualAccountLogService …
polyglot-k Aug 6, 2025
995d120
feat: Remove unused Mosu mail configuration from application.yml
polyglot-k Aug 6, 2025
3fc1ffe
feat: Refactor MailConfig to use MailProperties for configuration man…
polyglot-k Aug 6, 2025
2e5770d
Merge pull request #209 from mosu-dev/refactor/virtual
polyglot-k Aug 6, 2025
38bca0c
feat: Remove unused Thymeleaf configuration and add logging for depos…
polyglot-k Aug 6, 2025
725ce01
feat: Update logging level for scheduling in ArchivingOrchestratorJob…
polyglot-k Aug 6, 2025
d28a4f8
feat: Comment out alternative cron schedule for starvation cleanup job
polyglot-k Aug 6, 2025
ca8a8c8
feat: Add logging for the number of failed refunds being archived
polyglot-k Aug 6, 2025
798d551
feat: Implement retry mechanism for email sending in MailNotifier
polyglot-k Aug 6, 2025
5252dcf
feat: Update core pool size for ScheduledExecutorService in Archiving…
polyglot-k Aug 6, 2025
413dd51
MOSU-213 refactor: Filter 하드코딩 경로 AuthConstants로 캡슐화
wlgns12370 Aug 6, 2025
b9b5fce
MOSU-213 refactor: RunTime 생성자 호출 시 에러를 잡아주는 @UtilityClass 적용
wlgns12370 Aug 6, 2025
1d226b4
MOSU docs: 부하 테스트 및 성능 분석시 문서화를 위한 md파일 추가
wlgns12370 Aug 6, 2025
d5a2acb
MOSU-213 fix: Util @Component 제거
wlgns12370 Aug 6, 2025
b2ab5e3
MOSU-213 refactor: 불필요한 log 제거
wlgns12370 Aug 6, 2025
e2f14ef
feat: Refactor ApplicationNotifyRequest to use LunaNotification DTOs
polyglot-k Aug 6, 2025
0cabb95
feat: Update cron schedule for starvation cleanup job
polyglot-k Aug 6, 2025
bdbeff6
feat: Refactor DepositSuccessEventHandler to use updated mail request…
polyglot-k Aug 6, 2025
cc9c6ab
feat: Refactor DepositSuccessMailRequest to implement MailRequest int…
polyglot-k Aug 6, 2025
0cce2b7
feat: Add DiscordExceptionNotifyEventRequest for structured exception…
polyglot-k Aug 6, 2025
202c606
feat: Implement NotifyClientAdapter in DiscordNotifier for structured…
polyglot-k Aug 6, 2025
80abfd3
feat: Refactor notification request classes to implement LunaNotifica…
polyglot-k Aug 6, 2025
272c3e9
feat: Refactor notification classes to implement Luna-specific interf…
polyglot-k Aug 6, 2025
736099d
feat: Refactor notification classes to implement Luna-specific DTOs a…
polyglot-k Aug 6, 2025
2d0c570
feat: Rename NotificationVariable to LunaNotificationVariable and upd…
polyglot-k Aug 6, 2025
e4e157d
feat: Rename notification DTOs and update package structure to Luna-s…
polyglot-k Aug 6, 2025
0478f06
feat: Refactor MailNotifier to use a generic MailRequest interface an…
polyglot-k Aug 6, 2025
9e9f3a8
feat: Rename SubjectFormat to MailSubjectFormat for clarity in email …
polyglot-k Aug 6, 2025
f281720
feat: Update NotifyClientAdapter to use a generic type for request ha…
polyglot-k Aug 6, 2025
89c391b
feat: Update NotifyEventListener to use LunaNotificationEvent for imp…
polyglot-k Aug 6, 2025
81fa41d
feat: Rename NotifyEventPublisher package and update notification eve…
polyglot-k Aug 6, 2025
d1af85f
feat: Update NotifySender to use LunaNotificationEvent for consistenc…
polyglot-k Aug 6, 2025
e6fede0
feat: Update NotifyStrategyMapping to use LunaNotificationStatus for …
polyglot-k Aug 6, 2025
1738fa8
feat: Update NotifySenderResolver to use LunaNotificationStatus and L…
polyglot-k Aug 6, 2025
5832b36
feat: Update NotifyService to use LunaNotificationEvent and LunaNotif…
polyglot-k Aug 6, 2025
498270e
feat: Rename NotifyTemplateGenerator package and update notification …
polyglot-k Aug 6, 2025
2db93d5
MOSU-213 refactor: 비밀번호 요청 log 제거
wlgns12370 Aug 6, 2025
c54f90f
feat: Update ArchivingOrchestratorCronConfig to adjust cron schedule …
polyglot-k Aug 6, 2025
f558c3a
feat: Remove unused MailSubjectFormat import from DepositSuccessEvent…
polyglot-k Aug 6, 2025
424c3dd
feat: Update DepositSuccessMailRequest to include customer name in su…
polyglot-k Aug 6, 2025
48ee934
feat: Handle null cause in DiscordExceptionNotifyEventRequest for imp…
polyglot-k Aug 6, 2025
a5e24c4
Merge pull request #215 from mosu-dev/refactor/enhanced-notify
polyglot-k Aug 6, 2025
34aa232
Merge pull request #214 from mosu-dev/feature/mosu-213
wlgns12370 Aug 6, 2025
60aa005
MOSU-216 refactor: 불필요한 OAuth2 로깅 제거
wlgns12370 Aug 6, 2025
88f056e
MOSU-216 feat: 카카오 심사 성공에 따른 필드 추가
wlgns12370 Aug 6, 2025
6442797
MOSU-216 refactor: KmcTokenProcessingFilter 불필요한 로깅 제거
wlgns12370 Aug 6, 2025
3451787
feat: Add APPLICATION_GUEST endpoint to Whitelist for guest access
polyglot-k Aug 6, 2025
217cdd0
feat: Refactor VirtualAccountService to use CreateVirtualAccountProce…
polyglot-k Aug 6, 2025
c0709fa
feat: Add applicationId parameter to saveVirtualAccountLog method in …
polyglot-k Aug 6, 2025
ed80ced
feat: Add applicationId field to VirtualAccountLogJpaEntity for enhan…
polyglot-k Aug 6, 2025
f513310
feat: Update import statements in VirtualAccountCallbackService for b…
polyglot-k Aug 6, 2025
2fb1ce3
feat: Add DepositEventMapper and DepositEventPublisher for handling d…
polyglot-k Aug 6, 2025
9c5d115
feat: Rename DepositEventHandler package for improved clarity
polyglot-k Aug 6, 2025
587cd2b
feat: Add applyAsGuest endpoint for guest application submissions
polyglot-k Aug 6, 2025
e6dfdf6
feat: Add ApplicationGuestRequest for guest application submissions a…
polyglot-k Aug 6, 2025
044c01b
feat: Implement applyByGuest method for guest application submissions…
polyglot-k Aug 6, 2025
cd4f107
feat: Add USER_SAVE_FAILED error code for user save failures
polyglot-k Aug 6, 2025
f10ba41
feat: Rename DepositSuccessEventHandler package for improved organiza…
polyglot-k Aug 6, 2025
54fc413
feat: Implement CreateVirtualAccountProcessor for virtual account cre…
polyglot-k Aug 6, 2025
88e13c2
feat: Add ExamApplicationAmountCalculator and update application logi…
polyglot-k Aug 6, 2025
c0a3260
feat: Rename DepositFailureEventHandler package and enhance event han…
polyglot-k Aug 6, 2025
e168723
feat: Add ExamApplicationAmountCalculator for calculating exam applic…
polyglot-k Aug 6, 2025
60e58fc
MOSU-216 feat: kakao 응답 정보 에러 처리
wlgns12370 Aug 6, 2025
8b444be
feat: Add query to find ExamApplication by order ID with virtual acco…
polyglot-k Aug 6, 2025
4076fc0
feat: Update RegisterApplicationCommand to support multiple ExamAppli…
polyglot-k Aug 6, 2025
2b7a21c
feat: Add saveUser method to UserService for user persistence
polyglot-k Aug 6, 2025
9c8a924
feat: Update TossVirtualAccountPayload to accept dynamic amount for v…
polyglot-k Aug 6, 2025
5ac5c16
Merge pull request #219 from mosu-dev/feature/mosu-216
wlgns12370 Aug 6, 2025
f208bfc
fix: Refactor lunch amount calculation to use Boolean.TRUE for clarity
polyglot-k Aug 6, 2025
cbc87b1
Merge branch 'develop' of https://github.com/mosu-dev/mosu-server int…
polyglot-k Aug 6, 2025
cd4cf35
feat: Refactor applyByGuest method to improve application handling flow
polyglot-k Aug 6, 2025
947f2b1
feat: Add error handling for virtual account creation in CreateVirtua…
polyglot-k Aug 6, 2025
e461efd
Merge pull request #221 from mosu-dev/feat/guest-application
polyglot-k Aug 6, 2025
f3f875a
feat: ExamStatus 추가 및 시험 마감 기능 추가
chominju02 Aug 6, 2025
daf37a0
refactor: 마감된 시험인지 검증하는 로직 수정
chominju02 Aug 6, 2025
d48fc68
refactor: dealindline이 지난 시험은 최초 발견 시 lazy하게 close 처리
chominju02 Aug 6, 2025
b7cc906
mosu-218 refactor: 문의 관리자 권한들은 관리자 controller 이관
jbh010204 Aug 6, 2025
8a00199
refactor: 검증로직 순서 변경
chominju02 Aug 6, 2025
c04c57e
mosu-218 feat: 내 문의글 조회 기능 구현
jbh010204 Aug 6, 2025
3574e1d
Merge pull request #222 from mosu-dev/feature/mosu-205
chominju02 Aug 6, 2025
e46ced0
mosu-218 refactor: 리뷰 반영
jbh010204 Aug 6, 2025
adb7ba6
MOSU-218 내 문의글 조회 내역 기능 구현
jbh010204 Aug 6, 2025
7100d70
fix: Correct SQL query to delete from refund table instead of exam_ap…
polyglot-k Aug 7, 2025
b9b135f
fix: Update saveAllUsingBatch method to use setObject for application…
polyglot-k Aug 7, 2025
29f3bcd
fix: Update deployment conditions in docker-depoly.yaml and add branc…
polyglot-k Aug 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Binary file added .DS_Store
Binary file not shown.
97 changes: 97 additions & 0 deletions .github/ISSUE_TEMPLATE/성능 분석.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
---
name: 성능 테스트 및 개선 리포트
about: 성능 병목 테스트 및 개선 과정을 기록합니다.
title: "[📈 성능 개선] OOO 기능의 부하 테스트 및 최적화"
labels: "성능개선, 부하테스트, 최적화"
assignees: ""
---

## 🎯 테스트 시나리오 정의

> 어떤 기능에 대해 어떤 상황을 가정하여 성능 테스트를 진행할 것인지 구체적으로 작성합니다.

- **테스트 대상 API**: `[HTTP Method] /api/v1/...`
- **핵심 로직**: (예: 게시글 목록 조회, 복잡한 조인 쿼리 포함)
- **부하 테스트 도구**: (예: nGrinder, JMeter, k6)
- **테스트 환경**: (예: 로컬 MacBook Pro (M1, 16GB), DB는 Docker, 애플리케이션 메모리 1GB)

---

## 📊 1차 성능 측정 결과 (개선 전)

> 개선 작업을 진행하기 전의 성능 지표를 기록합니다. (Before)

| 지표 (Metric) | 측정 값 (Value) | 단위 (Unit) |
|:----------------------------|:-------------|:----------|
| **VUser (가상 사용자 수)** | | 명 |
| **TPS (초당 트랜잭션 수)** | | tps |
| **평균 응답 시간 (Avg. Latency)** | | ms |
| **최대 응답 시간 (Max. Latency)** | | ms |
| **에러율 (Error Rate)** | | % |

**[nGrinder, JMeter 등 결과 그래프 스크린샷을 여기에 첨부해 주세요]**


---

## 🧐 병목 지점 분석 및 가설

> 1차 측정 결과를 바탕으로 어떤 부분에서 병목이 발생하고 있는지 분석하고, 원인에 대한 가설을 세웁니다.

**가설**:
(예: N+1 쿼리 문제로 인해 DB 조회 시간이 과도하게 소요될 것으로 추정됨.)

**근거**:

- [ ] APM(Pinpoint, Sentry 등)에서 특정 메서드 지연 확인
- [ ] 느린 쿼리 로그(Slow Query Log)에서 해당 쿼리 발견
- [ ] 높은 CPU / Memory 사용량 확인 (구간: )
- [ ] 코드 리뷰 (비효율적인 로직, 불필요한 API 호출 등)
- **기타**:

---

## 🛠️ 개선 전략 및 실행

> 위 가설을 바탕으로 어떤 방식으로 문제를 해결할 것인지 구체적인 전략을 작성하고 실행합니다.

**전략**:
(예: JPA의 Fetch Join을 사용하여 N+1 문제를 해결. 또는, 자주 변경되지 않는 데이터에 캐싱(Redis, Caffeine)을 적용.)

**관련 PR**:

- #(PR 번호)

---

## 📊 2차 성능 측정 결과 (개선 후)

> 개선 작업 후, 1차 측정과 동일한 조건으로 다시 성능을 측정하여 기록합니다. (After)

| 지표 (Metric) | 측정 값 (Value) | 단위 (Unit) |
|:----------------------------|:-------------|:----------|
| **VUser (가상 사용자 수)** | | 명 |
| **TPS (초당 트랜잭션 수)** | | tps |
| **평균 응답 시간 (Avg. Latency)** | | ms |
| **최대 응답 시간 (Max. Latency)** | | ms |
| **에러율 (Error Rate)** | | % |

**[개선 후 결과 그래프 스크린샷을 여기에 첨부해 주세요]**


---

## ✨ 최종 결론

> 개선 전/후 지표를 비교하여 개선 효과를 정량적으로 요약하고, 결론을 작성합니다.

**개선 효과 요약**:

- **TPS**: `(개선 전 값)` -> `(개선 후 값)` **( 약 O 배 증가 )**
- **평균 응답 시간**: `(개선 전 값)` -> `(개선 후 값)` **( 약 O % 감소 )**

**결론**:
(예: Fetch Join 적용으로 N+1 문제를 해결하여 DB I/O를 크게 줄였고, 그 결과 TPS는 2.5배 증가, 평균 응답 시간은 60% 감소하는 효과를 확인했습니다.)

**추가 논의 사항**:
(예: 향후 트래픽 증가 시 스케일 아웃 전략 필요, 캐시 동기화 문제에 대한 추가 논의 필요 등)
33 changes: 22 additions & 11 deletions .github/workflows/docker-ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,9 @@ name: Docker CI/CD

on:
pull_request:
branches:
- 'develop'
branches: [ develop ]
push:
branches:
- 'develop'

branches: [ develop ]
workflow_dispatch:

jobs:
Expand All @@ -24,8 +21,24 @@ jobs:
java-version: '21'
distribution: 'temurin'

- name: Cache Gradle files
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
gradle-${{ runner.os }}-

- name: Clone external repo with jar into libs/
run: |
mkdir -p libs
git clone https://x-access-token:${{ secrets.GH_PAT }}@github.com/mosu-dev/mosu-kmc-jar.git temp-jar
cp temp-jar/*.jar libs/

- name: Build with Gradle
run: ./gradlew clean build -x test
run: ./gradlew build -x test

- name: Log in to DockerHub
uses: docker/login-action@v3
Expand All @@ -34,9 +47,7 @@ jobs:
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Build Docker image
run: |
docker build -t kangtaehyun1107/mosu-server:${{ github.sha }} .

run: docker build -t kangtaehyun1107/mosu-server:${{ github.sha }} .
working-directory:
- name: Push Docker image
run: |
docker push kangtaehyun1107/mosu-server:${{ github.sha }}
run: docker push kangtaehyun1107/mosu-server:${{ github.sha }}
11 changes: 5 additions & 6 deletions .github/workflows/docker-depoly.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,9 @@ jobs:
script: |
cd /home/ubuntu/mosu

echo "${{ secrets.env }}" > .env.prod
echo "${{ secrets.ENV_BLUE }}" > .env.blue
echo "${{ secrets.ENV_GREEN }}" > .env.green

echo "APP_IMAGE_VERSION=${{ github.sha }}" >> .env.prod

sudo docker compose pull
sudo docker compose down
sudo docker compose -f docker-compose.yml --env-file .env.prod up -d --build
echo "APP_IMAGE_VERSION=${{ github.sha }}" >> .env.blue
echo "APP_IMAGE_VERSION=${{ github.sha }}" >> .env.green
./deploy.sh
38 changes: 38 additions & 0 deletions .github/workflows/docker-pr-build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Docker PR build

on:
pull_request:
branches: [ develop ]

jobs:
build-and-deploy:
runs-on: ubuntu-latest

steps:
- name: Checkout source
uses: actions/checkout@v3

- name: Set up JDK 21
uses: actions/setup-java@v3
with:
java-version: '21'
distribution: 'temurin'

- name: Cache Gradle files
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
gradle-${{ runner.os }}-

- name: Clone external repo with jar into libs/
run: |
mkdir -p libs
git clone https://x-access-token:${{ secrets.GH_PAT }}@github.com/mosu-dev/mosu-kmc-jar.git temp-jar
cp temp-jar/*.jar libs/

- name: Build with Gradle
run: ./gradlew build -x test
24 changes: 24 additions & 0 deletions .github/workflows/self-depoly.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Docker CI/CD - Deploy

on:
workflow_dispatch:
branches:
- test
jobs:
deploy:
runs-on: self-hosted

steps:
- name: Deploy via SSH
run: |
cd ~/mosu-server

echo "${{ secrets.TEST_ENV_BLUE }}" > .env.blue
echo "${{ secrets.TEST_ENV_GREEN }}" > .env.green
echo "APP_IMAGE_VERSION=${{ github.sha }}" >> .env.blue
echo "APP_IMAGE_VERSION=${{ github.sha }}" >> .env.green
sudo docker stop $(sudo docker ps -aq) || true
sudo docker rm $(sudo docker ps -aq) || true
echo "Stopping all containers..."

sudo ./deploy.sh
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/
src/main/generated

### STS ###
.apt_generated
Expand Down Expand Up @@ -37,4 +38,8 @@ out/
.vscode/

docker-compose/.env
docker-compose/.env.local
docker-compose/.env.local
docker-compose/.env.prod

/logs/**
/libs/**
8 changes: 4 additions & 4 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM openjdk:21-jdk
ARG JAR_FILE=build/libs/*.jar
ADD ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-Duser.timezone=GMT+9", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar"]
FROM amazoncorretto:21
COPY build/libs/*SNAPSHOT.war app.war

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The pattern *SNAPSHOT.war is brittle as it will fail if you build a release version (which typically doesn't contain 'SNAPSHOT' in its name). Consider using a more generic pattern like *.war if you are sure there will be only one WAR file. An even more robust approach would be to rename the artifact to a fixed name (e.g., app.war) in your build.gradle file.

COPY build/libs/*.war app.war


ENTRYPOINT ["java", "-Duser.timezone=GMT+9", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.war"]
42 changes: 40 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ plugins {
id 'java'
id 'org.springframework.boot' version '3.4.5'
id 'io.spring.dependency-management' version '1.1.7'
id 'war'
}

group = 'life.mosu'
Expand All @@ -24,7 +25,7 @@ repositories {
}

dependencies {

implementation fileTree(dir: 'libs', include: ['*.jar'])

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Including JARs from a local libs directory is generally discouraged. It makes dependency management harder and the build less reproducible. It's better to publish these artifacts to a Maven repository (like Nexus, Artifactory, or even a local one) and declare them as regular dependencies.

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-validation'
Expand All @@ -38,8 +39,12 @@ dependencies {
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

// 인증사 관련 의존성
implementation 'javax.servlet:jstl:1.2'
implementation "org.apache.tomcat.embed:tomcat-embed-jasper"

// swagger
implementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:2.7.0"
implementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.9"

// jwt
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
Expand All @@ -58,9 +63,17 @@ dependencies {
implementation 'org.flywaydb:flyway-mysql'
runtimeOnly 'com.mysql:mysql-connector-j'

// Testcontainers
testImplementation 'org.springframework.boot:spring-boot-testcontainers:3.3.5'
testImplementation 'org.testcontainers:testcontainers:1.19.3'
testImplementation 'org.testcontainers:junit-jupiter:1.19.3'
testImplementation 'org.testcontainers:mysql:1.20.0'


// security
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'com.github.ben-manes.caffeine:caffeine:3.1.8'

// aws
implementation platform('software.amazon.awssdk:bom:2.20.0')
Expand All @@ -85,6 +98,31 @@ dependencies {

// poi-excel
implementation 'org.apache.poi:poi-ooxml:5.4.0'

implementation 'org.springframework.boot:spring-boot-starter-webflux'

runtimeOnly 'com.h2database:h2'

testImplementation 'org.springframework.boot:spring-boot-testcontainers:3.3.5'
testImplementation 'org.testcontainers:testcontainers:1.19.3'
testImplementation 'org.testcontainers:junit-jupiter:1.19.3'
testImplementation 'org.testcoscntainers:mysql:1.20.0'

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

There is a typo in the Testcontainers dependency. It should be org.testcontainers instead of org.testcoscntainers. This will cause a build failure.

    testImplementation 'org.testcontainers:mysql:1.20.0'


annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"

implementation 'org.apache.commons:commons-pool2:2.12.1'

//scheduler
implementation 'org.springframework.boot:spring-boot-starter-quartz'

//타임리프
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
}

configurations.configureEach {
resolutionStrategy {
force 'org.apache.commons:commons-lang3:3.18.0'
}
}

tasks.named('test') {
Expand Down
Loading