mirror of
https://github.com/ktds-dg0501/kt-event-marketing.git
synced 2025-12-06 23:26:25 +00:00
주요 구현 사항:
- 이벤트 참여 등록 및 중복 검증 (Redis Cache + DB)
- 참여자 목록 조회 (필터링, 검색, 페이징)
- 당첨자 추첨 (Fisher-Yates Shuffle 알고리즘)
- Kafka 이벤트 발행 (ParticipantRegistered)
- Redis 캐싱으로 성능 최적화
- 전화번호 마스킹 (개인정보 보호)
- 전역 예외 처리 및 검증
기술 스택:
- Spring Boot 3.x + JPA
- MySQL (참여자, 추첨 로그)
- Redis (캐싱, 중복 검증)
- Kafka (이벤트 발행)
API 엔드포인트:
- POST /events/{eventId}/participate
- GET /events/{eventId}/participants
- GET /events/{eventId}/participants/search
- POST /events/{eventId}/draw-winners
- GET /events/{eventId}/winners
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
72 lines
3.0 KiB
XML
72 lines
3.0 KiB
XML
<component name="ProjectRunConfigurationManager">
|
|
<configuration default="false" name="ParticipationServiceApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" nameIsGenerated="true">
|
|
<option name="ACTIVE_PROFILES" />
|
|
<option name="FRAME_DEACTIVATION_UPDATE_POLICY" value="UpdateClassesAndResources" />
|
|
<module name="kt-event-marketing.participation-service.main" />
|
|
<option name="SPRING_BOOT_MAIN_CLASS" value="com.kt.event.participation.ParticipationServiceApplication" />
|
|
<option name="VM_PARAMETERS" value="" />
|
|
<extension name="coverage">
|
|
<pattern>
|
|
<option name="PATTERN" value="com.kt.event.participation.*" />
|
|
<option name="ENABLED" value="true" />
|
|
</pattern>
|
|
</extension>
|
|
<option name="ALTERNATIVE_JRE_PATH" />
|
|
<option name="SHORTEN_COMMAND_LINE" value="NONE" />
|
|
<option name="PROGRAM_PARAMETERS" value="" />
|
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/participation-service" />
|
|
<envs>
|
|
<!-- Database Configuration -->
|
|
<env name="DB_HOST" value="localhost" />
|
|
<env name="DB_PORT" value="3306" />
|
|
<env name="DB_NAME" value="participation_db" />
|
|
<env name="DB_USER" value="root" />
|
|
<env name="DB_PASSWORD" value="password" />
|
|
<env name="DB_POOL_SIZE" value="10" />
|
|
<env name="DB_MIN_IDLE" value="5" />
|
|
<env name="DB_CONN_TIMEOUT" value="30000" />
|
|
<env name="DB_IDLE_TIMEOUT" value="600000" />
|
|
<env name="DB_MAX_LIFETIME" value="1800000" />
|
|
|
|
<!-- JPA Configuration -->
|
|
<env name="JPA_DDL_AUTO" value="update" />
|
|
<env name="JPA_SHOW_SQL" value="true" />
|
|
|
|
<!-- Redis Configuration -->
|
|
<env name="REDIS_HOST" value="localhost" />
|
|
<env name="REDIS_PORT" value="6379" />
|
|
<env name="REDIS_PASSWORD" value="" />
|
|
<env name="REDIS_TIMEOUT" value="3000" />
|
|
<env name="REDIS_POOL_MAX_ACTIVE" value="8" />
|
|
<env name="REDIS_POOL_MAX_IDLE" value="8" />
|
|
<env name="REDIS_POOL_MIN_IDLE" value="2" />
|
|
<env name="REDIS_POOL_MAX_WAIT" value="3000" />
|
|
|
|
<!-- Kafka Configuration -->
|
|
<env name="KAFKA_BOOTSTRAP_SERVERS" value="localhost:9092" />
|
|
<env name="KAFKA_PRODUCER_ACKS" value="all" />
|
|
<env name="KAFKA_PRODUCER_RETRIES" value="3" />
|
|
|
|
<!-- Server Configuration -->
|
|
<env name="SERVER_PORT" value="8084" />
|
|
|
|
<!-- Logging Configuration -->
|
|
<env name="LOG_LEVEL_ROOT" value="INFO" />
|
|
<env name="LOG_LEVEL_APP" value="DEBUG" />
|
|
<env name="LOG_LEVEL_REDIS" value="INFO" />
|
|
<env name="LOG_LEVEL_KAFKA" value="INFO" />
|
|
<env name="LOG_FILE_PATH" value="./logs" />
|
|
<env name="LOG_FILE_MAX_SIZE" value="10MB" />
|
|
<env name="LOG_FILE_MAX_HISTORY" value="30" />
|
|
|
|
<!-- App-specific Configuration -->
|
|
<env name="CACHE_DUPLICATE_TTL" value="604800" />
|
|
<env name="CACHE_PARTICIPANT_TTL" value="600" />
|
|
<env name="LOTTERY_VISIT_BONUS" value="2.0" />
|
|
</envs>
|
|
<method v="2">
|
|
<option name="Make" enabled="true" />
|
|
</method>
|
|
</configuration>
|
|
</component>
|