- 为存储、词库、记忆调度、MIME 解析、单词提取、测验生成及备份处理添加 Node.js 测试 - 添加可复用的浏览器环境与 localStorage 测试辅助工具 - 修复移除 HTML 时单词边界丢失的问题,并拒绝无效的测验答案 - 校验导入备份中的日期,并添加 npm 测试脚本
109 lines
4.5 KiB
HTML
109 lines
4.5 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="zh-CN" data-theme="light">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
|
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
<meta name="apple-mobile-web-app-status-bar-style" content="default">
|
|
<meta name="theme-color" content="#6366f1">
|
|
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
|
|
<meta http-equiv="Pragma" content="no-cache">
|
|
<meta http-equiv="Expires" content="0">
|
|
<title>AI 英语助教</title>
|
|
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Crect width='64' height='64' rx='16' fill='%236366f1'/%3E%3Ctext x='32' y='42' text-anchor='middle' font-size='34' font-family='Arial, sans-serif' fill='white'%3EAI%3C/text%3E%3C/svg%3E">
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
|
|
integrity="sha384-t1nt8BQoYMLFN5p42tRAtuAAFQaCQODekUVeKKZrEnEyp4H2R0RHFz0KWpmj7i8g"
|
|
crossorigin="anonymous" referrerpolicy="no-referrer">
|
|
<script>
|
|
const ASSET_VERSION = '20260719-3';
|
|
const stylesheets = [
|
|
'styles/variables.css',
|
|
'styles/base.css',
|
|
'styles/layout.css',
|
|
'styles/components.css',
|
|
'styles/pages/home.css',
|
|
'styles/pages/words.css',
|
|
'styles/pages/learn.css',
|
|
'styles/pages/quiz.css',
|
|
'styles/pages/review.css',
|
|
'styles/pages/stats.css',
|
|
'styles/pages/settings.css',
|
|
'styles/responsive.css',
|
|
'styles/pages/extract.css',
|
|
'styles/pages/mail-learn.css',
|
|
'styles/pages/reader.css'
|
|
];
|
|
document.write(stylesheets
|
|
.map(path => `<link rel="stylesheet" href="${path}?v=${ASSET_VERSION}">`)
|
|
.join(''));
|
|
</script>
|
|
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.7/dist/chart.umd.min.js"
|
|
integrity="sha384-vsrfeLOOY6KuIYKDlmVH5UiBmgIdB1oEf7p01YgWHuqmOHfZr374+odEv96n9tNC"
|
|
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
|
</head>
|
|
<body>
|
|
<div id="app">
|
|
<header id="mobile-header">
|
|
<button id="menu-btn" aria-label="菜单">
|
|
<i class="fas fa-bars"></i>
|
|
</button>
|
|
<h1>AI 英语助教</h1>
|
|
<button id="theme-toggle-mobile" aria-label="切换主题"><i class="fas fa-moon"></i></button>
|
|
</header>
|
|
|
|
<aside id="sidebar">
|
|
<div class="sidebar-header">
|
|
<span class="logo"><i class="fas fa-graduation-cap"></i></span>
|
|
<h2>AI 英语助教</h2>
|
|
</div>
|
|
<nav class="sidebar-nav">
|
|
<a href="#home" class="nav-item active" data-page="home">
|
|
<span class="nav-icon"><i class="fas fa-chart-pie"></i></span><span class="nav-text">仪表盘</span>
|
|
</a>
|
|
<a href="#words" class="nav-item" data-page="words">
|
|
<span class="nav-icon"><i class="fas fa-book"></i></span><span class="nav-text">单词库</span>
|
|
</a>
|
|
<a href="#quiz" class="nav-item" data-page="quiz">
|
|
<span class="nav-icon"><i class="fas fa-robot"></i></span><span class="nav-text">AI 测试</span>
|
|
</a>
|
|
<a href="#review" class="nav-item" data-page="review">
|
|
<span class="nav-icon"><i class="fas fa-redo-alt"></i></span><span class="nav-text">错题复习</span>
|
|
</a>
|
|
<a href="#extract" class="nav-item" data-page="extract">
|
|
<span class="nav-icon"><i class="fas fa-envelope"></i></span><span class="nav-text">邮件提词</span>
|
|
</a>
|
|
<a href="#mail-learn" class="nav-item" data-page="mail-learn">
|
|
<span class="nav-icon"><i class="fas fa-graduation-cap"></i></span><span class="nav-text">邮件学习</span>
|
|
</a>
|
|
<a href="#stats" class="nav-item" data-page="stats">
|
|
<span class="nav-icon"><i class="fas fa-chart-line"></i></span><span class="nav-text">统计</span>
|
|
</a>
|
|
<a href="#settings" class="nav-item" data-page="settings">
|
|
<span class="nav-icon"><i class="fas fa-cog"></i></span><span class="nav-text">设置</span>
|
|
</a>
|
|
</nav>
|
|
<div class="sidebar-footer">
|
|
<button id="theme-toggle">
|
|
<span id="theme-icon"><i class="fas fa-moon"></i></span>
|
|
<span>切换主题</span>
|
|
</button>
|
|
</div>
|
|
</aside>
|
|
|
|
<div id="overlay"></div>
|
|
|
|
<main id="main-content">
|
|
<div id="page-content"></div>
|
|
</main>
|
|
|
|
<div id="toast-container"></div>
|
|
</div>
|
|
|
|
<div id="modal-root"></div>
|
|
|
|
<script>
|
|
document.write(`<script type="module" src="js/main.js?v=${ASSET_VERSION}"><\/script>`);
|
|
</script>
|
|
</body>
|
|
</html>
|