From 438dac8e01b410960919ce3238268faeb858f41d Mon Sep 17 00:00:00 2001 From: ttipo Date: Sat, 7 Nov 2026 10:49:27 +0900 Subject: [PATCH] =?UTF-8?q?fix(frontend):=20=EA=B0=99=EC=9D=80=20=EB=8C=80?= =?UTF-8?q?=ED=99=94=20=EC=B9=B8=EC=9D=98=20=EC=95=88=20=EC=9D=BD=EC=9D=80?= =?UTF-8?q?=20=EC=A4=84=EC=9D=84=20=EA=B5=B5=EA=B2=8C=20=C2=B7=20=ED=8C=A8?= =?UTF-8?q?=EB=84=90=20[=EC=A1=B0=EA=B1=B4=20=EC=A7=80=EC=9A=B0=EA=B8=B0]?= =?UTF-8?q?=EB=8A=94=20=EC=B9=B8=EB=A7=8C=20=EB=B9=84=EC=9A=B4=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 2026-11-07 사용자가 사용자 관점 점검의 보드 바꾸기 제안을 추천대로 정했다. - 같은 대화 칸: 안 읽은 줄을 목록 줄처럼 굵게 그리고 화면 낭독에 "안 읽음, "을 붙인다. 이 탭이 바꾼 읽음(펼침 · 읽기 화면 · 목록 · 여러 통 처리 · 모두 읽음)은 줄에 바로 적고, 받는 동안 바꾼 것은 받은 값보다 앞세운다. 읽음만 바뀐 소식으로는 다시 받지 않는다(메일을 열 때마다 다시 받게 되므로). - 여러 통 처리가 실패하면 바꾼 표시만 되돌린다(중요 표시 실패가 읽음을 덮지 않게). - 조건 패널의 [조건 지우기]는 칸만 비우고 패널을 열어 둔다(찾지 않는다). 조건만 걸린 검색에서 비운 채 [찾기]를 누르면 검색을 닫는다. - 검색 결과 미리 보기 줄의 강조는 글자를 --color-text-secondary 로 진하게 한다 (노랑 위 대비 4.05:1 → 6.3:1). Co-Authored-By: Claude Opus 5.5 --- .../mail/ConversationMessageRow.vue | 36 +++- .../src/components/mail/HighlightedText.vue | 5 +- .../src/components/mail/MailSearchBox.spec.ts | 115 ++++++++++-- .../src/components/mail/MailSearchBox.vue | 17 +- .../mail/MailSearchConditionFields.vue | 7 +- .../components/mail/MailSearchConditions.vue | 13 +- .../mail/MessageConversation.spec.ts | 103 ++++++++++- .../components/mail/MessageConversation.vue | 1 + .../src/components/mail/MessageListItem.vue | 8 + .../composables/useMailSearchNavigation.ts | 13 +- .../composables/useSearchConditionsDraft.ts | 12 +- .../src/pages/mail/MailboxPage.search.spec.ts | 28 +++ frontend/src/shared/constants/mail.ts | 3 +- .../shared/utils/mail-conversation.spec.ts | 21 +++ .../src/shared/utils/mail-conversation.ts | 7 +- .../stores/mail.store.conversation.spec.ts | 163 +++++++++++++++++- frontend/src/stores/mail.store.ts | 3 +- frontend/src/stores/mail/bulk.ts | 12 +- frontend/src/stores/mail/conversation.ts | 109 +++++++++++- frontend/src/stores/mail/list.ts | 43 ++++- frontend/src/stores/mail/mailbox-admin.ts | 2 + 21 files changed, 668 insertions(+), 53 deletions(-) diff --git a/frontend/src/components/mail/ConversationMessageRow.vue b/frontend/src/components/mail/ConversationMessageRow.vue index c984aeb..0c16ab9 100644 --- a/frontend/src/components/mail/ConversationMessageRow.vue +++ b/frontend/src/components/mail/ConversationMessageRow.vue @@ -4,11 +4,14 @@ // - 다른 메일: 단추(aria-expanded · 펼쳤을 때 aria-controls) — 누르면 그 자리에서 펼치고(ConversationMessagePanel) 다시 누르면 접는다. // 펼친 안의 [다시 시도]가 사라지면 칸이 초점을 이 단추(data-conversation-toggle)로 돌려준다 (MessageConversation) // - 붙잡힌 메일(보내기 취소 · 예약 — 9단계)은 시각 자리에 목록과 같은 "보내는 중" · "예약 · …"(청록 굵게) +// - 안 읽은 메일(row.unread — 2026-11-07)은 목록 줄(MessageListItem)과 같은 굵기 · 색: 이름 650, 미리 보기 · 시각 600(목록 줄의 제목 · 시각 자리). +// 화면 낭독은 이름 앞에 목록과 같은 "안 읽음, "(MAIL_LIST_ROW_TEXT). 지금 보는 메일의 줄도 같다 // 뱃지 · 알약 없이 글로만 보인다. 검색 강조는 넣지 않는다 import { computed } from 'vue' import AppIcon from '@/components/AppIcon.vue' import ConversationMessagePanel from '@/components/mail/ConversationMessagePanel.vue' +import { MAIL_LIST_ROW_TEXT } from '@/shared/constants/mail' import { MAIL_CONVERSATION_TEXT } from '@/shared/constants/mail-conversation' import type { ConversationRow } from '@/shared/utils/mail-conversation' import type { ConversationDetailState } from '@/stores/mail.store' @@ -40,7 +43,7 @@ const panelId = computed(() => `conversation-panel-${props.row.message.id}`)