[feat] #206 QR 지원 브랜드 추가 (포토시그니처, 모노맨션)#207
Conversation
개요빌드 구성에서 포토 서명 상수를 단일 세트에서 이중 세트로 마이그레이션하고, QR 스캔 뷰모델의 브랜드 감지 로직을 업데이트했으며, 웹뷰 클라이언트의 이미지 URL 감지에 대소문자 무시 매칭을 추가했습니다. 변경 사항포토 서명 이중 브랜드 지원
코드 검토 예상 소요 시간🎯 2 (단순) | ⏱️ ~12분 시 🐰🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Tip 💬 Introducing Slack Agent: The best way for teams to turn conversations into code.Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.
Built for teams:
One agent for your entire SDLC. Right inside Slack. 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 |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@feature/photo-upload/impl/build.gradle.kts`:
- Around line 33-39: The build currently writes literal "null" into BuildConfig
when required keys are missing; add explicit build-time guards in the Gradle
Kotlin DSL for each required key (PHOTO_SIGNATURE_URL_1,
PHOTO_SIGNATURE_IMAGE_URL_1, PHOTO_SIGNATURE_IMAGE_URL_MIME_TYPE_1,
PHOTO_SIGNATURE_URL_2, PHOTO_SIGNATURE_IMAGE_URL_2,
PHOTO_SIGNATURE_IMAGE_URL_MIME_TYPE_2) by checking properties.containsKey(...)
or using requireNotNull(properties["..."]) and throw a
GradleException/IllegalStateException with a clear message if absent so the
build fails fast and prevents silent runtime failures in PhotoWebViewClient and
QRScanViewModel URL matching logic.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: 20cba495-582a-4ffd-a274-6966b634b9f8
📒 Files selected for processing (3)
feature/photo-upload/impl/build.gradle.ktsfeature/photo-upload/impl/src/main/java/com/neki/android/feature/photo_upload/impl/qrscan/QRScanViewModel.ktfeature/photo-upload/impl/src/main/java/com/neki/android/feature/photo_upload/impl/qrscan/util/PhotoWebViewClient.kt
| buildConfigField("String", "PHOTO_SIGNATURE_URL_1", properties["PHOTO_SIGNATURE_URL_1"].toString()) | ||
| buildConfigField("String", "PHOTO_SIGNATURE_IMAGE_URL_1", properties["PHOTO_SIGNATURE_IMAGE_URL_1"].toString()) | ||
| buildConfigField("String", "PHOTO_SIGNATURE_IMAGE_URL_MIME_TYPE_1", properties["PHOTO_SIGNATURE_IMAGE_URL_MIME_TYPE_1"].toString()) | ||
|
|
||
| buildConfigField("String", "PHOTO_SIGNATURE_URL_2", properties["PHOTO_SIGNATURE_URL_2"].toString()) | ||
| buildConfigField("String", "PHOTO_SIGNATURE_IMAGE_URL_2", properties["PHOTO_SIGNATURE_IMAGE_URL_2"].toString()) | ||
| buildConfigField("String", "PHOTO_SIGNATURE_IMAGE_URL_MIME_TYPE_2", properties["PHOTO_SIGNATURE_IMAGE_URL_MIME_TYPE_2"].toString()) |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
if [[ ! -f local.properties ]]; then
echo "local.properties 파일이 없습니다."
exit 1
fi
required_keys=(
PHOTO_SIGNATURE_URL_1
PHOTO_SIGNATURE_IMAGE_URL_1
PHOTO_SIGNATURE_IMAGE_URL_MIME_TYPE_1
PHOTO_SIGNATURE_URL_2
PHOTO_SIGNATURE_IMAGE_URL_2
PHOTO_SIGNATURE_IMAGE_URL_MIME_TYPE_2
)
missing=0
for key in "${required_keys[@]}"; do
if ! rg -n "^${key}=" local.properties >/dev/null; then
echo "누락된 키: ${key}"
missing=1
fi
done
exit $missingRepository: YAPP-Github/27th-App-Team-2-Android
Length of output: 106
🏁 Script executed:
find . -name "build.gradle.kts" -type f | head -20Repository: YAPP-Github/27th-App-Team-2-Android
Length of output: 739
🏁 Script executed:
git ls-files | grep -E "feature/photo-upload.*build\.gradle\.kts"Repository: YAPP-Github/27th-App-Team-2-Android
Length of output: 164
🏁 Script executed:
cat -n feature/photo-upload/impl/build.gradle.ktsRepository: YAPP-Github/27th-App-Team-2-Android
Length of output: 3909
🏁 Script executed:
rg -n "PHOTO_SIGNATURE" --type kotlin --type java | head -30Repository: YAPP-Github/27th-App-Team-2-Android
Length of output: 2308
🏁 Script executed:
rg -n "BuildConfig" feature/photo-upload/impl/src --type kotlin --type java | head -20Repository: YAPP-Github/27th-App-Team-2-Android
Length of output: 4065
필수 프로퍼티 누락을 빌드 타임에 강제 실패시키는 가드가 필요합니다.
현재 방식은 키가 없으면 "null"이 BuildConfig에 들어가서, 런타임에서 PhotoWebViewClient와 QRScanViewModel의 URL 매칭 로직이 조용히 실패할 수 있습니다. 신규 _1/_2 키는 필수값이므로 누락 시 즉시 실패시키는 게 안전합니다.
권장 수정 예시
+fun requireProp(key: String): String =
+ properties.getProperty(key) ?: error("Missing required local.properties key: $key")
+
- buildConfigField("String", "PHOTO_SIGNATURE_URL_1", properties["PHOTO_SIGNATURE_URL_1"].toString())
- buildConfigField("String", "PHOTO_SIGNATURE_IMAGE_URL_1", properties["PHOTO_SIGNATURE_IMAGE_URL_1"].toString())
- buildConfigField("String", "PHOTO_SIGNATURE_IMAGE_URL_MIME_TYPE_1", properties["PHOTO_SIGNATURE_IMAGE_URL_MIME_TYPE_1"].toString())
+ buildConfigField("String", "PHOTO_SIGNATURE_URL_1", requireProp("PHOTO_SIGNATURE_URL_1"))
+ buildConfigField("String", "PHOTO_SIGNATURE_IMAGE_URL_1", requireProp("PHOTO_SIGNATURE_IMAGE_URL_1"))
+ buildConfigField("String", "PHOTO_SIGNATURE_IMAGE_URL_MIME_TYPE_1", requireProp("PHOTO_SIGNATURE_IMAGE_URL_MIME_TYPE_1"))
- buildConfigField("String", "PHOTO_SIGNATURE_URL_2", properties["PHOTO_SIGNATURE_URL_2"].toString())
- buildConfigField("String", "PHOTO_SIGNATURE_IMAGE_URL_2", properties["PHOTO_SIGNATURE_IMAGE_URL_2"].toString())
- buildConfigField("String", "PHOTO_SIGNATURE_IMAGE_URL_MIME_TYPE_2", properties["PHOTO_SIGNATURE_IMAGE_URL_MIME_TYPE_2"].toString())
+ buildConfigField("String", "PHOTO_SIGNATURE_URL_2", requireProp("PHOTO_SIGNATURE_URL_2"))
+ buildConfigField("String", "PHOTO_SIGNATURE_IMAGE_URL_2", requireProp("PHOTO_SIGNATURE_IMAGE_URL_2"))
+ buildConfigField("String", "PHOTO_SIGNATURE_IMAGE_URL_MIME_TYPE_2", requireProp("PHOTO_SIGNATURE_IMAGE_URL_MIME_TYPE_2"))🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@feature/photo-upload/impl/build.gradle.kts` around lines 33 - 39, The build
currently writes literal "null" into BuildConfig when required keys are missing;
add explicit build-time guards in the Gradle Kotlin DSL for each required key
(PHOTO_SIGNATURE_URL_1, PHOTO_SIGNATURE_IMAGE_URL_1,
PHOTO_SIGNATURE_IMAGE_URL_MIME_TYPE_1, PHOTO_SIGNATURE_URL_2,
PHOTO_SIGNATURE_IMAGE_URL_2, PHOTO_SIGNATURE_IMAGE_URL_MIME_TYPE_2) by checking
properties.containsKey(...) or using requireNotNull(properties["..."]) and throw
a GradleException/IllegalStateException with a clear message if absent so the
build fails fast and prevents silent runtime failures in PhotoWebViewClient and
QRScanViewModel URL matching logic.
[feat] #206 QR 지원 브랜드 추가 (포토시그니처, 모노맨션)
🔗 관련 이슈
📙 작업 설명
PHOTO_SIGNATURE_URL셋을_1suffix로 리네임 (photoqr3.kr유지)photosignature-viewer.web.app) + 자산 CDN(photosignature-asset-cdn.photosignature.workers.dev/sessions/) →_2셋으로 추가final.jpg매칭으로 분할샷(photo_1.jpg~photo_8.jpg) 제외COMPLETE.jpg/complete.jpg대소문자 변형 모두 매칭📸 스크린샷 또는 시연 영상 (선택)
💬 추가 설명 or 리뷰 포인트 (선택)
PHOTO_SIGNATURE_URL_1,PHOTO_SIGNATURE_IMAGE_URL_1,PHOTO_SIGNATURE_IMAGE_URL_MIME_TYPE_1(기존 키 리네임)PHOTO_SIGNATURE_URL_2,PHOTO_SIGNATURE_IMAGE_URL_2,PHOTO_SIGNATURE_IMAGE_URL_MIME_TYPE_2(신규)MONO_MANSION_IMAGE_URL=ncloudstorage.com,MONO_MANSION_IMAGE_URL_MIME_TYPE=COMPLETE.jpghref다운로드 링크 구조라 WebView 자동 렌더 시 이미지 요청이 안 날 가능성 있음 → 실 QR로 동작 검증 필요Summary by CodeRabbit
릴리스 노트