/* 아리 — 메일 데이터 (여러 계정 통합 · AI 분석 포함) */ (function () { /* ---------- 계정 (여러 어카운트 수입) ---------- */ const accounts = [ { id: "work", name: "회사", email: "jiwoo@lumi.co", tone: "coral", kind: "Lumi Workspace", unread: 3 }, { id: "personal", name: "개인", email: "jiwoo.kim@gmail.com", tone: "blue", kind: "Google", unread: 2 }, { id: "side", name: "사이드", email: "jiwoo@hey.com", tone: "violet", kind: "HEY", unread: 1 }, ]; const acc = Object.fromEntries(accounts.map((a) => [a.id, a])); /* ---------- 폴더 / 스마트뷰 ---------- */ const folders = [ { id: "inbox", name: "받은편지함", icon: "inbox" }, { id: "starred", name: "별표", icon: "star" }, { id: "sent", name: "보낸편지함", icon: "send" }, { id: "drafts", name: "임시보관함", icon: "file" }, { id: "archive", name: "보관함", icon: "archive" }, ]; /* ---------- 사람 ---------- */ const people = { hyunwoo: { name: "현우", email: "hyunwoo@lumi.co", initial: "현", c: "var(--violet)", role: "프로덕트 디자이너" }, daepyo: { name: "서지원 대표", email: "jiwon@lumi.co", initial: "서", c: "var(--coral)", role: "대표이사" }, minseo: { name: "민서", email: "minseo@lumi.co", initial: "민", c: "var(--green)", role: "팀 리드" }, sua: { name: "수아", email: "sua@lumi.co", initial: "수", c: "oklch(0.66 0.13 200)", role: "UX 리서처" }, jaeho: { name: "재호", email: "jaeho@lumi.co", initial: "재", c: "var(--amber)", role: "데이터 분석" }, bank: { name: "우리카드", email: "no-reply@wooricard.com", initial: "우", c: "oklch(0.6 0.12 250)", role: "카드 명세" }, book: { name: "수요 독서모임", email: "club@bookwed.kr", initial: "독", c: "oklch(0.62 0.1 150)", role: "모임 운영" }, stripe: { name: "Stripe", email: "receipts@stripe.com", initial: "S", c: "oklch(0.6 0.15 285)", role: "결제 영수증" }, recruit: { name: "박서연 (지원자)", email: "seoyeon.p@gmail.com", initial: "박", c: "oklch(0.64 0.12 30)", role: "프로덕트 디자이너 지원" }, me: { name: "지우", email: "jiwoo@lumi.co", initial: "지", c: "var(--blue)", me: true }, }; const P = (s) => s.split("\n").map((t) => t.trim()).filter(Boolean); /* ---------- 메일 (최신순) ---------- ai: 아리가 새 메일을 분석해 준비해 둔 작업 묶음 summary : 한두 줄 요약 priority : 높음 | 보통 | 낮음 category : 분류 라벨 tasks : [{ text, project, due, prio }] events : [{ title, date, day, time, dur }] replies : [{ tone, preview, body }] file : { project, reason } 프로젝트 정리 제안 */ const emails = [ { id: "m1", account: "work", from: "hyunwoo", to: "나", subject: "온보딩 시안 v3 — 금요일까지 피드백 부탁드려요", time: "8분 전", date: "오늘 09:12", read: false, starred: false, hasAttach: true, attachments: [{ name: "온보딩_v3.fig", size: "4.2MB" }, { name: "변경사항_요약.pdf", size: "320KB" }], labels: ["디자인"], preview: "지우님, 리뷰에서 나온 코멘트 반영해서 v3 정리했어요. 환영·권한요청·음성안내 3개 화면이 바뀌었고…", body: P(`지우님, 안녕하세요. 현우입니다. 지난 디자인 리뷰에서 주신 코멘트 반영해서 온보딩 시안 v3 정리했습니다. 이번에 바뀐 건 크게 세 화면이에요. 1) 환영 화면 — 카피 톤을 조금 더 친근하게 바꿨고, 일러스트는 교체 요청 넣어둔 상태입니다. 2) 권한 요청 화면 — 요청 순서를 재배치했어요. (알림 → 위치 → 연락처) 3) 음성 안내 화면 — 신규 추가했습니다. 한 번 봐주시면 좋겠어요. 금요일(6/13)까지 피드백 주시면 다음 스프린트에 바로 반영하겠습니다. 피그마 링크랑 변경사항 요약본 첨부했어요. 감사합니다!`), ai: { summary: "온보딩 시안 v3 도착 — 3개 화면(환영·권한요청·음성안내) 수정. 금요일 6/13까지 피드백 요청.", priority: "높음", category: "검토 요청", tasks: [ { text: "온보딩 시안 v3 피드백 정리", project: "온보딩 리디자인 · 와이어프레임", due: "6/13", prio: "높음" }, { text: "음성 안내 화면 신규 검토", project: "온보딩 리디자인 · 음성 인터페이스", due: "6/12", prio: "보통" }, ], events: [], replies: [ { tone: "수락 · 일정 약속", preview: "금요일까지 피드백 드릴게요", body: "현우님, 잘 받았어요! 오늘 중으로 살펴보고 금요일 오전까지 화면별로 코멘트 정리해서 드릴게요. 음성 안내 화면은 특히 꼼꼼히 볼게요. 수고하셨어요 👏" }, { tone: "질문 추가", preview: "권한 요청 순서 근거가 궁금해요", body: "현우님, 시안 잘 봤어요. 권한 요청 순서를 알림 → 위치 → 연락처로 두신 근거가 따로 있을까요? 리서치 결과랑 연결해서 보면 좋을 것 같아 여쭤봐요." }, { tone: "간단 확인", preview: "확인했고 회신 예정", body: "확인했습니다, 현우님! 금요일까지 피드백 드릴게요." }, ], file: { project: "온보딩 리디자인", reason: "‘와이어프레임’ 작업과 직접 연결돼요" }, }, }, { id: "m2", account: "work", from: "daepyo", to: "나, 재무팀", subject: "[중요] 오늘 14시 분기 전략 미팅 — 리포트 초안 공유 부탁", time: "42분 전", date: "오늘 08:38", read: false, starred: true, hasAttach: false, labels: ["경영진"], preview: "지우님, 오늘 오후 미팅 전에 분기 리포트 초안 미리 돌려볼 수 있을까요? 특히 매출·예산 섹션 위주로…", body: P(`지우님, 오늘 오후 2시 분기 전략 미팅 잘 부탁드려요. 미팅 전에 분기 리포트 초안을 미리 공유해 주시면 다같이 보고 들어갈 수 있을 것 같아요. 특히 매출 섹션과 예산 재배분 안건은 의사결정이 필요한 부분이라, 숫자가 확정된 버전으로 부탁드립니다. 리텐션 지표는 지난번 버전으로도 충분해요. 미팅은 60분, 대회의실입니다. 늦지 않게 시작하면 좋겠어요. 고생 많으십니다. 서지원 드림`), ai: { summary: "오늘 14시 분기 전략 미팅 전, 매출·예산 섹션 확정본 리포트 공유 요청. 의사결정 안건 포함.", priority: "높음", category: "마감 임박", tasks: [ { text: "분기 리포트 매출 섹션 숫자 확정", project: "경영 전략 · 분기 리포트", due: "6/10", prio: "높음" }, { text: "예산 재배분 안건 1p 요약", project: "경영 전략 · 예산 관리", due: "6/10", prio: "높음" }, { text: "미팅 시작 전 리포트 메일로 공유", project: "경영 전략 · 분기 리포트", due: "6/10", prio: "높음" }, ], events: [ { title: "분기 전략 미팅", date: "6/10", day: "오늘", time: "14:00", dur: "60분", place: "대회의실" }, ], replies: [ { tone: "확정 회신", preview: "13시까지 확정본 공유할게요", body: "대표님, 확인했습니다. 매출·예산 섹션 숫자 확정해서 오후 1시까지 미팅 참석자분들께 공유드리겠습니다. 예산 재배분 안건은 1페이지 요약 따로 붙여둘게요." }, { tone: "일부 지연 양해", preview: "예산 섹션만 미팅 중 공유", body: "대표님, 매출 섹션은 1시까지 확정해서 보내드리겠습니다. 예산 재배분 안건은 재무팀 최종 확인이 오전 중 마무리되는 대로, 늦어도 미팅 직전에 공유드릴게요." }, ], file: { project: "경영 전략", reason: "‘분기 리포트’ 마감 작업과 연결돼요" }, }, }, { id: "m3", account: "work", from: "minseo", to: "나", subject: "오늘 1:1 안건 미리 정리해뒀어요", time: "2시간 전", date: "오늘 07:50", read: false, starred: false, hasAttach: false, labels: ["팀"], preview: "지우님, 오후 1:1 때 이야기 나누고 싶은 거 두 가지 정리했어요. 1) 하반기 성장 로드맵 2) 업무 분장…", body: P(`지우님, 좋은 아침이에요! 오늘 오후 1:1 때 이야기 나누고 싶은 거 미리 정리해봤어요. 1) 하반기 성장 로드맵 — 제 쪽 OKR이랑 어떻게 맞물리면 좋을지 같이 보면 좋겠어요. 2) 업무 분장 — 리서치 보드 업데이트랑 회고 문서 배포, 둘 중 하나는 재호님께 넘기는 게 어떨까요? 편하게 오시면 됩니다. 이따 봬요 :)`), ai: { summary: "오늘 1:1(16:30) 안건 2건: 하반기 성장 로드맵, 업무 분장(재호님께 일부 위임 제안).", priority: "보통", category: "준비 필요", tasks: [ { text: "1:1 전 하반기 로드맵 초안 훑어보기", project: "팀 운영", due: "6/10", prio: "보통" }, ], events: [ { title: "1:1 — 민서님", date: "6/10", day: "오늘", time: "16:30", dur: "30분", place: "포커스룸 B" }, ], replies: [ { tone: "준비해서 갈게요", preview: "로드맵 보고 갈게요", body: "민서님, 정리 고마워요! 1:1 전에 하반기 로드맵 초안 한 번 보고 갈게요. 업무 분장은 재호님 일정도 같이 보면서 정리하면 좋겠어요. 이따 봬요 :)" }, ], file: { project: "팀 운영", reason: "1:1·업무 분장 관련 항목이에요" }, }, }, { id: "m4", account: "personal", from: "bank", to: "나", subject: "[우리카드] 6월 결제 예정 명세서 안내", time: "5시간 전", date: "오늘 04:30", read: false, starred: false, hasAttach: false, labels: ["금융"], preview: "고객님의 6월 결제 예정 금액은 1,284,500원입니다. 결제일은 6월 25일이며, 등록된 카드…", body: P(`안녕하세요, 우리카드입니다. 고객님의 6월 결제 예정 금액을 안내드립니다. · 결제 예정 금액: 1,284,500원 · 결제 예정일: 2026년 6월 25일 · 결제 계좌: 우리은행 (***-12) ※ 등록하신 결제 카드의 유효기간이 6월 말 만료될 예정입니다. 자동 결제 중단을 막으려면 카드 정보를 갱신해 주세요. 본 메일은 발신 전용입니다.`), ai: { summary: "6월 결제 예정 1,284,500원(6/25). 결제 카드 유효기간 6월 말 만료 → 갱신 필요.", priority: "보통", category: "금융 · 액션 필요", tasks: [ { text: "구독 결제 카드 정보 갱신 (말일 전)", project: "개인", due: "6/28", prio: "보통" }, ], events: [ { title: "카드 결제일 (1,284,500원)", date: "6/25", day: "수", time: "종일", dur: "", place: "" }, ], replies: [], file: { project: "개인", reason: "결제·구독 관리 항목이에요" }, }, }, { id: "m5", account: "side", from: "book", to: "나", subject: "이번 주 수요 독서모임 — 6/12 저녁 7시 ‘몰입’ 2부", time: "어제", date: "6월 9일 18:20", read: false, starred: false, hasAttach: false, labels: ["모임"], preview: "이번 주는 ‘몰입(Deep Work)’ 2부를 다룹니다. 장소는 합정 모임공간, 저녁 7시예요. 발제는…", body: P(`안녕하세요, 수요 독서모임입니다. 이번 주 모임 안내드려요. · 일시: 6월 12일(목) 저녁 7시 · 장소: 합정 모임공간 ‘책상’ · 범위: ‘몰입(Deep Work)’ 2부 (128~210쪽) · 발제: 지우님 (2장 담당) 지우님이 이번 주 2장 발제 맡아주셨어요. 부담 갖지 마시고 인상 깊었던 부분 위주로 준비해오시면 됩니다. 곧 뵐게요!`), ai: { summary: "6/12(목) 19시 독서모임 ‘몰입’ 2부. 지우님이 2장 발제 담당.", priority: "보통", category: "개인 일정", tasks: [ { text: "‘몰입’ 2장 발제 준비 (128~210쪽)", project: "개인 · 성장", due: "6/12", prio: "보통" }, ], events: [ { title: "수요 독서모임 (2장 발제)", date: "6/12", day: "목", time: "19:00", dur: "120분", place: "합정 ‘책상’" }, ], replies: [ { tone: "참석 확정", preview: "발제 준비해서 갈게요", body: "안녕하세요! 6/12 참석합니다. 2장 발제 준비해서 갈게요. 인상 깊었던 부분 위주로 정리해볼게요. 곧 뵐게요 :)" }, ], file: { project: "개인", reason: "독서·성장 관련 일정이에요" }, }, }, { id: "m6", account: "work", from: "recruit", to: "나", subject: "프로덕트 디자이너 지원합니다 — 박서연 포트폴리오", time: "어제", date: "6월 9일 14:05", read: true, starred: false, hasAttach: true, attachments: [{ name: "박서연_포트폴리오.pdf", size: "12MB" }], labels: ["채용"], preview: "안녕하세요, 프로덕트 디자이너 직무에 지원하는 박서연입니다. 5년 차 디자이너로 모바일 앱…", body: P(`안녕하세요, 채용 담당자님. 프로덕트 디자이너 직무에 지원하는 박서연입니다. 5년 차 디자이너로, 핀테크와 헬스케어 분야 모바일 앱 디자인을 주로 해왔습니다. 특히 온보딩 플로우 개선으로 전환율을 23% 높인 경험이 있어, Lumi의 온보딩 리디자인 방향성과 잘 맞을 것 같아 지원하게 되었습니다. 포트폴리오 첨부드립니다. 검토 후 연락 주시면 감사하겠습니다.`), ai: { summary: "프로덕트 디자이너 지원(5년 차, 온보딩 전환율 +23% 경험). 포트폴리오 첨부.", priority: "보통", category: "채용", tasks: [ { text: "박서연 포트폴리오 검토 & 1차 의견", project: "팀 운영 · 채용 & 온보딩", due: "6/13", prio: "보통" }, ], events: [], replies: [ { tone: "검토 후 회신 약속", preview: "검토 후 다음 주 연락드릴게요", body: "박서연님, 지원해 주셔서 감사합니다. 포트폴리오 잘 받았습니다. 내부 검토 후 다음 주 초 연락드리겠습니다. 좋은 하루 보내세요!" }, ], file: { project: "팀 운영", reason: "‘채용 & 온보딩’ 작업과 연결돼요" }, }, }, { id: "m7", account: "personal", from: "stripe", to: "나", subject: "Your receipt from ChatGPT Plus — $20.00", time: "2일 전", date: "6월 8일 09:00", read: true, starred: false, hasAttach: false, labels: ["영수증"], preview: "Receipt #2451-0098 · ChatGPT Plus Subscription · $20.00 paid on Jun 8, 2026…", body: P(`Receipt from OpenAI, LLC Amount paid: $20.00 Date: June 8, 2026 Subscription: ChatGPT Plus (monthly) Payment method: Visa ···· 4242 Thank you for your business.`), ai: { summary: "ChatGPT Plus 월 구독 $20 결제 영수증. 별도 조치 불필요.", priority: "낮음", category: "영수증", tasks: [], events: [], replies: [], file: { project: "개인", reason: "구독 영수증으로 보관하면 좋아요" }, }, }, { id: "m8", account: "work", from: "jaeho", to: "나, 수아", subject: "리텐션 코호트 데이터 v2 — 이탈 사유 태깅 완료", time: "2일 전", date: "6월 8일 17:42", read: true, starred: false, hasAttach: true, attachments: [{ name: "retention_cohort_v2.xlsx", size: "880KB" }], labels: ["데이터"], preview: "지우님, 수아님. 이탈 사유 태깅까지 끝내서 코호트 데이터 v2 올려요. 주차별 잔존율이랑…", body: P(`지우님, 수아님. 이탈 사유 태깅까지 마무리해서 리텐션 코호트 데이터 v2 공유드려요. 주차별 잔존율, 코호트별 이탈 사유 분포까지 정리돼 있습니다. 분기 리포트 리텐션 섹션에 바로 쓰실 수 있게 시각화용 표도 시트 2번에 넣어뒀어요. 추가로 필요한 분석 있으면 말씀 주세요.`), ai: { summary: "리텐션 코호트 v2 완료(이탈 사유 태깅 포함). 리포트용 시각화 표 포함.", priority: "보통", category: "데이터 수신", tasks: [ { text: "코호트 v2 표 → 분기 리포트 리텐션 섹션 반영", project: "경영 전략 · 분기 리포트", due: "6/10", prio: "보통" }, ], events: [], replies: [ { tone: "감사 + 확인", preview: "리포트에 반영할게요", body: "재호님, 수고하셨어요! 시각화 표까지 챙겨주셔서 감사해요. 리텐션 섹션에 바로 반영할게요. 추가 분석 필요하면 말씀드릴게요." }, ], file: { project: "경영 전략", reason: "‘분기 리포트’ 데이터 소스예요" }, }, }, ]; /* 보낸 편지함 샘플 (간단) */ const sent = [ { id: "s1", account: "work", to: "현우", toKey: "hyunwoo", subject: "온보딩 리뷰 일정 공유", time: "어제", date: "6월 9일 11:00", preview: "현우님, 다음 리뷰는 목요일 오전으로 잡았어요…", read: true }, { id: "s2", account: "work", to: "민서", toKey: "minseo", subject: "회고 문서 잘 봤어요", time: "3일 전", date: "6월 7일 16:20", preview: "민서님, 회고 문서 정리 깔끔하네요. 액션 아이템만…", read: true }, ]; /* 임시보관 샘플 */ const drafts = [ { id: "d1", account: "work", to: "재무팀", subject: "예산 재배분 안건 정리 (작성 중)", time: "1시간 전", preview: "예산 재배분 관련해서 세 가지 시나리오를…", read: true, draft: true }, ]; window.MailData = { accounts, acc, folders, people, emails, sent, drafts }; })();