|
|
/* 아리 — 메일 데이터 (여러 계정 통합 · 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 };
|
|
|
})();
|