You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix(mindrecord): 예외 원문이 화면에 그대로 실린다 2곳 — UiText.DynamicOrResource 가 fallback 을 덮는다 #1882
// 필수로 두던 시절에는 여기서 MissingFieldException 이 나 탭 전체가 ErrorBox 였고,// UiText.DynamicOrResource 가 e.message 를 우선해 영문 예외 원문까지 노출됐다.
그때는 DTO 필드를 옵셔널로 내려 그 예외가 안 나게 막았습니다. 노출 기전 자체는 그대로 살아 있어서, 다른 예외가 그 자리에 오면 같은 일이 다시 납니다. 직렬화 예외 문구·서버 오류 원문·SocketTimeoutException 같은 영문 스택 용어가 그대로 사용자에게 갑니다.
이 저장소는 이미 반대 방향으로 판정했습니다 — 서버 오류 원문은 화면에 내지 않고 로그·텔레메트리로만 보냅니다 (#1339 에서 수신자 흐름에 적용, 커밋 9aeb1e437 에서 재확인).
어떻게 고치는가
두 자리의 value = e.message 를 걷고 UiText.resource(...) 로 fallback 만 남긴다.
UiText.DynamicOrResource 자체의 처분을 정한다. 이 타입을 쓰는 프로덕션 자리는 위 둘뿐이라, 걷어내면 같은 실수를 다시 할 수 있는 문법이 사라진다. KDoc 이 「서버/예외가 메시지를 주면 그대로」라고 적어 두어 지금은 안티패턴을 권하는 모양입니다. 다만 core:ui 는 담당이 다르므로(reconcile-issue-metadata.mjs:49), 이 이슈는 소비처 0 으로 만드는 데까지 하고 타입 삭제는 별건으로 넘긴다.
회귀를 잠근다 — 두 ViewModel 이 실패했을 때 상태에 실리는 UiText 가 Resource 인지 단언한다. value = e.message 를 되살리면 빨개져야 한다.
완료 조건
git grep "DynamicOrResource" -- '*/src/main/*' 이 core/ui 의 타입 정의 외 0건
두 화면의 실패 안내가 기존 한국어 fallback 문자열로 고정된다
두 실패가 ErrorReporter 로 단계 키와 함께 기록된다 (원문 유실 없음)
되돌림을 잡는 단언이 붙는다 — 그 줄을 되살리면 실패하는 것을 실제로 확인한 근거를 PR 에 적는다
UiText.DynamicOrResource 타입 삭제는 후속 이슈로 분리한다 (core:ui 담당 몫)
Activity
github-actions commentedon Sep 4, 2026
이 이슈는 필수 메타데이터를 판정할 수 없어 자동으로 닫았습니다.
작업 유형이 없거나 허용된 값이 아닙니다.주 담당 모듈이 없거나 허용된 값이 아닙니다.이슈 등록 양식에 맞게 본문을 보완한 뒤 다시 열어 주세요.
github-actions commentedon Sep 4, 2026
bug 이슈는 사이드바 Fields > Priority 로 심각도를 지정해야 합니다. 판정 기준:
값이 비어 있어도 이슈를 닫지는 않습니다. 이 안내는 이슈당 한 번만 답니다.