Conversation
|
Important Review skippedAuto incremental reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the Use the checkbox below for a quick retry:
Note
|
| Cohort / File(s) | Summary |
|---|---|
Domain Entities - Survey & Sections src/main/java/OneQ/OnSurvey/domain/survey/entity/Survey.java, src/main/java/OneQ/OnSurvey/domain/question/entity/Section.java, src/main/java/OneQ/OnSurvey/domain/admin/domain/model/survey/SurveySingleViewInfo.java, src/main/java/OneQ/OnSurvey/domain/admin/domain/model/survey/SurveySection.java |
imageUrl 필드 추가 및 updateSurvey/updateSection 메서드 서명 확장 |
Domain Entities - Questions src/main/java/OneQ/OnSurvey/domain/question/entity/Question.java, src/main/java/OneQ/OnSurvey/domain/admin/domain/model/survey/SurveyQuestion.java |
imageUrl 필드 추가 및 updateQuestion 메서드 확장 |
Question Type Implementations src/main/java/OneQ/OnSurvey/domain/question/entity/question/*.java (Choice, DateAnswer, LongAnswer, NPS, NumberAnswer, Rating, ShortAnswer) |
모든 질문 유형에 imageUrl 파라미터를 of(...) 팩토리 메서드와 updateQuestion(...) 메서드에 추가 |
Choice Options src/main/java/OneQ/OnSurvey/domain/question/entity/ChoiceOption.java, src/main/java/OneQ/OnSurvey/domain/admin/domain/model/survey/SurveyQuestion.java |
ChoiceOption 엔티티 및 중첩된 Option 레코드에 imageUrl 필드 추가 |
Admin Response DTOs src/main/java/OneQ/OnSurvey/domain/admin/api/dto/response/AdminSurveyDetailResponse.java |
SurveyInformationDto, QuestionDto, SectionDto 및 ChoicePropDto.OptionDto에 imageUrl 필드 추가 |
Question DTOs src/main/java/OneQ/OnSurvey/domain/question/model/dto/OptionDto.java, src/main/java/OneQ/OnSurvey/domain/question/model/dto/QuestionUpsertDto.java, src/main/java/OneQ/OnSurvey/domain/question/model/dto/SectionDto.java, src/main/java/OneQ/OnSurvey/domain/question/model/dto/type/*.java |
모든 DTO에 imageUrl 필드 추가 및 fromEntity 매핑 업데이트 |
Survey DTOs & Responses src/main/java/OneQ/OnSurvey/domain/survey/model/dto/SurveyDetailData.java, src/main/java/OneQ/OnSurvey/domain/survey/model/response/SurveyDetailResponse.java, src/main/java/OneQ/OnSurvey/domain/survey/model/response/SurveyFormResponse.java, src/main/java/OneQ/OnSurvey/domain/survey/model/response/ParticipationInfoResponse.java |
설문 응답 객체에 imageUrl 필드 추가 |
Survey Requests src/main/java/OneQ/OnSurvey/domain/survey/model/request/SurveyFormRequest.java, src/main/java/OneQ/OnSurvey/domain/survey/model/request/FreeSurveyFormRequest.java, src/main/java/OneQ/OnSurvey/domain/survey/model/request/SectionRequest.java |
요청 객체에 imageUrl 필드 추가 |
Participation Response src/main/java/OneQ/OnSurvey/domain/survey/model/response/ParticipationQuestionResponse.java |
sectionImageUrl 필드 추가 및 imageUrl을 포함하는 새 of(...) 오버로드 메서드 추가 |
Repositories src/main/java/OneQ/OnSurvey/domain/question/repository/section/SectionRepositoryImpl.java, src/main/java/OneQ/OnSurvey/domain/survey/repository/SurveyRepositoryImpl.java |
쿼리 프로젝션에 imageUrl 필드 추가 |
Mapper src/main/java/OneQ/OnSurvey/domain/admin/infra/mapper/AdminSurveyMapper.java |
모든 to...(...) 메서드에 imageUrl 매핑 추가 |
Services src/main/java/OneQ/OnSurvey/domain/question/service/QuestionCommandService.java, src/main/java/OneQ/OnSurvey/domain/question/service/QuestionConverter.java, src/main/java/OneQ/OnSurvey/domain/survey/service/command/SurveyCommandService.java, src/main/java/OneQ/OnSurvey/domain/survey/service/query/SurveyQueryService.java |
imageUrl 파라미터를 엔티티 업데이트 및 생성 호출에 전파 |
Authentication & Image Handling src/main/java/OneQ/OnSurvey/domain/admin/application/AdminAuthService.java, src/main/java/OneQ/OnSurvey/global/infra/ncp/objectStorage/image/controller/ImageController.java, src/main/java/OneQ/OnSurvey/global/infra/ncp/objectStorage/image/enums/ImageSubFolder.java, src/main/java/OneQ/OnSurvey/global/infra/ncp/objectStorage/image/service/ImageModifyService.java |
CustomUserDetails를 Authenticatable로 변경, ImageSubFolder enum에 SURVEY 추가, upload 메서드 오버로드 추가 |
Admin UI Template src/main/resources/templates/bo/survey.html |
설문, 섹션, 질문, 옵션 레벨의 이미지 업로드 UI 추가, 하이퍼링크 삽입 다이얼로그 구현, HTML 미리보기 기능 추가 |
Sequence Diagram(s)
sequenceDiagram
participant User as 관리자
participant Controller as ImageController
participant ImageService as ImageModifyService
participant NCP as NCP<br/>Object Storage
participant Database as Database
participant Entity as Survey Entity
User->>Controller: POST /upload<br/>(file, context=SURVEY)
Controller->>ImageService: upload(file, userKey, SURVEY)
ImageService->>NCP: PUT /survey/image.jpg
NCP-->>ImageService: imageUrl
ImageService-->>Controller: ImageUploadResponse
Controller-->>User: 이미지 URL 반환
User->>User: 설문 저장 시<br/>imageUrl 포함
User->>Database: updateSurvey(..., imageUrl)
Database->>Entity: Survey.imageUrl = imageUrl
Entity-->>Database: 저장 완료
Estimated code review effort
🎯 4 (Complex) | ⏱️ ~60 minutes
Possibly related PRs
- ✨ OMF-101 설문 조회 시 스크리닝 여부에 따라 스크리닝 퀴즈를 확인하도록 수정 #92: ParticipationInfoResponse 레코드 필드 수정 및 생성자 사용 패턴 변경으로 동일한 응답 객체가 영향을 받습니다.
- ✨ OMF-155 구글 폼 변환을 위한 섹션 구현 #100: ChoiceOption, Question 및 다양한 질문 유형 클래스/DTO(OptionDto, QuestionUpsertDto 등) 동일 클래스에 코드 레벨 변경이 있습니다.
🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
| Check name | Status | Explanation | Resolution |
|---|---|---|---|
| Docstring Coverage | Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. | Write docstrings for the functions missing them to satisfy the coverage threshold. |
✅ Passed checks (2 passed)
| Check name | Status | Explanation |
|---|---|---|
| Description check | ✅ Passed | PR 설명이 필수 섹션을 모두 포함하고 있으며, 관련 이슈, 작업 내용, 검증 현황이 명확하게 기재되어 있습니다. |
| Title check | ✅ Passed | 제목은 이미지와 하이퍼링크 기능 추가라는 주요 변경사항을 정확하게 반영하고 있으며, PR 설명 및 커밋 로그와 일치합니다. |
✏️ Tip: You can configure your own custom pre-merge checks in the settings.
✨ Finishing Touches
🧪 Generate unit tests (beta)
- Create PR with unit tests
- Post copyable unit tests in a comment
- Commit unit tests in branch
OMF-234
Tip
Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
Comment @coderabbitai help to get the list of available commands and usage tips.
|
하이퍼링크 처리 방식 요약: 저장 방식
렌더링 방식 (미리보기)
로드 시
문제 및 수정 이력
|
There was a problem hiding this comment.
Actionable comments posted: 8
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (3)
src/main/java/OneQ/OnSurvey/domain/survey/repository/SurveyRepositoryImpl.java (1)
180-180:⚠️ Potential issue | 🟡 Minor디버그용
System.out.println문을 제거해주세요.프로덕션 코드에 디버그 출력문이 남아있습니다. 로깅이 필요한 경우 SLF4J 로거를 사용하시기 바랍니다.
🧹 제안된 수정
- System.out.println("result = " + result); return result.get(surveyId);🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/main/java/OneQ/OnSurvey/domain/survey/repository/SurveyRepositoryImpl.java` at line 180, Remove the debug System.out.println("result = " + result); in SurveyRepositoryImpl and, if the output is needed, replace it with an SLF4J logger call (e.g., logger.debug or logger.info) inside the same method where the variable result is used; ensure the SurveyRepositoryImpl class has a Logger instance (LoggerFactory.getLogger(SurveyRepositoryImpl.class)) and use that for any logging instead of System.out.println.src/main/java/OneQ/OnSurvey/domain/question/service/QuestionCommandService.java (1)
127-205:⚠️ Potential issue | 🟠 Major
imageUrl(하이퍼링크 포함 가능) 입력값 검증 없이 저장되고 있습니다.현재 변경으로 질문/보기/섹션 전 경로에서 URL 문자열이 그대로 영속화됩니다. 허용 스킴(
http/https)·길이·공백 정규화 검증을 공통화해서 적용해 주세요.🔧 제안 패치 (공통 URL 검증 도입 예시)
+ private String sanitizeUrl(String raw) { + if (raw == null || raw.isBlank()) return null; + String normalized = raw.trim(); + if (normalized.length() > 2048) { + throw new CustomException(ErrorCode.INVALID_REQUEST); + } + String lower = normalized.toLowerCase(Locale.ROOT); + if (!(lower.startsWith("http://") || lower.startsWith("https://"))) { + throw new CustomException(ErrorCode.INVALID_REQUEST); + } + return normalized; + }- upsertInfo.getImageUrl() + sanitizeUrl(upsertInfo.getImageUrl())- optionInfo.getImageUrl() + sanitizeUrl(optionInfo.getImageUrl())- sectionDto.imageUrl() + sanitizeUrl(sectionDto.imageUrl())Also applies to: 361-375, 419-426
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/main/java/OneQ/OnSurvey/domain/question/service/QuestionCommandService.java` around lines 127 - 205, The code stores imageUrl from QuestionUpsertDto.UpsertInfo without validation in QuestionCommandService.updateQuestion (and the other update blocks at the noted locations); add a shared URL validation/normalization utility (e.g., UrlUtils.normalizeAndValidateUrl(String) or UrlValidator.validateAndNormalize(String)) that enforces allowed schemes (http/https), trims/normalizes whitespace, checks max length, and returns null/throws on invalid input, then call it on upsertInfo.getImageUrl() before passing the value into each subtype's updateQuestion (e.g., Choice.updateQuestion, Rating.updateQuestion, DateAnswer.updateQuestion, ShortAnswer.updateQuestion, LongAnswer.updateQuestion, NumberAnswer.updateQuestion) so all branches use the sanitized URL.src/main/java/OneQ/OnSurvey/domain/survey/model/response/ParticipationQuestionResponse.java (1)
25-53: 🧹 Nitpick | 🔵 Trivial팩토리 오버로드 중복은 단일 경로 위임으로 줄여 주세요.
기본값 계산 로직이 두 군데에 중복되어 추후 수정 시 불일치 위험이 있습니다.
♻️ 제안 패치
public static ParticipationQuestionResponse of( String title, String description, Integer currSection, Integer nextSection, List<DefaultQuestionDto> info ) { - return new ParticipationQuestionResponse( - title, description, null, - currSection != null ? currSection : 1, - currSection != null ? nextSection : 0, - info - ); + return of(title, description, null, currSection, nextSection, info); }🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/main/java/OneQ/OnSurvey/domain/survey/model/response/ParticipationQuestionResponse.java` around lines 25 - 53, The two overloaded static factory methods ParticipationQuestionResponse.of currently duplicate the defaulting logic for currSection/nextSection; consolidate by having the 5-arg of(String title, String description, Integer currSection, Integer nextSection, List<DefaultQuestionDto> info) delegate to the 6-arg of(...) with imageUrl = null (or vice versa) so the default computation currSection != null ? currSection : 1 and currSection != null ? nextSection : 0 exists in only one method; update the single canonical of(...) (referencing title, description, imageUrl, currSection, nextSection, info) to perform the defaulting and return the new ParticipationQuestionResponse.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@src/main/java/OneQ/OnSurvey/domain/survey/entity/Survey.java`:
- Around line 62-63: The Survey entity now defines a new field imageUrl mapped
to column "image_url" but there is no corresponding DB migration; add a
migration that alters the survey table to add the image_url column (matching
`@Column` definition and TEXT type) or install/configure a migration framework
(Flyway/Liquibase) and add a migration file for the Survey -> imageUrl change so
deployments and local DBs are in sync; reference the Survey entity and the
image_url column when creating the migration.
In
`@src/main/java/OneQ/OnSurvey/domain/survey/model/request/FreeSurveyFormRequest.java`:
- Around line 12-13: The FreeSurveyFormRequest DTO's imageUrl field lacks URL
format validation, so invalid values may be accepted; add a validation
annotation to imageUrl (e.g., javax.validation.constraints.Pattern enforcing
^https?://.* or org.hibernate.validator.constraints.URL) on the imageUrl field
in class FreeSurveyFormRequest and ensure the class is validated (e.g., `@Valid`
usage upstream) so requests fail on malformed URLs and return proper validation
messages; reference the imageUrl field in FreeSurveyFormRequest when making this
change.
In
`@src/main/java/OneQ/OnSurvey/domain/survey/model/request/SurveyFormRequest.java`:
- Around line 40-41: SurveyFormRequest.imageUrl lacks URL format validation;
mirror the validation used in FreeSurveyFormRequest by adding the same
URL-validation annotation (e.g., `@URL` or the `@Pattern` regex used in
FreeSurveyFormRequest) to the String imageUrl field in class SurveyFormRequest,
keep the existing `@Schema`(description="설문 이미지 URL"), and import any required
validator annotation so the field enforces the same URL format constraints as
FreeSurveyFormRequest.
In
`@src/main/java/OneQ/OnSurvey/domain/survey/service/command/SurveyCommandService.java`:
- Line 127: The updateSurvey call can receive a null imageUrl from
SurveyFormRequest or FreeSurveyFormRequest which will erase the existing image;
either add a null-safe assignment inside Survey.updateSurvey (e.g., set imageUrl
= imageUrl != null ? imageUrl : this.imageUrl) or change the callers (the
survey.updateSurvey invocations) to pass survey.getImageUrl() when
request.imageUrl() is null so the existing image is preserved; locate
Survey.updateSurvey and the two caller sites (the survey.updateSurvey calls
around the current update flow) and implement one of these fixes consistently.
In
`@src/main/java/OneQ/OnSurvey/global/infra/ncp/objectStorage/image/service/ImageModifyService.java`:
- Around line 50-56: The upload method should defensively handle a null
ImageSubFolder to avoid NPE in ObjectKeyFactory.build; inside
ImageModifyService.upload, check if the incoming ImageSubFolder sub is null and
replace it with a sensible non-null fallback (e.g. ImageSubFolder.DEFAULT or
another appropriate enum constant used for general/public uploads) before
calling ObjectKeyFactory.build(...); update the null-guard near the start of
upload so objectKey generation always receives a valid sub value.
In `@src/main/resources/templates/bo/survey.html`:
- Around line 1492-1494: The template assigns untrusted user input directly to
innerHTML (e.g., the textarea -> preview assignment using variables textarea and
preview at the noted locations), which allows XSS; fix by sanitizing or escaping
the textarea.value before rendering (or use textContent / createTextNode for
plain text) and, if HTML is required, pass the input through a trusted HTML
sanitizer library (or whitelist/escape tags) and then set preview.innerHTML only
with the sanitized output; apply the same change to every occurrence that
assigns user-controlled values to innerHTML (all instances involving
textarea/preview or similar preview elements mentioned in the comment).
- Around line 1439-1456: The change currently only updates the hidden input and
preview in handleSurveyImageUpload and removeSurveyImage, so the image URL is
not persisted to the server; update handleSurveyImageUpload to call the backend
save endpoint (e.g., invoke a new or existing API helper like
saveSurveyImage(url, surveyId)) right after receiving the uploaded URL and
before showing final success toast, handle API errors (rollback preview/hidden
input if save fails) and disable UI while saving; likewise update
removeSurveyImage to call the backend delete or save-empty-image endpoint (e.g.,
removeSurveyImageOnServer(surveyId) or saveSurveyImage('', surveyId)) and only
hide the preview and clear the hidden input after the server acknowledges
success, handling errors and updating the user via toasts.
- Around line 1540-1553: The confirmHyperlink function currently concatenates
user-provided url and text into a string anchor, allowing attribute/scheme
injection; replace the string concatenation with safe DOM-based construction and
scheme validation: validate the url (using the URL constructor or a regex) to
allow only safe schemes (e.g., http, https, mailto) and reject javascript: and
other dangerous schemes, create an <a> element via document.createElement('a'),
set its href only after validation, assign the link text via element.textContent
(not innerHTML) to escape quotes/markup, then insert element.outerHTML into
_hyperlinkTargetTextarea.value at the selection (use the existing start/end
handling), and dispatch the input event as before.
---
Outside diff comments:
In
`@src/main/java/OneQ/OnSurvey/domain/question/service/QuestionCommandService.java`:
- Around line 127-205: The code stores imageUrl from
QuestionUpsertDto.UpsertInfo without validation in
QuestionCommandService.updateQuestion (and the other update blocks at the noted
locations); add a shared URL validation/normalization utility (e.g.,
UrlUtils.normalizeAndValidateUrl(String) or
UrlValidator.validateAndNormalize(String)) that enforces allowed schemes
(http/https), trims/normalizes whitespace, checks max length, and returns
null/throws on invalid input, then call it on upsertInfo.getImageUrl() before
passing the value into each subtype's updateQuestion (e.g.,
Choice.updateQuestion, Rating.updateQuestion, DateAnswer.updateQuestion,
ShortAnswer.updateQuestion, LongAnswer.updateQuestion,
NumberAnswer.updateQuestion) so all branches use the sanitized URL.
In
`@src/main/java/OneQ/OnSurvey/domain/survey/model/response/ParticipationQuestionResponse.java`:
- Around line 25-53: The two overloaded static factory methods
ParticipationQuestionResponse.of currently duplicate the defaulting logic for
currSection/nextSection; consolidate by having the 5-arg of(String title, String
description, Integer currSection, Integer nextSection, List<DefaultQuestionDto>
info) delegate to the 6-arg of(...) with imageUrl = null (or vice versa) so the
default computation currSection != null ? currSection : 1 and currSection !=
null ? nextSection : 0 exists in only one method; update the single canonical
of(...) (referencing title, description, imageUrl, currSection, nextSection,
info) to perform the defaulting and return the new
ParticipationQuestionResponse.
In
`@src/main/java/OneQ/OnSurvey/domain/survey/repository/SurveyRepositoryImpl.java`:
- Line 180: Remove the debug System.out.println("result = " + result); in
SurveyRepositoryImpl and, if the output is needed, replace it with an SLF4J
logger call (e.g., logger.debug or logger.info) inside the same method where the
variable result is used; ensure the SurveyRepositoryImpl class has a Logger
instance (LoggerFactory.getLogger(SurveyRepositoryImpl.class)) and use that for
any logging instead of System.out.println.
ℹ️ Review info
Configuration used: Path: .coderabbit.yml
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (42)
src/main/java/OneQ/OnSurvey/domain/admin/api/dto/response/AdminSurveyDetailResponse.javasrc/main/java/OneQ/OnSurvey/domain/admin/application/AdminAuthService.javasrc/main/java/OneQ/OnSurvey/domain/admin/domain/model/survey/SurveyQuestion.javasrc/main/java/OneQ/OnSurvey/domain/admin/domain/model/survey/SurveySection.javasrc/main/java/OneQ/OnSurvey/domain/admin/domain/model/survey/SurveySingleViewInfo.javasrc/main/java/OneQ/OnSurvey/domain/admin/infra/mapper/AdminSurveyMapper.javasrc/main/java/OneQ/OnSurvey/domain/question/entity/ChoiceOption.javasrc/main/java/OneQ/OnSurvey/domain/question/entity/Question.javasrc/main/java/OneQ/OnSurvey/domain/question/entity/Section.javasrc/main/java/OneQ/OnSurvey/domain/question/entity/question/Choice.javasrc/main/java/OneQ/OnSurvey/domain/question/entity/question/DateAnswer.javasrc/main/java/OneQ/OnSurvey/domain/question/entity/question/LongAnswer.javasrc/main/java/OneQ/OnSurvey/domain/question/entity/question/NPS.javasrc/main/java/OneQ/OnSurvey/domain/question/entity/question/NumberAnswer.javasrc/main/java/OneQ/OnSurvey/domain/question/entity/question/Rating.javasrc/main/java/OneQ/OnSurvey/domain/question/entity/question/ShortAnswer.javasrc/main/java/OneQ/OnSurvey/domain/question/model/dto/OptionDto.javasrc/main/java/OneQ/OnSurvey/domain/question/model/dto/QuestionUpsertDto.javasrc/main/java/OneQ/OnSurvey/domain/question/model/dto/SectionDto.javasrc/main/java/OneQ/OnSurvey/domain/question/model/dto/type/ChoiceDto.javasrc/main/java/OneQ/OnSurvey/domain/question/model/dto/type/DateDto.javasrc/main/java/OneQ/OnSurvey/domain/question/model/dto/type/DefaultQuestionDto.javasrc/main/java/OneQ/OnSurvey/domain/question/model/dto/type/RatingDto.javasrc/main/java/OneQ/OnSurvey/domain/question/repository/section/SectionRepositoryImpl.javasrc/main/java/OneQ/OnSurvey/domain/question/service/QuestionCommandService.javasrc/main/java/OneQ/OnSurvey/domain/question/service/QuestionConverter.javasrc/main/java/OneQ/OnSurvey/domain/survey/entity/Survey.javasrc/main/java/OneQ/OnSurvey/domain/survey/model/dto/SurveyDetailData.javasrc/main/java/OneQ/OnSurvey/domain/survey/model/request/FreeSurveyFormRequest.javasrc/main/java/OneQ/OnSurvey/domain/survey/model/request/SectionRequest.javasrc/main/java/OneQ/OnSurvey/domain/survey/model/request/SurveyFormRequest.javasrc/main/java/OneQ/OnSurvey/domain/survey/model/response/ParticipationInfoResponse.javasrc/main/java/OneQ/OnSurvey/domain/survey/model/response/ParticipationQuestionResponse.javasrc/main/java/OneQ/OnSurvey/domain/survey/model/response/SurveyDetailResponse.javasrc/main/java/OneQ/OnSurvey/domain/survey/model/response/SurveyFormResponse.javasrc/main/java/OneQ/OnSurvey/domain/survey/repository/SurveyRepositoryImpl.javasrc/main/java/OneQ/OnSurvey/domain/survey/service/command/SurveyCommandService.javasrc/main/java/OneQ/OnSurvey/domain/survey/service/query/SurveyQueryService.javasrc/main/java/OneQ/OnSurvey/global/infra/ncp/objectStorage/image/controller/ImageController.javasrc/main/java/OneQ/OnSurvey/global/infra/ncp/objectStorage/image/enums/ImageSubFolder.javasrc/main/java/OneQ/OnSurvey/global/infra/ncp/objectStorage/image/service/ImageModifyService.javasrc/main/resources/templates/bo/survey.html
src/main/java/OneQ/OnSurvey/domain/survey/model/request/FreeSurveyFormRequest.java
Show resolved
Hide resolved
src/main/java/OneQ/OnSurvey/domain/survey/model/request/SurveyFormRequest.java
Show resolved
Hide resolved
src/main/java/OneQ/OnSurvey/domain/survey/service/command/SurveyCommandService.java
Show resolved
Hide resolved
...main/java/OneQ/OnSurvey/global/infra/ncp/objectStorage/image/service/ImageModifyService.java
Show resolved
Hide resolved
wonjuneee
left a comment
There was a problem hiding this comment.
LGTM!
설문 이미지 url이 정상적으로 저장이 안되고 있어서, 해당 부분 수정해서 커밋 추가로 올려놨습니다
✨ Related Issue
📌 Task Details
💬 Review Requirements (Optional)
Summary by CodeRabbit
릴리스 노트
새로운 기능
버그 수정