From aef67aa310d8e3bc8df0f4aaa20a2ffd2f879f11 Mon Sep 17 00:00:00 2001 From: ttipo Date: Thu, 29 Oct 2026 08:38:01 +0900 Subject: [PATCH] =?UTF-8?q?feat(frontend):=20=ED=95=84=ED=84=B0=20?= =?UTF-8?q?=EA=B3=A0=EC=B9=98=EA=B8=B0=20=EC=B0=BD=20=E2=80=94=20=EC=9D=B4?= =?UTF-8?q?=EB=AF=B8=20=EB=B0=9B=EC=9D=80=20=EB=A9=94=EC=9D=BC=EC=97=90?= =?UTF-8?q?=EB=8F=84=20=EC=A0=81=EC=9A=A9=20=C2=B7=20=EB=82=98=EA=B0=80?= =?UTF-8?q?=EA=B8=B0=20=ED=99=95=EC=9D=B8,=20=EB=B6=80=EC=9E=AC=EC=A4=91?= =?UTF-8?q?=20=EB=8F=99=EC=9E=91=20=EC=95=88=20=ED=95=A8=20=EC=A4=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 고치기 창의 「받은편지함에 이미 있는 메일에도 적용」(창을 열 때마다 꺼짐): 저장한 뒤 cursor 가 끝날 때까지 보내며 진행 알림을 고치고, 끝나면 그 자리에서 결과(적용한 수 · [{메일함} 보기], 멈추면 [다시 시도]로 이어서) - 이미 받은 메일에 할 일이 없는 필터(지워진 메일함 · 받은편지함으로만 · 전달만)와 이 탭에서 적용 중에는 칸을 끈다. 실패 알림은 응답이 온 때 세션이 그대로일 때만, 나아가지 못한 응답이 세 번이면 멈춘다 - 고치기 창의 나가기 확인([취소] · Esc · 다른 화면 · 탭 닫기 — 6단계의 한계를 고친다). 브라우저가 스스로 닫은 창은 ModalDialog 의 reshow() 로 다시 띄우고 초점을 닫히기 전 자리로 돌려준다 - 부재중 화면: 켜 둔 자동 응답이 엔진에서 꺼져 있으면(isActive: false) 머리 아래 노란 줄 - 진행 알림의 결과에도 단추를 붙인다(useToast) Co-Authored-By: Claude Opus 5.5 --- .../feedback/LeaveConfirmDialog.vue | 3 +- .../components/feedback/ModalDialog.spec.ts | 53 ++ .../src/components/feedback/ModalDialog.vue | 27 +- .../src/components/mail/MailboxPanel.spec.ts | 5 +- .../settings/MailFilterApplyField.vue | 132 +++++ .../components/settings/MailFilterDialog.vue | 102 +++- .../components/settings/MailFilterNotes.vue | 14 +- .../components/settings/MailFilterNotice.vue | 17 +- .../src/composables/useDialogLeaveConfirm.ts | 78 +++ frontend/src/composables/useMail.spec.ts | 37 +- frontend/src/composables/useMail.ts | 50 +- .../src/composables/useMailFilterActions.ts | 18 +- .../src/composables/useMailFilterDialog.ts | 8 +- .../src/composables/useMailFilterRun.spec.ts | 403 ++++++++++++++ frontend/src/composables/useMailFilterRun.ts | 135 +++++ frontend/src/composables/useToast.ts | 22 +- .../src/pages/settings/MailFilterPage.spec.ts | 513 +++++++++++++++++- .../src/pages/settings/MailFilterPage.vue | 7 +- .../pages/settings/MailVacationPage.spec.ts | 54 +- .../src/pages/settings/MailVacationPage.vue | 17 +- frontend/src/shared/constants/mail-filter.ts | 89 ++- .../src/shared/constants/mail-vacation.ts | 5 + frontend/src/shared/constants/mail.ts | 5 + frontend/src/shared/types/mail.ts | 47 +- .../src/shared/utils/mail-filter-run.spec.ts | 143 +++++ frontend/src/shared/utils/mail-filter-run.ts | 121 +++++ frontend/src/shared/utils/mail-filter.spec.ts | 29 + frontend/src/shared/utils/mail-filter.ts | 34 +- .../src/stores/mail-filter-run.store.spec.ts | 211 +++++++ frontend/src/stores/mail-filter-run.store.ts | 104 ++++ .../src/stores/mail-vacation.store.spec.ts | 37 +- frontend/src/stores/mail-vacation.store.ts | 14 +- frontend/src/stores/toast.store.spec.ts | 29 + 33 files changed, 2479 insertions(+), 84 deletions(-) create mode 100644 frontend/src/components/settings/MailFilterApplyField.vue create mode 100644 frontend/src/composables/useDialogLeaveConfirm.ts create mode 100644 frontend/src/composables/useMailFilterRun.spec.ts create mode 100644 frontend/src/composables/useMailFilterRun.ts create mode 100644 frontend/src/shared/utils/mail-filter-run.spec.ts create mode 100644 frontend/src/shared/utils/mail-filter-run.ts create mode 100644 frontend/src/stores/mail-filter-run.store.spec.ts create mode 100644 frontend/src/stores/mail-filter-run.store.ts diff --git a/frontend/src/components/feedback/LeaveConfirmDialog.vue b/frontend/src/components/feedback/LeaveConfirmDialog.vue index f0d5e99..b69db0e 100644 --- a/frontend/src/components/feedback/LeaveConfirmDialog.vue +++ b/frontend/src/components/feedback/LeaveConfirmDialog.vue @@ -1,6 +1,7 @@ + + + + diff --git a/frontend/src/components/settings/MailFilterDialog.vue b/frontend/src/components/settings/MailFilterDialog.vue index cccc4f1..9c1255c 100644 --- a/frontend/src/components/settings/MailFilterDialog.vue +++ b/frontend/src/components/settings/MailFilterDialog.vue @@ -1,7 +1,8 @@