Skip to content

[FIX] recommendation 점수 수정 - #140

Merged
rkdms6767 merged 24 commits into
devfrom
feat/recommendation-engine
Aug 15, 2026
Merged

[FIX] recommendation 점수 수정#140
rkdms6767 merged 24 commits into
devfrom
feat/recommendation-engine

Conversation

@rkdms6767

@rkdms6767 rkdms6767 commented Aug 15, 2026

Copy link
Copy Markdown
Collaborator

📌 작업 내용

  • 백앤드와 프론트 확신도가 달라 화면에서 사용자 확인을 받는 경우에도 후보가 하나만 나오는 문제 발생.
  • 시각 안내가 필요하거나 손이 불편한 사용자에게는 뼈 있는 치킨을 발라 먹는 게 장벽이 될 수 있다는 걸 추가하게 되면서, 그러면 형태 축은 단순 편의가 아니라 이 앱의 핵심 미션(barrier-free)에 맞닿은 축이 됨. 따라서 점수도 이용방식/맵기와 같은 레벨로 올려야 맞다고 판단함.

🛠️ 해결 방법

  • 뼈 타입 점수 private static final double BONE_TYPE_MATCH_BONUS = 1.0;
    private static final double BONE_TYPE_MISMATCH_PENALTY = -0.3; 로 수정
  • 확신도 점수 0.6 -> 0.7로 수정

🧪 검증

  • 재현 테스트

Summary by CodeRabbit

  • 개선 사항
    • 뼈/순살 선호가 일치하는 추천 결과의 반영도가 높아졌습니다.
    • 선호가 불일치하는 결과에는 더 큰 감점이 적용됩니다.
    • 신뢰도가 낮은 추천을 더 엄격하게 판정합니다.
    • 단일 추천 결과에 경고가 있으면 재확인을 요청합니다.

parkseyoung and others added 24 commits August 8, 2026 15:16
# Conflicts:
#	backend/src/main/java/com/kiobridge/kiobridge/modules/recommendation/RecommendationEngineService.java
#	backend/src/test/java/com/kiobridge/kiobridge/modules/recommendation/RecommendationEngineServiceTest.java
@vercel

vercel Bot commented Aug 15, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
kio-bridge Ready Ready Preview Aug 15, 2026 5:51am

@coderabbitai

coderabbitai Bot commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: a01f0a5f-746a-4d4b-a453-3fe58303789e

📥 Commits

Reviewing files that changed from the base of the PR and between a8d6cc1 and 9a67e13.

📒 Files selected for processing (2)
  • backend/src/main/java/com/kiobridge/kiobridge/modules/recommendation/RecommendationEngineService.java
  • backend/src/test/java/com/kiobridge/kiobridge/modules/recommendation/RecommendationEngineServiceTest.java

Walkthrough

추천 엔진에서 뼈/순살 선호 일치 보너스와 불일치 페널티를 조정했습니다. 낮은 신뢰도 임계값을 상향했습니다. 단일 후보의 재확인 판정과 관련 테스트 기대값을 변경했습니다.

Changes

추천 점수 및 재확인 기준

Layer / File(s) Summary
추천 점수 및 신뢰도 규칙
backend/src/main/java/com/kiobridge/kiobridge/modules/recommendation/RecommendationEngineService.java
뼈/순살 일치 보너스를 1.0으로, 불일치 페널티를 -0.3으로 변경했습니다. 낮은 신뢰도 임계값을 0.7로 변경했습니다.
변경된 규칙 테스트
backend/src/test/java/com/kiobridge/kiobridge/modules/recommendation/RecommendationEngineServiceTest.java
신뢰도 0.65인 단일 후보의 requiresReconfirmation() 기대값을 true로 변경했습니다. 뼈/순살 일치 및 불일치 점수 기대값을 새 기준에 맞게 갱신했습니다.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to 9a67e

This localized change adjusts recommendation scoring and its tests; no actionable merge-blocking risk remains beyond normal checks.

Possibly related PRs

Suggested labels: fix

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 추천 점수 변경이라는 주요 변경 사항을 명확하고 간결하게 설명합니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/recommendation-engine

Comment @coderabbitai help to get the list of available commands.

@rkdms6767
rkdms6767 merged commit 4886344 into dev Aug 15, 2026
5 checks passed
@rkdms6767 rkdms6767 self-assigned this Aug 15, 2026
@rkdms6767 rkdms6767 added the fix label Aug 15, 2026
Yena07 added a commit that referenced this pull request Aug 15, 2026
* [FIX] 부정어("안 매운", "맵지 않게") 오분류 및 MEDIUM 라벨 표기 수정 (#138)

* fix: 부정어 감지 필터 추가로 안 매운/맵지 않게 등 오분류 방지, MEDIUM 표기를 보통맛으로 수정

* fix: 영문 부정어를 단어 경계로 매칭하도록 수정, 부정어 분기 유닛 테스트 추가

* fix: 한글 부정어 매칭 확대(안/않/말고/빼고), 영문 부정어 회귀 테스트 추가

* fix: 부정어 판정을 구체적 조합으로 좁혀 안녕/안내 등 오탐 방지, 부정 입력 시 외부 호출 없음 검증 추가

* fix: 빼주세요/빼줘/빼줄래 부정 표현 추가로 매운 거 빼주세요 오분류 방지

* [FIX] recommendation 점수 수정 (#140)

* feat: Chickenstore 환경의 CompatibilityRule errorcode 사용자 친화 메시지

* feat: CandidateFilterResult requiresReconfirmation 필드 map으로 변경

* feat: Map 변경에 따른 서비스 수정

* feat: RuleEvaluator: 1단계 값 추출 로직

* feat: RecommendationEngineService STEP5~7 추천 로직 초기 구현

* fix: STEP2 파트 passesByCandidateId 추가 전달

* fix: SKIPPED, PASS 점수 오류 수정

* fix: WARN 없는 항목의 confidence 임계값 크로스 테스트 픽스처 보정

* fix: 뼈 타입 추천 점수에 추가

* fix: STAFF_ASSISTANCE_REASON 멘트 추가

* fix: 병합 오류 수정

* fix: v5.1.6 RC5 변경에 맞추어 뼈타입.컵옵션 추가

* feat: 혼잡 시간대(요일+시간대) 기반 포장 메뉴 가산점 추가

* fix: 뼈 타입 점수, 확신도 점수 수정.

---------

Co-authored-by: parkseyoung <parkseyoung@users.noreply.github.com>

* [FIX/FEAT] 확인 화면 포커스 유실 + 보기에 없는 말도 알아듣기 (#136)

포커스 결함 3건(원인이 각각 다름), 큰 글씨 모드 가로 넘침, 맵기 매칭(서버 임베딩) 붙이기, 사용자 피드백 5건, 여자 목소리 우선 선택, 안내 언어 위치 조정, QR 페어링 확인 도구(check:pairing) 추가. 코드래빗 지적 4건 반영.

* [FEAT] 여러 조건이 맞으면 한 줄로 말합니다 — 추천 이유 합치기 (#141)

* feat: 여러 조건이 맞으면 한 줄로 말합니다

서버는 맞은 축마다 이유를 한 줄씩 따로 줍니다. 두 축이 맞으면 화면이
이렇게 됐습니다.

  반영: 포장 전용 닭강정 — 선호하신 이용 방식과 일치하는 메뉴라 우선 추천드립니다.
  반영: 포장 전용 닭강정 — 선호하신 맵기와 맞는 메뉴라 우선 추천드립니다.

메뉴 이름과 뒷말이 통째로 되풀이돼서, 두 줄을 다 읽어야 무엇이 다른지
알 수 있습니다. 큰 글씨로 보는 분에게는 이것만으로 화면 하나가 찹니다.
한 줄로 합칩니다.

  반영: 포장 전용 닭강정 — 선호하신 포장하기, 매운맛과 맞는 메뉴라 우선 추천드립니다.

■ 축 이름 대신 고르신 값으로 부릅니다

"이용 방식" 보다 "포장하기" 가 사용자가 실제로 고른 말입니다. 짐작이
아닙니다 — 어느 축인지는 서버 문장에 적혀 있고, 그 축에 무엇을 골랐는지는
주문표에 있습니다. 둘 다 아는 것만 씁니다. 주문표에 값이 없거나
"상관없음" 이면 축 이름 그대로 둡니다.

서버가 부르는 축 이름과 주문표의 축 이름이 늘 같지는 않습니다
("뼈/순살"→"형태", "컵 옵션"→"컵"). 표로 이어 두고, 못 찾으면 축 이름으로
물러납니다.

■ 조사

"맵기과" 가 되면 안 되므로 마지막 값의 받침을 보고 과/와 를 고릅니다.
영어에는 조사가 없어 en.ts 의 두 열쇠가 같은 문장을 가리킵니다.

■ 한 곳에서만 합칩니다

OrderConfirmScreen 에서 한 번 합쳐 아래로 내려보냅니다. 화면마다 따로
합치면, 접힌 한 줄이 세는 "외 N개" 와 펼친 목록의 줄 수가 어긋납니다.

■ 안 건드리는 것

한 축만 맞은 줄은 그대로 둡니다 — 되풀이가 없고, 그 문장들은 표에 열쇠가
그대로 있습니다. 못 맞춘 조건과 제외 이유도 손대지 않습니다. 저마다 다른
말이라 합치면 뜻이 뭉개집니다.

typecheck · 436 tests · build 통과. 이유묶기 시험 11건을 더했습니다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* fix: 같은 축이 두 번 와도 한 번만 셉니다 (리뷰 1건)

코드래빗 🟡 Minor 1건. 타당해서 고쳤습니다.

같은 메뉴에 같은 축의 '맞음' 줄이 두 번 오면 이렇게 됐습니다.

  선호하신 매운맛, 매운맛과 맞는 메뉴라 우선 추천드립니다.

같은 조건을 두 번 말하는 줄이라, 합치지 않느니만 못합니다.

축으로 가려서 한 번만 셉니다. 값이 아니라 축으로 가리는 이유는, 두 축이
같은 이름을 가질 수 있기 때문입니다 — 주문표에 값이 없으면 축 이름으로
물러나는데, 그때는 서로 다른 조건이 맞은 것이므로 둘 다 세는 것이 맞습니다.

서버는 축마다 한 줄씩 주므로 겹칠 일이 없어야 하지만, 이 자리는 겹쳐 온
적이 있습니다(App.tsx 의 error.details 주석에 같은 얘기가 적혀 있습니다).

시험 2건을 더했습니다.

  · 같은 축이 두 번 와도 한 번만 센다 — 축이 하나뿐이라 합치지 않는다
  · 겹친 축이 있어도 서로 다른 축이 둘이면 합친다

typecheck · 438 tests · build 통과.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* test: 합친 뒤 남은 줄 수까지 봅니다 (리뷰 1건)

코드래빗 🟡 Minor 1건. 시험이 헐거웠던 것이 맞습니다.

"겹친 축이 있어도 서로 다른 축이 둘이면 합친다" 가 합침[0] 만 봤습니다.
그러면 첫 문장만 맞게 만들고 겹친 줄을 둘째 항목으로 남기는 구현도
통과합니다 — 화면에는 같은 말이 한 줄 더 붙는데도요.

toHaveLength(1) 을 앞에 뒀습니다. 지금 구현은 이미 1개를 내놓으므로
코드는 안 바뀌고, 시험이 그것을 붙잡게 된 것입니다.

typecheck · 438 tests · build 통과.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>

---------

Co-authored-by: kjp0411 <98109773+kjp0411@users.noreply.github.com>
Co-authored-by: Gganii <rkdms5991@naver.com>
Co-authored-by: parkseyoung <parkseyoung@users.noreply.github.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants