fix(desktop): 한글 IME Enter 중복 addMemo 가드 + Meeting pre-push 직접 실증 (빅뱅 Phase 5 Part 4)
Phase 5 Part 3에서 남겨둔 U2(Fix 1 직접 시연 미수행)를 해소하고, 실증 중 발견한 한글 IME Enter 중복 addMemo 버그(Bug 10)를 같이 픽스. ## Bug 10 — 한글 IME Enter 중복 addMemo - 증상: 실증 녹음 중 한글 메모 "메모 기능이 잘 작동하는지 봅니다"가 2ms 간격으로 2번 저장 (로그 21:47:57.410/.412, UUID c7f0db45 + a6e442cc). 5개 메모 중 이 하나만 중복 — 조합이 아직 확정 안 된 상태에서 Enter를 친 메모에서만 발생. - 원인: 한글 IME 조합 중 Enter → Chromium이 keydown 2번 발화 ((1) IME 조합 확정 isComposing=true/keyCode=229, (2) 실제 Enter 액션). MeetingModePage.tsx:164-174의 handleMemoKeyDown이 e.key === 'Enter' && !e.shiftKey만 검사하고 isComposing을 무시해 두 이벤트에서 모두 handleAddMemo() 발화 → IPC 2회 → addMemo() 2회. - 수정: MeetingModePage.tsx:168에 이중 가드 추가. isComposing은 모던 표준, keyCode === 229는 조합 확정 시점에 isComposing이 false로 내려가면서 keyCode만 229로 주는 Chromium 엣지 케이스 호환. - 검증: Vite HMR로 즉시 반영 후 재시연 녹음(78421e75)에서 한글 메모 5건 연속 → 전원 1:1 매핑, 중복 0. ## Fix 1 (Phase 3.3 startRecording pre-push) 직접 실증 재시연 녹음 78421e75 (21:51:24~21:51:50, 약 26초) 로그 타임라인: 21:51:24.937 pushOne meetings/78421e75 ok <- Fix 1 pre-push (676ms) 21:51:30.499 pushOne meeting_memos/4ed7e59a ok <- addMemo #1 (113ms) 21:51:32.202 pushOne meeting_memos/de011c15 ok <- addMemo #2 (78ms) 21:51:35.893 pushOne meeting_memos/3184fe5e ok <- addMemo #3 (66ms) 21:51:38.263 pushOne meeting_memos/00f041ef ok <- addMemo #4 (82ms) 21:51:40.740 pushOne meeting_memos/0808c4d2 ok <- addMemo #5 (64ms) 21:51:50.681 pushOne meetings/78421e75 ok <- _runPostProcessing (108ms) 21:51:50.709 pushOne history/70388090 ok <- CaptionService→History meetings/78421e75가 녹음 시작 + 종료 두 번 push된 것이 Fix 1의 직접 증거 — 부모 row가 메모 push 시점에 이미 Supabase에 존재했기 때문에 메모 5건이 RLS/FK 차단 없이 통과. Bug 7 재현 방지 확인. ## 잠재 IME 버그 7곳 동일 패턴의 Enter 핸들러 7곳에 가드 없음 (KnowledgeBasePage:85, VoiceConversationPage:114, MeetingChatPanel:113, EditableSegment:72, MeetingDetailTabs:242, HistoryEntryCard:65, CommandsPage:337). 다음 세션 /simplify 패스에서 일괄 처리 예정. ## 검증 - desktop tsc --noEmit EXIT=0 - Meeting 녹음 2회차 실증 통과 memory/project_status.md SaaS [11] 섹션 추가.
This commit is contained in:
parent
2a8efa81af
commit
96e23f57bc
2 changed files with 57 additions and 0 deletions
|
|
@ -163,6 +163,9 @@ export function MeetingModePage(): React.ReactElement {
|
|||
|
||||
const handleMemoKeyDown = useCallback(
|
||||
(e: React.KeyboardEvent) => {
|
||||
// 한글 IME 조합 중 Enter는 keydown을 2번 발화(조합 확정 + 실제 Enter)하므로
|
||||
// isComposing=true인 이벤트는 무시해 addMemo 중복 호출 방지
|
||||
if (e.nativeEvent.isComposing || e.keyCode === 229) return
|
||||
if (e.key === 'Enter' && !e.shiftKey) {
|
||||
e.preventDefault()
|
||||
handleAddMemo()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue