Skip to content

[RELEASE] 맵기 매칭을 운영에 엽니다 — 부정어 수정 · 추천 점수 · 포커스 결함 - #143

Merged
Yena07 merged 4 commits into
mainfrom
dev
Aug 15, 2026
Merged

[RELEASE] 맵기 매칭을 운영에 엽니다 — 부정어 수정 · 추천 점수 · 포커스 결함#143
Yena07 merged 4 commits into
mainfrom
dev

Conversation

@Yena07

@Yena07 Yena07 commented Aug 15, 2026

Copy link
Copy Markdown
Collaborator

devmain. 프론트 2건 + 백엔드 2건입니다.

PR 무엇
#136 확인 화면 포커스 유실, 맵기 매칭 붙이기, 사용자 피드백 5건, QR 페어링 확인 도구
#138 맵기 부정어 오분류 수정 — "안 매운 거" 가 매운맛으로 잡히던 것
#140 추천 점수 조정 — 형태(뼈/순살) 가중치, LOW_CONFIDENCE_THRESHOLD 0.6 → 0.7
#141 추천 이유가 여러 줄로 되풀이되던 것을 한 줄로 — 축 이름 대신 고르신 값으로

이 릴리스가 풀어 주는 것

맵기 매칭이 운영에서 아예 안 돌고 있습니다. 배포된 BFF 허용 목록에 internal/spicy-level/match 가 없어서 NOT_ALLOWED 로 막힙니다. 그 경로를 여는 것이 #136 이라 이 릴리스가 나가야 동작합니다.

로컬 dev 서버는 vite 프록시가 BFF 를 우회해서 되는 것처럼 보입니다. 이 프로젝트에서 되풀이된 함정이라 적어 둡니다.

배포 뒤 확인 (순서대로)

1. 백엔드 CD 가 실제로 돌았는지

backend/** 가 4개 파일 바뀌므로 CD 가 돕니다. Actions 에서 초록인지 봅니다. 예전에 디스크가 차서 No space left on device 로 죽은 적이 있습니다.

2. 부정어가 고쳐졌는지

node -e "fetch('https://api.hyunwoocha.site/internal/spicy-level/match',{method:'POST',headers:{'content-type':'application/json'},body:JSON.stringify({text:'안 매운 거'})}).then(r=>r.json()).then(console.log)"

confident: false 여야 합니다. true / HOT 이면 백엔드가 아직 옛 코드입니다.

한글을 \u 로 적은 이유 — Windows cmd 는 기본 코드페이지가 UTF-8 이 아니라, -d '{"text":"안 매운 거"}' 를 그대로 붙여넣으면 본문이 깨지거나 415 가 납니다.

이게 통과해야 #142(프론트 방어 걷어내기)를 머지할 수 있습니다.

3. QR 페어링이 여전히 잠겨 있는지

cd frontend && npm run check:pairing -- https://kio-bridge.vercel.app

이번 릴리스에 처음 들어가는 도구입니다. 네 항목 모두 ✓ 여야 합니다.

  1. 진짜 세션 ID 를 브라우저로 안 준다
  2. 두 번 찍으면 서로 다른 연결이 나온다
  3. pairingId 로 키오스크를 직접 못 움직인다
  4. 만료 시각을 서버가 정해서 준다

⚠ 가 뜨면 통과가 아닙니다 — 서버가 답을 못 준 것이라 막혔는지 아직 모른다는 뜻입니다.

4. 맵기 매칭이 BFF 를 지나는지

node -e "fetch('https://kio-bridge.vercel.app/api/bff/internal/spicy-level/match',{method:'POST',headers:{'content-type':'application/json'},body:JSON.stringify({text:'불닭맛'})}).then(r=>r.json()).then(console.log)"

NOT_ALLOWED 가 아니어야 합니다. 지금은 그것이 나옵니다.

데모 전에 알아 둘 것

음성 입력이 기본 꺼짐입니다(voiceGuide: false). 첫 화면에서 "소리로 듣고 답하기" 를 켜야 말하기 단추가 나옵니다.

확인 화면에서 눈에 띄는 변화 (#141)

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

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

이번 릴리스에 안 들어가는 것

kjp0411 and others added 3 commits August 15, 2026 14:01
* fix: 부정어 감지 필터 추가로 안 매운/맵지 않게 등 오분류 방지, MEDIUM 표기를 보통맛으로 수정

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

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

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

* fix: 빼주세요/빼줘/빼줄래 부정 표현 추가로 매운 거 빼주세요 오분류 방지
* 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>
포커스 결함 3건(원인이 각각 다름), 큰 글씨 모드 가로 넘침, 맵기 매칭(서버 임베딩) 붙이기, 사용자 피드백 5건, 여자 목소리 우선 선택, 안내 언어 위치 조정, QR 페어링 확인 도구(check:pairing) 추가. 코드래빗 지적 4건 반영.
@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 6:56am

@coderabbitai

coderabbitai Bot commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

🗂️ Base branches to auto review (2)
  • master
  • review/.*

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: f73a11c5-7781-4c35-a6f6-328ac505eb53

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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

* 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>
@Yena07
Yena07 merged commit c1b002b into main Aug 15, 2026
4 checks passed
Yena07 added a commit that referenced this pull request Aug 15, 2026
트리는 dev 그대로입니다. 이 머지는 내용을 하나도 안 바꾸고 이력만 잇습니다
(git diff origin/dev 가 비어 있는 것으로 확인했습니다).

■ 왜 또 필요했나

같은 일이 전에도 있었고 그때 a5ac006 이 봉합했습니다. 그 커밋에 결론이
적혀 있습니다 — "릴리스 PR 은 앞으로 merge commit 으로 머지할 것."

그런데 #143 이 스쿼시로 머지됐습니다(부모 1개). 스쿼시는 dev 의 커밋들을
main 에 새 SHA 하나로 옮겨 놓으므로, git 이 보기에 두 갈래는 같은 내용을
따로 만든 셈이 됩니다. 그래서 다음 릴리스에서 같은 파일이 통째로 충돌합니다.

이번에 충돌한 넷도 전부 그것입니다 — spicy.ts·spicy.test.ts 는 add/add,
voice.ts·App.tsx 는 content 충돌인데, 어느 쪽도 실제로 갈라진 작업이
아닙니다. main 에는 릴리스 말고 들어간 것이 없습니다(dev..main 확인).

■ 다음 릴리스부터

#148 은 **merge commit** 으로 머지해야 합니다. 스쿼시로 넣으면 다음 릴리스
때 이 봉합을 또 해야 합니다.

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

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants