추출 부분값을 INCOMPLETE 로 수용하고 유저 입력으로 완성한다 - #945
Merged
Merged
Conversation
- prod 30일 이미지 등록 18건 중 16건이 실패(89%)했다. READY 불변식이 name·price·imageUrl 을 모두 요구해, 가격이 박혀 있지 않은 사진은 구조적으로 통과할 수 없었다 (성공한 2건은 모두 쇼핑몰 화면 스크린샷이었다) - 도메인이 결과를 셋으로 가르게 했다: 세 필드를 다 얻으면 READY, 일부만 얻으면 INCOMPLETE, 하나도 못 얻으면 FAILED. markReady 를 markExtracted 로 바꿔 확정된 상태를 반환하고, 워커·서비스가 그 값으로 로그·메트릭·이벤트를 가른다 - INCOMPLETE 의 완성 경로는 기존 ItemSnapshot.manual 을 그대로 쓴다 — base 값에 입력을 병합해 세 필드가 차면 READY 새 버전을 쌓는 로직이 이미 있어 별도 경로를 만들지 않았다 - 알림은 완료 재사용 대신 ITEM_PARSING_INCOMPLETE 를 새로 팠다. 템플릿이 타입당 하나라 한 타입 안에서 문구를 가를 수 없고, "완료" 로 알리면 사용자가 빈 칸을 보고 들어가게 된다 - 메트릭 result 에 incomplete 를 더해 실패와 섞지 않는다. 섞으면 "우리가 못 끝낸 것"과 "사용자가 마저 채울 것"이 한 숫자가 되어 실패율이 실제보다 나쁘게 보인다 - 부분값 로그에는 missing 필드를 남긴다 — 무엇을 사용자에게 물어야 하는지가 이 결과의 핵심인데, 기존 로그(code 만 기록)로는 사후 판별이 불가능했다 - extractor 가 아직 부분값을 422 로 닫으므로 이 커밋만으로 동작이 바뀌지는 않는다. 부분값 200 반환은 extractor 후속이고, core 가 먼저 나가야 안전한 순서다
|
Important Review available on request
Reviews should be triggered manually for repositories with fewer than 10 stars. Select Trigger review above or comment ⚙️ Run configurationConfiguration used: Path: .coderabbit.yml Review profile: CHILL Plan: Pro Plus Run ID: 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 |
|
Discord 스레드 연동용 메타데이터입니다. discord-pr-bot 워크플로가 자동 생성하며, 수정·삭제하면 PR 과 Discord 알림 연동이 끊깁니다. |
This was referenced Aug 15, 2026
…rtial-extraction # Conflicts: # src/main/kotlin/com/depromeet/piki/item/service/AsyncImageParsingWorker.kt # src/main/kotlin/com/depromeet/piki/item/service/AsyncItemParsingWorker.kt
This was referenced Aug 15, 2026
m-a-king
added a commit
to TeamPiKi/client
that referenced
this pull request
Aug 15, 2026
- 서버가 추출 결과를 일부만 채웠을 때 INCOMPLETE 를 내려준다 (TeamPiKi/core#945). 기존 코드는 FAILED·PENDING·PROCESSING 이 아니면 전부 정상 카드로 그려, 이름·가격이 빈 칸인 카드가 보이고 채우라는 유도가 없었다 - 위시 그리드에서 INCOMPLETE 를 FAILED 와 같은 편집 유도 카드로 보내되 문구만 "일부만 가져왔어요" 로 가른다 - name·price 를 nullable 로 바꾸면서 카드 컴포넌트도 nullable 을 받게 했다. INCOMPLETE 를 앞에서 걸러 실제로 빈 값이 정상 카드에 들어가지는 않는다 - 토너먼트: 담기 후보에서 INCOMPLETE 를 제외하고(서버가 출전을 막는다), 바스켓에서는 클릭 가능하게 둔다(값을 채워야 하므로)
m-a-king
added a commit
to TeamPiKi/client
that referenced
this pull request
Aug 15, 2026
- 서버가 파싱이 일부만 끝난 경우 ITEM_PARSING_INCOMPLETE 알림과 status=INCOMPLETE SSE 를 보낸다 (TeamPiKi/core#945). 모르는 타입이라 switch default 로 빠져 딥링크가 동작하지 않았다 - 알림함·푸시·SSE 세 라우팅에 케이스를 더한다. 목적지는 기존 파싱 알림과 같다(위시 또는 토너먼트 담기 화면) - SSE 토스트는 실패와 갱신 대상이 같아 케이스를 합치되 문구만 info 로 가른다 — 실패가 아니라 "채워 주세요" 안내라서다
kanghaeun
added a commit
to TeamPiKi/client
that referenced
this pull request
Aug 15, 2026
* feat: 위시 아이템 INCOMPLETE 상태 대응 - 서버가 추출 결과를 일부만 채웠을 때 INCOMPLETE 를 내려준다 (TeamPiKi/core#945). 기존 코드는 FAILED·PENDING·PROCESSING 이 아니면 전부 정상 카드로 그려, 이름·가격이 빈 칸인 카드가 보이고 채우라는 유도가 없었다 - 위시 그리드에서 INCOMPLETE 를 FAILED 와 같은 편집 유도 카드로 보내되 문구만 "일부만 가져왔어요" 로 가른다 - name·price 를 nullable 로 바꾸면서 카드 컴포넌트도 nullable 을 받게 했다. INCOMPLETE 를 앞에서 걸러 실제로 빈 값이 정상 카드에 들어가지는 않는다 - 토너먼트: 담기 후보에서 INCOMPLETE 를 제외하고(서버가 출전을 막는다), 바스켓에서는 클릭 가능하게 둔다(값을 채워야 하므로) * feat: 토너먼트 아이템 상세에 incomplete 상태 처리 추가 * refactor: 리터럴/상수로 섞어 쓰던 곳을 ITEM_STATUS 로 통일 * feat: 토너먼트 시작 차단에 INCOMPLETE 포함 * feat: INCOMPLETE 를 수정 화면으로 링크 * chore: 불필요한 파싱 상태 주석 정리 --------- Co-authored-by: kanghaeun <xgkg0330@jnu.ac.kr>
kanghaeun
pushed a commit
to TeamPiKi/client
that referenced
this pull request
Aug 15, 2026
- 서버가 파싱이 일부만 끝난 경우 ITEM_PARSING_INCOMPLETE 알림과 status=INCOMPLETE SSE 를 보낸다 (TeamPiKi/core#945). 모르는 타입이라 switch default 로 빠져 딥링크가 동작하지 않았다 - 알림함·푸시·SSE 세 라우팅에 케이스를 더한다. 목적지는 기존 파싱 알림과 같다(위시 또는 토너먼트 담기 화면) - SSE 토스트는 실패와 갱신 대상이 같아 케이스를 합치되 문구만 info 로 가른다 — 실패가 아니라 "채워 주세요" 안내라서다
kanghaeun
added a commit
to TeamPiKi/client
that referenced
this pull request
Aug 15, 2026
* feat: INCOMPLETE 파싱 알림 타입·SSE 상태 대응 - 서버가 파싱이 일부만 끝난 경우 ITEM_PARSING_INCOMPLETE 알림과 status=INCOMPLETE SSE 를 보낸다 (TeamPiKi/core#945). 모르는 타입이라 switch default 로 빠져 딥링크가 동작하지 않았다 - 알림함·푸시·SSE 세 라우팅에 케이스를 더한다. 목적지는 기존 파싱 알림과 같다(위시 또는 토너먼트 담기 화면) - SSE 토스트는 실패와 갱신 대상이 같아 케이스를 합치되 문구만 info 로 가른다 — 실패가 아니라 "채워 주세요" 안내라서다 * chore: 불필요한 파싱 상태 주석 정리 --------- Co-authored-by: kanghaeun <xgkg0330@jnu.ac.kr> Co-authored-by: kanghaeun <145974230+kanghaeun@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Situation
Task
Action
상태 모델
PENDING·PROCESSING 과 READY 사이에 INCOMPLETE 를 신설했다. 결과는 추출이 무엇을 건졌는지로만 갈린다.
markReady를markExtracted로 바꿨다.ItemSnapshot.manual)이 이미 "base 값에 입력을 병합해 필수 필드가 차면 READY 새 버전을 쌓는" 로직을 갖고 있어, INCOMPLETE 를 base 로 그대로 태웠다.isReady()하나로 모여 있어, 토너먼트 출전 자격 검사는 코드 변경 없이 INCOMPLETE 를 걸러낸다.알림
완료 알림을 재사용할지 새 타입을 팔지 저울질했다.
관측
incomplete를 더했다. 섞으면 "우리가 못 끝낸 것"과 "사용자가 마저 채울 것"이 한 숫자가 되어 실패율이 실제보다 나쁘게 보인다.Result
contracts/extraction-api.md)이 아직 "세 필드 non-null 을 extractor 가 보장한다, 못 채우면 422" 로 되어 있어 별도 PR 로 고쳐야 한다.연관 이슈