👧 {{ (user.profile && user.profile.nickname) || user.username }} 💎 {{ credit.balance }} 本月:生成 {{ usageMe.word_gen || 0 }} · 教练 {{ usageMe.coach_sec || 0 }}s

📚 英语单词卡片

学习 · 复习 · 测试,轻松记单词

{{ game.mode === 'due' ? '🔁 复习' : '🔍 看图猜单词' }} {{ game.pos + 1 }} / {{ game.queue.length }}

🎉 全部复习完毕!

你太棒了!

看图猜单词
{{ gameCurrent.word }}
{{ gameCurrent.phonetic }}
{{ gameCurrent.meaning }}

{{ card.reviewMode ? '❓' : cardWord.word }}

{{ cardWord.phonetic }}
{{ cardWord.badge }}
1中文意思
{{ cardWord.meaning }}
{{ cardWord.meaning_en }}
2常见例句
3看图理解
{{ cardWord.image_caption }}
{{ cardWord.word }}
{{ cardWord.phonetic }}
{{ cardWord.meaning }}
4单词解析
🗂️ 词库管理 {{ words.length }} 个单词 · {{ categories.length }} 个分类
{{ c.name }} {{ c.word_count }} 词

暂无分类

已选 {{ libSelCount }} 个单词 →
单词音标中文意思分类操作
{{ w.word }} {{ w.phonetic }} {{ w.meaning }}

没有匹配的单词

第 {{ libPage }}/{{ libPageCount }} 页 · 共 {{ libWords.length }} 词
📖 我的单词 {{ counts.total }} 个在学习 · {{ counts.due }} 个待复习
📈 学习进度 已加入学习 {{ progressStats.joined }} / 共 {{ progressStats.total }} 个单词({{ progressStats.joinedPct }}%)
已掌握 {{ progressStats.counts.mastered }} 学习中 {{ progressStats.counts.learning }} 待学习 {{ progressStats.counts['new'] }} 易忘 {{ progressStats.counts.forgot }} 未加入 {{ progressStats.counts.none }} 掌握率 {{ progressStats.masteredRate }}%
📈 学习进度:暂无单词,请先去「➕ 选词」添加单词
{{ counts.learning }}
学习中
{{ counts.mastered }}
已掌握
{{ counts.due }}
今日待复习
{{ counts.forgotten }}
易忘词
📚 词库复习(已选单词)
🎙️ 口语测试(已选单词 · 无答案提示)
🖼️
{{ w.word }}
{{ w.meaning }}
{{ w.badge }}

{{ cardsSearch ? '没有找到匹配的单词~' : (cardsCat==='学习中' ? '还没有学习中的单词哦~去「选词」加入几个吧!' : '这个分类下还没有单词哦~') }}

{{ w.word }}

{{ (study.pickSearch || study.pickStatus!=='全部') ? '没有找到匹配的单词~' : '该分类下暂无单词' }}

{{ w.word }} {{ w.meaning }} 错 {{ w.rec.wrong_count }} 次

暂无易忘词,太棒了!🎉

📖 学习新词({{ learn.queue.length }} 个)

点击卡片查看详情,点「✅ 学会了」标记为已学习

🖼️
{{ w.word }}
{{ w.meaning }}
{{ w.badge }}
🎉
学习完成!明天记得来复习哦
📝 测试 {{ test.pos + 1 }} / {{ test.questions.length }}
{{ test.type==='image' ? '看图选单词' : '看中文选英文' }}
{{ test.q.meaning }}
{{ test.pct >= 90 ? '🏆' : (test.pct >= 60 ? '🎉' : '💪') }}
本次得分:{{ test.score }} / {{ test.questions.length }}({{ test.pct }} 分)
错题(已标记为易忘词):
{{ test.wrong.join(' · ') }}
{{ oral.kind === 'read' ? '🎤 读测试' : '🗣️ 说测试' }} {{ oral.pos + 1 }} / {{ oral.questions.length }}
看图作答
{{ oral.kind === 'read' ? '看图,把对应的英文单词读出来' : '看图,把对应的英文句子完整说出来' }}
本题得分:{{ oral.best }} 分(可重{{ oral.kind === 'read' ? '读' : '说' }},取最高分)
{{ oralAvg >= 80 ? '🏆' : (oralAvg >= 60 ? '🎉' : '💪') }}
平均得分:{{ oralAvg }} 分
需加强(得分低于 60):
{{ oral.low.join(' · ') }}
📚 学习任务 {{ learnTasks.length }} 个任务
暂无学习任务,点上方按钮从词库选词创建
{{ t.name }} {{ t.status==='done' ? '✅ 已完成' : '📖 进行中' }}
创建 {{ fmtDate(t.created_at) }} · 进度 {{ t.done }} / {{ t.total }} · 完成于 {{ fmtDate(t.finished_at) }}
{{ curTask.name }} {{ curTask.items.filter(i=>i.learned).length }} / {{ curTask.items.length }}
🎉 本任务单词已全部学会!
🖼️
{{ it.word }}
{{ it.meaning }}
{{ oral.kind === 'read' ? '🎤 读测试' : '🗣️ 说测试' }} {{ oral.pos + 1 }} / {{ oral.questions.length }}
看图作答
{{ oral.kind === 'read' ? '看图,把对应的英文单词读出来' : '看图,把对应的英文句子完整说出来' }}
本题得分:{{ oral.best }} 分(可重{{ oral.kind === 'read' ? '读' : '说' }},取最高分)
{{ oralAvg >= 80 ? '🏆' : (oralAvg >= 60 ? '🎉' : '💪') }}
平均得分:{{ oralAvg }} 分
需加强(得分低于 60):
{{ oral.low.join(' · ') }}
🎧 AI 教练陪学 · {{ coach.taskName }} {{ coach.pos >= 0 ? coach.pos + 1 : 0 }} / {{ coach.total }}
⚠️ {{ coach.error }}
⚠️ 刚才连接中断了,可从断点继续或点单词重新开始
📶 上次上课中断了({{ (coach.items[coach.lastIdx] || {}).word }})
👇 点一个单词,Coach Buddy 就在它身上开始上课
🖼️
{{ it.word }} 📖
{{ it.meaning }}
已暂停 · {{ (coach.items[coach.selIdx] || {}).word }}
恢复后将从「{{ ['读词讲解','跟读单词','英译中','跟读例句','答疑收尾'][coach.pausedStep] || '读词讲解' }}」步骤继续
{{ taskTest.taskName }} · {{ taskTestFromLabel }} {{ taskTestAnswered }} / {{ taskTestTotal }}
🎉 测试完成:✅ 记住 {{ taskTestKnownCount }} 个 · ❌ 未记住 {{ taskTestUnknownCount }} 个
{{ it.word }} 🔊
{{ it.meaning }}
· · ·
{{ passage.taskName }} · 篇章阅读 {{ passage.words.length }} 词
✍️ AI 正在创作篇章,请稍候…
📋 {{ attnCount }}
📋 后台任务
🛠️ 管理员控制台 {{ user.username }}
{{ admin.ovStudents }}学生账号{{ admin.ovDisabled }} 个已停用
{{ admin.ovWords }}系统词库单词
{{ admin.ovGen }}本月生成次数
{{ admin.ovCoach }}本月教练秒数
✨ AI 设置 {{ user.username }}
{{ aiPage.ov.gen }}本月生成次数
{{ aiPage.ov.coach }}本月教练秒数

🔑 百炼服务连接

🔑 API Key 已配置({{ aiCfg.masked }}) ⚠️ 未配置 API Key

✅ 保存成功,立即可以使用 AI 生成

依次探活:文本/配图/单词音/句子音/教练,最长约 1 分钟
{{ t.ok ? '✅' : '❌' }} {{ t.name }} {{ t.detail }}

🧠 内容生成模型

保存后即时生效免重启;改后异常可填回默认模型名

🔊 音频合成(TTS)

🎙️ 单词发音
📖 句子发音
📚 篇章旁白

{{ ttsCfg.tip }}

切换引擎/音色只影响之后新生成的音频,已有音频保持不变;对已有音频不满意可在卡片页点 🔁 重新生成。篇章多角色对话音色独立自动分配

🤖 AI 教练(全双工实时语音)

保存后新会话即时生效

学生在自己端选了音色时以学生选择优先;未选则跟随此处全局默认

WS 地址(只读):{{ aiPage.coach.wsUrl }}

🎤 语音识别与发音评测

🗣 跟读识别(ASR):本地 faster-whisper 两级自适应——{{ aiPage.asr.fast }} 快速级 + {{ aiPage.asr.acc }} 低置信兜底级,完全离线(CPU)

☁️ 云端口语评测已配置({{ aiPage.pron.maskedAppId }}) ⚙️ 未配置云端口语评测(当前用本地声学评分)

配置云端后读单词走音素级云评分;未配置自动回退本地 MFCC+DTW 声学评分链路

📝 提示词管理 {{ promptList.length }} 条提示词
💡 以下系统提示词决定 AI 生成内容的风格与要求;保存后即时生效(免重启),只影响之后的新生成。改坏或效果变差可随时「恢复默认」。 ⚠️ {{ promptDirtyCount }} 条有未保存修改

{{ p.name }}

默认 已修改 ● 未保存

{{ p.desc }}

{{ p.draft.length }} 字符 · 较生效版本有改动 生效中:自定义版本 生效中:默认版本 · Ctrl+Enter 快速保存
{{ p.default }}
⚠️ {{ promptDirtyCount }} 条提示词有未保存修改
🃏 单词卡片 {{ adminCardsWords.length }} 个单词
🖼️
{{ w.word }}
{{ w.meaning }}
{{ w.badge }}

{{ adminCards.search ? '没有找到匹配的单词~' : '该分类下还没有单词哦~' }}

👥 学生账号管理 {{ admin.students.length }} 个账号
{{ s.username }} {{ s.nickname || '未命名' }} 已停用 {{ s.grade ? profileLabels.grades[s.grade] + ' · ' : '' }}开通 {{ fmtDate(s.created_at) }} · {{ s.last_login_at ? '最近登录 ' + fmtDate(s.last_login_at) : '从未登录' }}
📊 AI 用量统计
~
💰 积分消费
{{ admin.usageCredit.consume }}区间消耗(积分)
{{ admin.usageCredit.recharge }}区间充值(积分)
{{ admin.usageCredit.balance }}当前余额(积分)
{{ usageKindLabel(k) }}{{ v }} 积分
📈 用量明细
{{ usageKindLabel(k) }}{{ v }}{{ usageKindUnit(k) }}{{ usageTokensLabel(k).replace(' · ','') }} 暂无用量记录
时间学生类型tokens(入/出)备注
{{ fmtDT(r.created_at) }} {{ usageStudentLabel(r.student_id) }} {{ usageKindLabel(r.kind) }} {{ r.qty }}{{ usageKindUnit(r.kind) }} {{ usageTokensCell(r) }} {{ usageNoteText(r) }}
💰 积分管理 1 积分 = 1 分钱
{{ creditStuStats.count }} 名学生 · 总余额 {{ creditStuStats.total }} 💎 {{ creditStuStats.low }} 个低余额 {{ creditStuStats.zero }} 个已欠费
学生状态余额操作
{{ (s.username || '?').charAt(0).toUpperCase() }} {{ s.username }} {{ s.nickname }} {{ s.enabled ? '正常' : '已停用' }} 💎 {{ s.credit_balance || 0 }} AI 已停
{{ admin.students.length ? '没有匹配的学生' : '暂无学生账号' }}
{{ codeStats.free }}未使用兑换码
{{ codeStats.freeCredits }}未兑换积分总额
{{ codeStats.used }}已使用
➕ 生成兑换码 生成后把兑换码发给家长/学生,在学生端「我的积分」里兑换
个 × 积分/码
🎟️ 兑换码列表 共 {{ adminCredits.codes.length }} 个(展示最近 200 个)
{{ c.code }} {{ c.used_by ? '已使用' : '未使用' }} {{ fmtDT(c.created_at) }}
{{ c.credits }} 积分
{{ adminCredits.codes.length ? '没有匹配的兑换码' : '暂无兑换码,先在上方生成吧' }}
📐 扣费费率 学生每次使用功能时按此实时扣积分(向上取整)
功能计费单位收费(积分)≈ 人民币
{{ creditRateLabel(k) }} {{ k==='coach_sec' ? '每秒' : '每次' }} ≈ {{ fmtYuan(v * 0.01) }} 元{{ k==='coach_sec' ? '/秒' : '/次' }}
💸 AI 成本测算 按厂家单价把真实用量换算为成本,辅助定价;含系统消耗
🏷️ AI 厂家单价(可编辑,仅影响测算不影响扣费)
功能调用次数用量估算成本均成本/次保本积分当前收费利润倍数
{{ creditRateLabel(r.kind) }} {{ r.count }} {{ costUsageText(r) }} ¥ {{ fmtYuan(r.cost) }} ¥ {{ fmtYuan(r.per_call) }} {{ r.break_even }} 积分 {{ creditRateText(r.kind, r.rate) }} ≈ {{ fmtYuan(r.rate * 0.01) }} 元 {{ costMarginText(r) }}
合计({{ cost.totalCount }} 次调用) ¥ {{ fmtYuan(cost.totalCost) }} 利润倍数 = 收费 ÷ 成本,<×1 表示亏本,建议 ≥ ×2
该区间内暂无 AI 用量
{{ toastMsg }}
📚 加载中…