diff --git a/content-service/src/main/java/com/kt/event/content/infra/web/controller/ContentController.java b/content-service/src/main/java/com/kt/event/content/infra/web/controller/ContentController.java index aaf335c..bf528fd 100644 --- a/content-service/src/main/java/com/kt/event/content/infra/web/controller/ContentController.java +++ b/content-service/src/main/java/com/kt/event/content/infra/web/controller/ContentController.java @@ -31,7 +31,7 @@ import java.util.List; */ @Slf4j @RestController -@RequestMapping("/content") +@RequestMapping("/api/v1/content") @RequiredArgsConstructor public class ContentController { @@ -44,7 +44,7 @@ public class ContentController { private final DeleteImageUseCase deleteImageUseCase; /** - * POST /content/images/generate + * POST /api/v1/content/images/generate * SNS 이미지 생성 요청 (비동기) * * @param command 이미지 생성 요청 정보 @@ -61,7 +61,7 @@ public class ContentController { } /** - * GET /content/images/jobs/{jobId} + * GET /api/v1/content/images/jobs/{jobId} * 이미지 생성 작업 상태 조회 (폴링) * * @param jobId Job ID @@ -77,7 +77,7 @@ public class ContentController { } /** - * GET /content/events/{eventDraftId} + * GET /api/v1/content/events/{eventDraftId} * 이벤트의 생성된 콘텐츠 조회 * * @param eventDraftId 이벤트 초안 ID @@ -93,7 +93,7 @@ public class ContentController { } /** - * GET /content/events/{eventDraftId}/images + * GET /api/v1/content/events/{eventDraftId}/images * 이벤트의 이미지 목록 조회 (필터링) * * @param eventDraftId 이벤트 초안 ID @@ -118,7 +118,7 @@ public class ContentController { } /** - * GET /content/images/{imageId} + * GET /api/v1/content/images/{imageId} * 특정 이미지 상세 조회 * * @param imageId 이미지 ID @@ -134,7 +134,7 @@ public class ContentController { } /** - * DELETE /content/images/{imageId} + * DELETE /api/v1/content/images/{imageId} * 생성된 이미지 삭제 * * @param imageId 이미지 ID @@ -150,7 +150,7 @@ public class ContentController { } /** - * POST /content/images/{imageId}/regenerate + * POST /api/v1/content/images/{imageId}/regenerate * 이미지 재생성 요청 * * @param imageId 이미지 ID diff --git a/content-service/src/main/resources/application-dev.yml b/content-service/src/main/resources/application-dev.yml index 44c8669..a155a85 100644 --- a/content-service/src/main/resources/application-dev.yml +++ b/content-service/src/main/resources/application-dev.yml @@ -4,31 +4,39 @@ spring: data: redis: - host: 20.214.210.71 - port: 6379 - password: Hi5Jessica! + host: ${REDIS_HOST:20.214.210.71} + port: ${REDIS_PORT:6379} + password: ${REDIS_PASSWORD:} kafka: - bootstrap-servers: 20.249.125.115:9092 + bootstrap-servers: ${KAFKA_BOOTSTRAP_SERVERS:4.230.50.63:9092} consumer: - group-id: content-service-consumers + group-id: ${KAFKA_CONSUMER_GROUP_ID:content-service-consumers} auto-offset-reset: earliest key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer server: - port: 8084 + port: ${SERVER_PORT:8084} jwt: - secret: kt-event-marketing-jwt-secret-key-for-authentication-and-authorization-2025 - access-token-validity: 3600000 - refresh-token-validity: 604800000 + secret: ${JWT_SECRET:kt-event-marketing-jwt-secret-key-for-authentication-and-authorization-2025} + access-token-validity: ${JWT_ACCESS_TOKEN_VALIDITY:3600000} + refresh-token-validity: ${JWT_REFRESH_TOKEN_VALIDITY:604800000} azure: storage: connection-string: ${AZURE_STORAGE_CONNECTION_STRING:} - container-name: event-images + container-name: ${AZURE_CONTAINER_NAME:event-images} logging: level: - com.kt.event: DEBUG + com.kt.event: ${LOG_LEVEL_APP:DEBUG} + root: ${LOG_LEVEL_ROOT:INFO} + file: + name: ${LOG_FILE:logs/content-service.log} + logback: + rollingpolicy: + max-file-size: 10MB + max-history: 7 + total-size-cap: 100MB diff --git a/content-service/src/main/resources/application.yml b/content-service/src/main/resources/application.yml index 44c8669..c55102d 100644 --- a/content-service/src/main/resources/application.yml +++ b/content-service/src/main/resources/application.yml @@ -4,31 +4,39 @@ spring: data: redis: - host: 20.214.210.71 - port: 6379 - password: Hi5Jessica! + host: ${REDIS_HOST:localhost} + port: ${REDIS_PORT:6379} + password: ${REDIS_PASSWORD:} kafka: - bootstrap-servers: 20.249.125.115:9092 + bootstrap-servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092} consumer: - group-id: content-service-consumers + group-id: ${KAFKA_CONSUMER_GROUP_ID:content-service-consumers} auto-offset-reset: earliest key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer server: - port: 8084 + port: ${SERVER_PORT:8084} jwt: - secret: kt-event-marketing-jwt-secret-key-for-authentication-and-authorization-2025 - access-token-validity: 3600000 - refresh-token-validity: 604800000 + secret: ${JWT_SECRET:dev-jwt-secret-key} + access-token-validity: ${JWT_ACCESS_TOKEN_VALIDITY:3600000} + refresh-token-validity: ${JWT_REFRESH_TOKEN_VALIDITY:604800000} azure: storage: connection-string: ${AZURE_STORAGE_CONNECTION_STRING:} - container-name: event-images + container-name: ${AZURE_CONTAINER_NAME:event-images} logging: level: - com.kt.event: DEBUG + com.kt.event: ${LOG_LEVEL_APP:DEBUG} + root: ${LOG_LEVEL_ROOT:INFO} + file: + name: ${LOG_FILE:logs/content-service.log} + logback: + rollingpolicy: + max-file-size: 10MB + max-history: 7 + total-size-cap: 100MB diff --git a/design/backend/api/content-service-api.yaml b/design/backend/api/content-service-api.yaml index d8f9f45..4c11153 100644 --- a/design/backend/api/content-service-api.yaml +++ b/design/backend/api/content-service-api.yaml @@ -61,7 +61,7 @@ tags: description: 이미지 재생성 및 삭제 (UFR-CONT-020) paths: - /content/images/generate: + /api/v1/content/images/generate: post: tags: - Job Status @@ -71,7 +71,7 @@ paths: ## 처리 방식 - **비동기 처리**: Kafka `image-generation-job` 토픽에 Job 발행 - - **폴링 조회**: jobId로 생성 상태 조회 (GET /content/images/jobs/{jobId}) + - **폴링 조회**: jobId로 생성 상태 조회 (GET /api/v1/content/images/jobs/{jobId}) - **캐싱**: 동일한 eventDraftId 재요청 시 캐시 반환 (TTL 7일) ## 생성 스타일 @@ -182,7 +182,7 @@ paths: security: - BearerAuth: [] - /content/images/jobs/{jobId}: + /api/v1/content/images/jobs/{jobId}: get: tags: - Job Status @@ -339,7 +339,7 @@ paths: security: - BearerAuth: [] - /content/events/{eventDraftId}: + /api/v1/content/events/{eventDraftId}: get: tags: - Content Management @@ -427,7 +427,7 @@ paths: security: - BearerAuth: [] - /content/events/{eventDraftId}/images: + /api/v1/content/events/{eventDraftId}/images: get: tags: - Content Management @@ -506,7 +506,7 @@ paths: security: - BearerAuth: [] - /content/images/{imageId}: + /api/v1/content/images/{imageId}: get: tags: - Image Management @@ -590,7 +590,7 @@ paths: security: - BearerAuth: [] - /content/images/{imageId}/regenerate: + /api/v1/content/images/{imageId}/regenerate: post: tags: - Image Management