智盈学院

后台管理系统

{{ loginError }}

用户管理

总用户数

{{ stats.total || 0 }}

本周新增 {{ stats.newThisWeek || 0 }}

学生用户

{{ stats.students || 0 }}

占比 {{ stats.total ? ((stats.students / stats.total) * 100).toFixed(1) : 0 }}%

教师用户

{{ stats.teachers || 0 }}

占比 {{ stats.total ? ((stats.teachers / stats.total) * 100).toFixed(1) : 0 }}%

活跃用户

{{ stats.active || 0 }}

今日新增 {{ stats.newToday || 0 }}

用户角色分布

用户增长趋势

教学风格使用统计

用户活跃度

ID 用户名 昵称 无限制 学习时长 注册时间 操作
{{ user.id }}
{{ user.username[0].toUpperCase() }}
{{ user.username }}
{{ user.nickname || '-' }}
无限制
{{ formatStudyTime(user.total_study_seconds) }} - {{ formatDate(user.created_at) }}

订阅管理

用户购买订阅后在有效期内无限使用所有 AI 功能。可在下方手动开通/取消/延长订阅。

用户订阅

查看和调整每个用户的订阅状态

用户 订阅状态 到期时间 备注 操作
{{ user.nickname || user.username }}
@{{ user.username }}
订阅中 未开通 {{ user.note || '—' }}

调整订阅 · {{ unlimitedForm.username }}

用户使用记录

用户每次调用 AI 功能会自动记录,支持筛选与导出 Excel。

今日调用

{{ usageLogsSummary.todayCount }}

今日消耗 Token

{{ usageLogsSummary.todayCost }}

今日活跃用户

{{ usageLogsSummary.todayActiveUsers }}

筛选结果总数

{{ usageLogsPagination.total }}

时间 用户 功能 用户发送内容 消耗 剩余 Token 备注
加载中…
暂无使用记录
{{ formatDateTime(log.created_at) }}
{{ log.nickname || log.username || ('用户#' + log.user_id) }}
{{ log.username || log.email || '' }}
{{ log.action_label || log.action }}

{{ log.user_content || '—' }}

{{ log.cost > 0 ? ('-' + log.cost) : '0' }} {{ log.balance_after }} {{ log.note || '—' }}
共 {{ usageLogsPagination.total }} 条 · 第 {{ usageLogsPagination.page }} / {{ usageLogsPagination.totalPages || 1 }} 页

订阅套餐

配置前台售卖的订阅套餐。用户购买后立即生效,到期后停止 AI 服务。

前台只显示「已上架」的订阅套餐。 用户点击个人卡片中的「续费」即可购买。

{{ plan.display_name }}

{{ plan.name }}

{{ plan.badge }}

{{ plan.duration_days || 30 }}

¥{{ plan.price }}

原价 ¥{{ plan.original_price }}

{{ plan.description }}

{{ plan.is_visible ? '已上架' : '已隐藏' }}

  • · {{ f }}

暂无订阅套餐,请添加

累计支付总额

¥{{ orderStats.total_paid_amount }}

已支付订单

{{ orderStats.paid_count }}

订单总数

{{ orderStats.total_orders }}

待支付 / 已取消

{{ orderStats.pending_count || 0 }} / {{ orderStats.cancelled_count || 0 }}

订单号 用户 套餐 金额 状态 支付时间 Token 操作
{{ o.order_no }} {{ o.nickname || o.username }} {{ o.plan_display_name || o.plan_id }} ¥{{ o.amount }} {{ orderStatusLabel(o.status) }} {{ o.paid_at ? formatDateTime(o.paid_at) : '—' }} +{{ o.duration_days || '—' }}天

加载中…

暂无订单

{{ ordersPagination.page }} / {{ ordersPagination.totalPages }}

{{ pricingPlanForm.id ? '编辑订阅套餐' : '新建订阅套餐' }}

AI 配置

左侧选择功能模块,右侧配置 API 地址与密钥。保存后请刷新前台。

强交互模式

全站除生图外所有功能统一使用此配置(对话、GeoGebra、PPT、解题、出卷等),每次随机选一个非空密钥

AI 生图

OpenAI 兼容 /v1/images/generations(如 dall-e-3)

API 管理

开启后,全站对话类 AI(对话、物理沙盒、出卷、PPT 等)优先使用优先级最高的启用渠道; 每个渠道 4 个密钥每次请求随机选取;下方模型列表全功能通用。关闭则使用「AI 配置」各模式独立设置。

渠道池总开关

开启后忽略各模式 API 地址/密钥(仍可用各模式「模型名」匹配渠道模型列表)

渠道列表

暂无渠道,请点击「添加渠道」
{{ ch.name }} {{ ch.vendor }} {{ ch.enabled ? '启用' : '停用' }} 优先级 {{ ch.priority }}

{{ ch.api_url }}

默认模型 {{ ch.default_model }} · 温度 {{ ch.temperature }} · 可选 {{ ch.models.length }} 个模型

{{ apiChannelForm.id ? '编辑渠道' : '新建渠道' }}

全站各功能共用;若某模式在「AI 配置」里填了模型名且在本列表中,则优先使用该名

{{ m.label || m.model_id }}

系统提示词

左侧选择功能模块,右侧编辑对应提示词

修改 database.js 后请重启后端,或点击「同步内置模板」将内置提示词写入数据库(会覆盖当前内容)。物理沙盒提示词在左侧选择「 物理沙盒」编辑;API 在「AI 配置」中配置。

正在加载提示词…
加载失败:{{ promptsError }}

暂无提示词数据

{{ promptModeLabel(activePrompt.mode) }}

最后更新:{{ formatDate(activePrompt.updated_at) }}

安全规范管理(党课)

该提示词将以最高优先级注入每一次 AI 对话,用于规范 AI 的政治言论输出。

启用安全规范提示词

关闭后 AI 将不受该规范约束

此内容将拼接在每次对话 system prompt 的最前面,优先级高于所有其他提示词。

注意事项

  • 该提示词对所有用户、所有对话模式均生效
  • 修改后立即生效,无需重启服务
  • 建议保留默认内容,仅在必要时修改
  • 提示词过长可能影响 AI 响应速度

共创管理

教师共创审核与已通过教师管理

加载中…
暂无申请记录
{{ app.name }} @{{ app.username }} {{ app.subject }} {{ appStatusLabel(app.status) }}

联系方式:{{ app.contact }}

{{ app.message }}

提交时间:{{ app.created_at }} 审核时间:{{ app.reviewed_at }}

审核备注:{{ app.review_note }}

{{ cocreationPagination.page }} / {{ cocreationPagination.totalPages }}
加载中…
暂无已通过教师
{{ (teacher.name || teacher.nickname || '?').charAt(0) }}

{{ teacher.name || teacher.nickname }}

@{{ teacher.username }} {{ teacher.subject }} {{ teacher.contact }}

{{ teacher.courses.length }}

课程数

{{ teacher.reviewed_at || '—' }}

通过时间

{{ teacher.is_active ? '活跃' : '禁用' }}

账号状态

发布的课程:

{{ course.name }}

{{ course.description }}

{{ course.created_at }}
暂无发布的课程

编辑教师信息

论坛管理

审核队列 · 举报处理 · 违禁词库;审核提示词在「系统提示词 → 论坛内容审核」中编辑(改库即三端同步)。

AI 复审标记或待人工审核的帖子;通过后公开可见,驳回后作者收到通知。
加载中…
队列为空,全部内容已审核 ✅
{{ post.title }} {{ forumModLabel(post.moderation_status) }} {{ post.author_name }} · {{ post.published_at }}
{{ post.summary }}
AI:{{ post.ai_reason }}({{ post.ai_error }})
处理结果将通知举报人。
暂无举报记录
{{ r.reason }} {{ forumStatusLabel(r.status) }} {{ r.created_at }}
《{{ r.post_title || '评论 #' + r.comment_id }}》
举报说明:{{ r.detail }}
词库为空
{{ w.word }} · {{ w.level === 'block' ? '拦截' : '送审' }}

用户反馈

加载中…
暂无反馈
{{ item.nickname || item.username || '(用户已注销)' }} @{{ item.username }} {{ feedbackStatusLabel(item.status) }} {{ item.page }}

{{ item.content }}

{{ item.created_at }} 联系方式:{{ item.contact }}

教学风格管理

{{ style.description }}

{{ style.name }}

默认 自定义

提示词内容:

{{ style.prompt }}

最后更新:{{ formatDate(style.updated_at) }}

公告管理

{{ announcement.title }}

{{ getAnnouncementTypeLabel(announcement.type) }} 已隐藏 优先级: {{ announcement.priority }}

{{ announcement.content }}

发布者:{{ announcement.author_name }} (@{{ announcement.author_username }})

发布时间:{{ formatDate(announcement.created_at) }}

更新时间:{{ formatDate(announcement.updated_at) }}

暂无公告

点击右上角"发布新公告"按钮创建第一条公告

满意度调查问卷

创建、发布问卷,查看用户阅读与答卷情况

{{ survey.title }}

{{ getSurveyStatusLabel(survey.status) }}

{{ survey.description }}

{{ survey.question_count }} 道题 {{ survey.view_count }} 人已读 {{ survey.submit_count }} 人已提交 ⏭ {{ survey.dismiss_count }} 人已忽略 发布者:{{ survey.author_name }} 发布时间:{{ formatDate(survey.published_at) }}

暂无问卷

点击右上角创建第一份满意度调查

帮助中心管理

管理帮助中心的分类和内容,用户可在前端查看

分类列表

{{ category.icon }} {{ category.title }}
排序: {{ category.sort_order }}
暂无分类
点击右上角"新建分类"创建

{{ selectedHelpCategory.icon }} {{ selectedHelpCategory.title }} - 条目列表

{{ item.title }}

排序: {{ item.sort_order }}

{{ item.content }}

更新时间:{{ formatDate(item.updated_at) }}
该分类下暂无条目
点击右上角"新建条目"创建

请先选择左侧的分类

{{ userDetailData.username[0].toUpperCase() }}

{{ userDetailData.nickname || userDetailData.username }}

@{{ userDetailData.username }}

基本信息

用户 ID

{{ userDetailData.id }}

角色

{{ getRoleLabel(userDetailData.role) }}

积分

{{ userDetailData.points }}

账号状态

{{ userDetailData.is_active ? '正常' : '已禁用' }}

邮箱

{{ userDetailData.email || '未设置' }}

注册时间

{{ formatDate(userDetailData.created_at) }}

最后登录

{{ formatDate(userDetailData.last_login) }}

数据统计

{{ userDetailData.stats.chatCount }}

对话记录

点击查看

{{ userDetailData.stats.vocabularyCount }}

单词本

点击查看

{{ userDetailData.stats.mistakesCount }}

错题本

点击查看

教学风格设置

当前使用风格:

{{ userDetailData.currentTeachingStyle.description }}

{{ userDetailData.currentTeachingStyle.name }}

自定义

{{ userDetailData.currentTeachingStyle.prompt }}

未设置(使用系统默认风格)

创建的自定义风格({{ userDetailData.customTeachingStyles.length }}个):

{{ style.description }}

{{ style.name }} · 创建于 {{ formatDate(style.created_at) }}

{{ style.prompt }}

该用户未创建自定义风格

编辑用户

修改用户信息

套餐管理

对话记录

{{ chatHistoryUser ? `@${chatHistoryUser.username}` : '' }} 的历史对话

暂无对话记录

{{ chat.role === 'user' ? '用户' : 'AI 助手' }} {{ formatDateTime(chat.timestamp) }}
{{ chat.content }}

单词本

{{ vocabularyUser ? `@${vocabularyUser.username}` : '' }} 的单词收藏

暂无单词记录

{{ word.word }}

{{ word.date }}

{{ word.meaning }}

错题本

{{ mistakesUser ? `@${mistakesUser.username}` : '' }} 的错题记录

暂无错题记录

{{ mistake.subject }} {{ formatDate(mistake.created_at) }}

题目:

{{ mistake.question }}

你的答案:

{{ mistake.user_answer || '未作答' }}

正确答案:

{{ mistake.correct_answer }}

解析:

{{ mistake.explanation }}

{{ showEditStyleModal ? '编辑教学风格' : '创建教学风格' }}

设置AI的回复语气和风格

用于系统识别,建议使用英文

用户看到的风格名称

这段文字会在AI回复时拼接到系统提示词中

{{ showEditAnnouncementModal ? '编辑公告' : '发布新公告' }}

向所有用户发布系统公告

优先级高的公告会显示在前面

支持换行,会保留格式

{{ surveyForm.id ? '编辑问卷' : '创建问卷' }}

自定义问题,发布后用户将收到弹窗

第 {{ qIdx + 1 }} 题

用户将以 1-5 星评分

用户可自由输入文字回答

答卷详情

{{ surveyResponses.survey?.title }}

{{ surveyResponses.stats.total_views || 0 }}

已阅读

{{ surveyResponses.stats.submitted || 0 }}

已提交

{{ surveyResponses.stats.dismissed || 0 }}

已忽略

{{ surveyResponses.stats.viewed_only || 0 }}

仅阅读未提交

暂无用户互动记录
{{ resp.display_name || resp.nickname || resp.username || ('访客 ' + (resp.guest_id || '').slice(-8)) }} @{{ resp.username }} 未登录访客
{{ getResponseStatusLabel(resp.status) }}
阅读时间:{{ formatDate(resp.viewed_at) }} · 提交时间:{{ formatDate(resp.submitted_at) }}
{{ q.question_text }}: {{ formatAnswerValue(resp.answers[q.id]) }}

用户学习画像分析

{{ profileUser?.nickname || profileUser?.username }}

该用户暂无画像数据

AI 正在深度理解用户...

分析聊天记录、行为数据、学习时长、情绪变化...

主导特征 {{ profileDataV2.meta.dominant_trait }}
学习风格 {{ profileDataV2.meta.learning_style }}
风险标记 {{ profileDataV2.meta.risk_flag || '无' }}
干预优先级 {{ profileDataV2.meta.intervention_priority }}

情绪状态

{{ profileDataV2.emotional_label }}
"{{ profileDataV2.emotional_state }}"
情绪原因
{{ profileDataV2.emotional_cause || '暂无' }}
AI 干预策略
{{ profileDataV2.emotional_strategy || '暂无' }}
积极度 {{ (profileDataV2.emotional_score * 100).toFixed(0) }}%

8维度向量雷达图

坚持性 {{ profileDataV2.persistence_label }}
{{ (profileDataV2.persistence_score * 100).toFixed(0) }}%
"{{ profileDataV2.persistence_state }}"
{{ profileDataV2.persistence_strategy }}
自主性 {{ profileDataV2.autonomy_label }}
{{ (profileDataV2.autonomy_score * 100).toFixed(0) }}%
"{{ profileDataV2.autonomy_state }}"
{{ profileDataV2.autonomy_strategy }}
{{ dim.label }}
{{ (profileDataV2[dim.key + '_score'] * 100).toFixed(0) }}%
{{ profileDataV2[dim.key + '_label'] }}
{{ profileDataV2[dim.key + '_state'] }}

整体画像总结

{{ profileDataV2.overall_summary || '暂无总结' }}

画像更新时间:{{ formatDate(profileDataV2.last_updated) }}

心理/情感状态(每30分钟更新)

高焦虑预警
{{ mentalData.mental_tag }}
当前状态
{{ (mentalData.mental_score * 100).toFixed(0) }}%
积极度评分
{{ ['无焦虑','轻度','中度','高度'][mentalData.anxiety_level || 0] }}
焦虑等级
分析依据:{{ mentalData.analysis_basis }}
AI 备课建议:当前用户处于高焦虑状态,AI 将自动:降低讲解难度、增加鼓励语、拆分步骤、及时给予肯定反馈。
最后更新:{{ formatDate(mentalData.last_updated) }}

8维度向量雷达图

维度详情
{{ dim.label }} {{ dim.tag }}
{{ (dim.score * 100).toFixed(0) }}%
{{ dim.basis }}

整体画像总结

{{ profileData.overall_summary || '暂无总结' }}

画像更新时间:{{ formatDate(profileData.last_updated) }}