From 6a9234d13b2e60fb4cba6eadacb6b940aed5f76d Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Fri, 14 Aug 2026 02:47:06 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=A9=94=EC=9D=BC=20=EC=83=81=EC=84=B8?= =?UTF-8?q?=20=ED=99=94=EB=A9=B4=EC=97=90=20=EC=9A=B0=EC=B8=A1=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=ED=8C=A8=EB=84=90(=EC=B0=B8=EC=97=AC=EC=9E=90,=20?= =?UTF-8?q?=EC=B2=A8=EB=B6=80=ED=8C=8C=EC=9D=BC,=20=EC=9D=BC=EC=A0=95=20?= =?UTF-8?q?=EC=A0=9C=EC=95=88)=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/EmailDetail.test.tsx | 4 ++ frontend/src/components/EmailDetail.tsx | 69 +++++++++++++++++++- verification.mjs | 32 +++++++++ 3 files changed, 102 insertions(+), 3 deletions(-) create mode 100644 verification.mjs diff --git a/frontend/src/components/EmailDetail.test.tsx b/frontend/src/components/EmailDetail.test.tsx index db2b617b6..a1e72d9c6 100644 --- a/frontend/src/components/EmailDetail.test.tsx +++ b/frontend/src/components/EmailDetail.test.tsx @@ -50,6 +50,10 @@ vi.mock("lucide-react", () => ({ RefreshCw: () => , Info: () => , Loader2: () => , + Users: () => , + Paperclip: () => , + Calendar: () => , + MessagesSquare: () => , X: () => , })); diff --git a/frontend/src/components/EmailDetail.tsx b/frontend/src/components/EmailDetail.tsx index e634a896c..cc322bb48 100644 --- a/frontend/src/components/EmailDetail.tsx +++ b/frontend/src/components/EmailDetail.tsx @@ -8,7 +8,7 @@ import { Checkbox } from "@/components/ui/checkbox"; import { Button } from "@/components/ui/button"; import { Textarea } from "@/components/ui/textarea"; import { Input } from "@/components/ui/input"; -import { Loader2, MessagesSquare } from "lucide-react"; +import { Loader2, MessagesSquare, Users, Paperclip, Calendar } from "lucide-react"; import { DecisionPointCard } from "@/components/DecisionPointCard"; import { SourceDrawer } from "@/components/SourceDrawer"; import { @@ -29,6 +29,9 @@ import { type EmailData = ThreadEmailData & { requires_reply?: boolean; schedule_conflict?: boolean; + attachments?: Array<{ id: string; name: string; size: string }>; + participants?: Array<{ name: string; email: string; role: string }>; + meeting_proposals?: Array<{ id: string; title: string; time: string }>; }; interface LlmData { summary: string; @@ -649,8 +652,9 @@ export const EmailDetail = memo(function EmailDetail({ emailId, actionCommand = - -
+
+ +
+ +
{ + const browser = await chromium.launch({ headless: true }); + const page = await browser.newPage(); + try { + // Navigate straight to a known layout component containing EmailDetail if possible, or force the inbox view + await page.goto('http://localhost:3000', { waitUntil: 'networkidle' }); + + // Click the "메일" button in the GNB to go to the inbox + const mailTab = page.locator('button').filter({ hasText: '메일' }).first(); + if (await mailTab.isVisible()) { + await mailTab.click(); + await page.waitForTimeout(1000); + } + + // Attempt to click the first email in the list + const firstEmail = page.locator('.group').first(); + if (await firstEmail.isVisible()) { + await firstEmail.click(); + } + + // Wait for the EmailDetail side panel elements + await page.waitForTimeout(1500); // Give it time to render the layout + await page.screenshot({ path: '/home/jules/verification/email_detail_panel.png' }); + console.log("Screenshot saved"); + } catch (err) { + console.error("Error:", err); + } finally { + await browser.close(); + } +})();