basic test

This commit is contained in:
邓智航
2026-02-10 11:56:03 +08:00
parent de68563f69
commit 411d823cfa
89 changed files with 33858 additions and 2027 deletions

202
009/9-001.html Normal file

File diff suppressed because one or more lines are too long

202
009/9-002.html Normal file

File diff suppressed because one or more lines are too long

202
009/9-003.html Normal file

File diff suppressed because one or more lines are too long

219
009/9-004.html Normal file

File diff suppressed because one or more lines are too long

235
009/9-005.html Normal file

File diff suppressed because one or more lines are too long

219
009/9-006.html Normal file

File diff suppressed because one or more lines are too long

View File

@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MyGlobalMail - Inbox (3 new)</title>
<title>GlobalMail - Inbox (3 unread)</title>
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap" rel="stylesheet">
<style>
/* === CSS Variables System === */
@@ -48,7 +48,7 @@
/* === Reset & Base === */
* { box-sizing: border-box; }
body {
font-family: 'Roboto', 'Segoe UI', -apple-system, sans-serif;
font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
margin: 0;
height: 100vh;
background-color: var(--bg-body);
@@ -269,14 +269,14 @@
<!-- Header -->
<header class="app-header">
<div class="logo-area">
<span class="logo-icon">📧</span> MyGlobalMail
<span class="logo-icon">📧</span> GlobalMail (MyGlobalMail)
</div>
<div class="search-bar">
<span>🔍</span>
<input type="text" id="searchInput" placeholder="Search mail..." onkeyup="filterEmails()">
</div>
<div class="user-actions">
<div class="theme-toggle" onclick="toggleTheme()" title="Toggle Dark/Light Theme">🌓</div>
<div class="theme-toggle" onclick="toggleTheme()" title="Toggle Dark/Light Mode">🌓</div>
<div title="Notifications">🔔</div>
<div title="Settings">⚙️</div>
<div class="user-avatar">JD</div>
@@ -289,7 +289,7 @@
<!-- Sidebar -->
<aside class="sidebar">
<div class="compose-btn-wrapper">
<button class="btn-compose" onclick="openCompose()">+ New Message</button>
<button class="btn-compose" onclick="openCompose()">+ New Mail</button>
</div>
<ul id="nav-folder-list">
@@ -301,7 +301,7 @@
</li>
<li class="nav-item" onclick="selectFolder('sent')">
<div style="display:flex; align-items:center;">
<span class="nav-icon">📤</span> Sent Items
<span class="nav-icon">📤</span> Sent
</div>
</li>
<li class="nav-item" onclick="selectFolder('drafts')">
@@ -312,7 +312,7 @@
</li>
<li class="nav-item" onclick="selectFolder('junk')">
<div style="display:flex; align-items:center;">
<span class="nav-icon">🚫</span> Junk Mail
<span class="nav-icon">🚫</span> Junk
</div>
</li>
<li class="nav-item" onclick="selectFolder('trash')">
@@ -322,7 +322,7 @@
</li>
</ul>
<div class="sidebar-section-title">Labels</div>
<div class="sidebar-section-title">Tags</div>
<ul>
<li class="nav-item">
<span style="width:10px; height:10px; border-radius:50%; background:#1565c0; margin-right:12px;"></span> Work
@@ -344,10 +344,10 @@
<div class="toolbar">
<div class="tool-icon" title="Select All"><input type="checkbox" style="margin:0;" id="select-all-checkbox" onclick="toggleSelectAll()"></div>
<div class="tool-icon" title="Refresh" onclick="refreshMail()">🔄</div>
<div class="tool-icon" title="Mark Read" onclick="markSelectedAsRead()">✉️</div>
<div class="tool-icon" title="Mark as Read" onclick="markSelectedAsRead()">✉️</div>
<div class="tool-icon" title="Delete" onclick="deleteSelected()">🗑️</div>
<div style="flex:1"></div>
<div style="font-size:12px; color:var(--text-secondary);">Sort by: <b>Date</b></div>
<div style="font-size:12px; color:var(--text-secondary);">Sort: <b>Date</b></div>
</div>
<div class="mail-items-container" id="mail-list-container">
<!-- Emails will be injected here by JS -->
@@ -358,8 +358,8 @@
<section class="reading-pane" id="reading-pane">
<div class="reading-empty-state">
<div class="empty-icon">📧</div>
<h3>Select an item to read</h3>
<p>Click on an email on the left to view details.</p>
<h3>Select an email to read</h3>
<p>Click on an email from the list to view details.</p>
</div>
</section>
@@ -397,11 +397,11 @@
{
id: 1,
folder: 'inbox',
sender: 'HR Department',
sender: 'Human Resources',
senderEmail: 'hr@company.com',
subject: 'Action Required: 2026 Benefits Enrollment Open',
preview: 'The open enrollment period for 2026 benefits is now open. Please login to the portal to make your selections...',
body: `<p>Dear Employee,</p><p>We are pleased to announce that <strong>Open Enrollment for 2026 Benefits</strong> is now live!</p><p>You have until <strong>Jan 31st</strong> to make changes to your medical, dental, and vision plans.</p><ul><li>Review new premiums in the attached PDF.</li><li>Update beneficiaries if needed.</li></ul><p>Regards,<br>HR Team</p>`,
preview: '2026 Benefits Open Enrollment is now live. Please log in to the portal to make your selections...',
body: `<p>Dear Employee,</p><p>We are pleased to announce that <strong>2026 Benefits Enrollment</strong> is now live!</p><p>You have until <strong>January 31st</strong> to make changes to your medical, dental, and vision plans.</p><ul><li>Please review the new premiums in the attached PDF.</li><li>Update your beneficiaries if necessary.</li></ul><p>Best regards,<br>The HR Team</p>`,
date: '10:42 AM',
unread: true,
checked: false,
@@ -414,8 +414,8 @@
sender: 'Boss_Steve',
senderEmail: 'steve.jobs@apple-mock.com',
subject: 'URGENT: Project Beta Update Meeting',
preview: 'Can we reschedule our 2pm sync to 3pm? Something came up with the client.',
body: `<p>Hi,</p><p>Can we push the Beta review to <strong>3:00 PM</strong> today? The client just sent over some last-minute requirements we need to discuss first.</p><p>Thanks,<br>Steve</p>`,
preview: 'Can we move the 2pm sync to 3pm? Client just had a fire drill.',
body: `<p>Hi,</p><p>Can we push the Beta review to <strong>3:00 PM</strong> today? The client just sent over some last minute requirements we need to discuss first.</p><p>Thanks,<br>Steve</p>`,
date: '09:15 AM',
unread: true,
checked: false,
@@ -427,9 +427,9 @@
folder: 'inbox',
sender: 'Netflix',
senderEmail: 'info@netflix.com',
subject: 'New sign-in to your account',
preview: 'We noticed a new sign-in to your Netflix account from a new device in Brazil.',
body: `<p>Hi John,</p><p>We detected a new sign-in to your account.</p><p><strong>Device:</strong> Smart TV<br><strong>Location:</strong> São Paulo, Brazil</p><p>If this was you, you can ignore this email. If not, please change your password immediately.</p>`,
subject: 'New login to your account',
preview: 'We noticed a new login to your Netflix account from a new device in Brazil.',
body: `<p>Hi John,</p><p>We detected a new login to your account.</p><p><strong>Device:</strong> Smart TV<br><strong>Location:</strong> Sao Paulo, Brazil</p><p>If this was you, please ignore this email. If not, please change your password immediately.</p>`,
date: 'Yesterday',
unread: false,
checked: false,
@@ -442,8 +442,8 @@
sender: 'Amazon Orders',
senderEmail: 'order-update@amazon.com',
subject: 'Your package has been delivered!',
preview: 'Your package containing "Wireless Headphones..." was delivered at front door.',
body: `<p>Hello,</p><p>Your package has arrived!</p><p><strong>Tracking ID:</strong> TBA99881223<br><strong>Location:</strong> Front Porch</p><p><button style="background:#f9ab00; padding:10px; border-radius:4px; border:none; color:black; font-weight:bold;">View Order</button></p>`,
preview: 'Your package containing "Wireless Headphones..." was delivered to your front porch.',
body: `<p>Hello,</p><p>Your package has arrived!</p><p><strong>Tracking #:</strong> TBA99881223<br><strong>Location:</strong> Front Porch</p><p><button style="background:#f9ab00; padding:10px; border-radius:4px; border:none; color:black; font-weight:bold;">View Order</button></p>`,
date: 'Yesterday',
unread: true,
checked: false,
@@ -455,9 +455,9 @@
folder: 'inbox',
sender: 'Mom',
senderEmail: 'mom@family.com',
subject: 'Dinner on Sunday?',
preview: 'Are you free this Sunday for roast chicken? Dad wants to know.',
body: `<p>Hi honey,</p><p>Are you coming over this Sunday? I'm making your favorite roast chicken. Let me know so I can buy enough potatoes.</p><p>Love,<br>Mom</p>`,
subject: 'Sunday Dinner?',
preview: 'Are you free for roast chicken this Sunday? Dad wants to know.',
body: `<p>Honey,</p><p>Are you coming over this Sunday? I am making your favorite roast chicken. Let me know so I can buy enough potatoes.</p><p>Love,<br>Mom</p>`,
date: 'Jan 15',
unread: false,
checked: false,
@@ -470,9 +470,9 @@
folder: 'inbox',
sender: 'IT Support',
senderEmail: 'support@company.com',
subject: 'Planned Maintenance: This Saturday',
preview: 'System maintenance scheduled for Sat 10:00 PM - 2:00 AM. Services unavailable.',
body: `<p>Attention Team,</p><p>We will be performing upgrading server maintenance this Saturday.</p><p><strong>Impact:</strong> Email and File Servers will be down for approx 4 hours.</p>`,
subject: 'Scheduled Maintenance: This Saturday',
preview: 'System maintenance scheduled for Sat 10:00 PM - 2:00 AM. Services will be unavailable.',
body: `<p>Attention Team,</p><p>We will be performing server upgrades this Saturday.</p><p><strong>Impact:</strong> Email and file servers will be down for approx 4 hours.</p>`,
date: 'Jan 14',
unread: false,
checked: false,
@@ -499,7 +499,7 @@
sender: 'Spotify',
senderEmail: 'no-reply@spotify.com',
subject: 'Your 2025 Wrapped is here! 🎵',
preview: 'See your top songs, artists, and podcasts for the year.',
preview: 'Check out your top songs, artists, and podcasts for the year.',
body: `<p>It's that time of year!</p><h1>Your 2025 Wrapped</h1><p>Top Genre: Lo-Fi Beats<br>Top Artist: Unknown</p>`,
date: 'Jan 10',
unread: false,
@@ -513,7 +513,7 @@
sender: 'Spam Bot',
senderEmail: 'winner@lottery.com',
subject: 'YOU WON $1,000,000!!',
preview: 'Click here to claim your prize immediately before it expires.',
preview: 'Click here to claim your prize now before it expires.',
body: `<p>CLICK HERE NOW!!!</p>`,
date: 'Jan 01',
unread: true,
@@ -529,7 +529,7 @@
senderEmail: 'john.doe@globalmail.com',
subject: 'Re: Project Beta Update Meeting',
preview: 'Sure, 3pm works for me. See you then.',
body: `<p>Hi Steve,</p><p>3 PM is fine. I'll update the calendar invite.</p><p>Best,<br>John</p>`,
body: `<p>Hi Steve,</p><p>3 PM is fine. I will update the calendar invite.</p><p>Best,<br>John</p>`,
date: '09:20 AM',
unread: false,
checked: false,
@@ -542,7 +542,7 @@
sender: 'Me',
senderEmail: 'john.doe@globalmail.com',
subject: 'Draft Proposal V2',
preview: 'Attached is the revised proposal. Let me know what you think.',
preview: 'Attached is the revised proposal. Let me know your thoughts.',
body: `<p>Hi All,</p><p>Please find attached.</p>`,
date: 'Yesterday',
unread: false,
@@ -574,7 +574,8 @@
}
if (filtered.length === 0) {
container.innerHTML = `<div style="padding:40px; text-align:center; color:var(--text-secondary);">No mail in ${currentFolder}</div>`;
const folderNameCN = { 'inbox': 'Inbox', 'sent': 'Sent', 'drafts': 'Drafts', 'junk': 'Junk', 'trash': 'Trash' }[currentFolder] || currentFolder;
container.innerHTML = `<div style="padding:40px; text-align:center; color:var(--text-secondary);">${folderNameCN} is empty</div>`;
return;
}
@@ -586,7 +587,7 @@
// Generate Tags HTML
let tagHtml = '';
if (email.tag === 'work') tagHtml = '<span class="tag tag-work">Work</span>';
if (email.tag === 'finance') tagHtml = '<span class="tag tag-finance">Order</span>';
if (email.tag === 'finance') tagHtml = '<span class="tag tag-finance">Finance</span>';
if (email.tag === 'urgent') tagHtml = '<span class="tag tag-urgent">Urgent</span>';
// Insert Checkbox in HTML
@@ -664,7 +665,7 @@
}
});
showToast(`${count} item(s) deleted`);
showToast(`Deleted ${count} emails`);
selectedEmailId = null;
document.getElementById('reading-pane').innerHTML = `<div class="reading-empty-state"><div class="empty-icon">🗑️</div><h3>Moved to Trash</h3></div>`;
renderMailList();
@@ -682,7 +683,7 @@
e.checked = false; // Optional: uncheck after action
});
showToast('Marked as Read', 'var(--primary)');
showToast('Marked as read', 'var(--primary)');
renderMailList();
}
@@ -736,12 +737,15 @@
const clicked = event.currentTarget;
if(clicked) clicked.classList.add('active');
const folderMap = { 'inbox': 'Inbox', 'sent': 'Sent', 'drafts': 'Drafts', 'junk': 'Junk', 'trash': 'Trash' };
const displayName = folderMap[folderName] || folderName;
// Clear reading pane
document.getElementById('reading-pane').innerHTML = `
<div class="reading-empty-state">
<div class="empty-icon">📂</div>
<h3>${folderName.charAt(0).toUpperCase() + folderName.slice(1)}</h3>
<p>Select an item to view.</p>
<h3>${displayName}</h3>
<p>Select an email to view.</p>
</div>
`;
@@ -760,10 +764,10 @@
showToast('Moved to Trash');
} else {
EMAILS.splice(index, 1);
showToast('Deleted permanently');
showToast('Permanently Deleted');
}
selectedEmailId = null;
document.getElementById('reading-pane').innerHTML = '<div class="reading-empty-state">Item deleted</div>';
document.getElementById('reading-pane').innerHTML = '<div class="reading-empty-state">Email Deleted</div>';
renderMailList();
}
}
@@ -801,20 +805,20 @@
folder: 'inbox',
sender: 'News Bot',
senderEmail: 'news@daily.com',
subject: 'Breaking News: Tech market rally',
preview: 'Global markets are seeing a significant uptrend today...',
subject: 'Breaking: Tech Market Rebounds',
preview: 'Global markets are showing significant upward trends today...',
body: '<p>Markets are up 2% today.</p>',
date: 'Just Now',
date: 'Just now',
unread: true,
checked: false,
tag: null,
avatar: 'NB'
};
EMAILS.unshift(newMail);
showToast('1 New Email Arrived');
showToast('1 New Email Received');
renderMailList();
} else {
showToast('All up to date');
showToast('Up to date');
}
}, 600);
}
@@ -843,7 +847,7 @@
showToast('Sending...', 'var(--primary)');
setTimeout(() => {
showToast('Message sent!', 'var(--success)');
showToast('Email Sent!', 'var(--success)');
closeCompose();
// Add to Sent
EMAILS.unshift({
@@ -854,7 +858,7 @@
subject: subj || '(No Subject)',
preview: 'You sent a message...',
body: `<p>${document.getElementById('compose-body').value}</p>`,
date: 'Just Now',
date: 'Just now',
unread: false,
tag: null,
avatar: 'JD'
@@ -909,7 +913,7 @@
el.innerHTML = `
<div class="mail-header-row"><span class="mail-sender">${email.sender}</span></div>
<div class="mail-subject">${email.subject}</div>
<div class="mail-preview">Found in search</div>
<div class="mail-preview">Search Result</div>
`;
container.appendChild(el);
});

26
009/record.json Normal file
View File

@@ -0,0 +1,26 @@
{
"step-1": {
"query": "最近网购的快递好像到了列表里有个亚马逊Amazon发来的通知帮我把那封邮件前面的复选框勾选上",
"grounding_area": ""
},
"step-2": {
"query": "这封邮件不用特意点进去看了,直接在列表上方的工具栏里,点击那个“信封”图标把它标记为已读",
"grounding_area": ""
},
"step-3": {
"query": "老板Boss_Steve好像发了个关于Beta项目会议的紧急邮件赶紧点开这封邮件看看详情",
"grounding_area": ""
},
"step-4": {
"query": "内容看完了,需要给老板回个话,点击回复按钮准备写邮件",
"grounding_area": ""
},
"step-5": {
"query": "在弹出的发送窗口里不用改内容了,直接把邮件发出去",
"grounding_area": ""
},
"step-6": {
"query": "最后确认一下邮件发没发成功,通过左侧侧边栏去查看",
"grounding_area": ""
}
}