feat: add unified learning workflows and six-tab assistant
This commit is contained in:
@@ -1,106 +1,85 @@
|
||||
# 谊安学助手 2.0
|
||||
|
||||
一个可直接安装的油猴脚本,集成岗位题库搜索、自动选择答案、允许复制文字,以及原有 CSV / JSON / TXT 导出功能。题库在浏览器本地解析和保存,内置 JSZip,无 CDN 依赖。
|
||||
当前发布版本 **2.1.0**。一个可直接安装的油猴脚本,集成统一题库、六栏面板、视频与考试任务、答案全文核对、复制和题库导出。题库本地保存,内置 ZIP 解析,无 CDN 依赖。
|
||||
|
||||
## 安装和更新
|
||||
## 安装与启动
|
||||
|
||||
1. 在 Chrome / Edge 中安装并启用油猴(Tampermonkey)。
|
||||
2. 新建脚本,将 `谊安学助手 2.0.user.js` 的全部内容粘贴进去,保存。脚本显示名称为“谊安学助手 2.0”。升级时替换原脚本全文,不要同时启用新旧两份脚本。
|
||||
3. 刷新谊安学网页,点击右下角“题库助手”入口展开面板。拖动顶部标题栏可移动面板,位置会保存。
|
||||
4. 选择“主操 / 班长 / 副操”,点击“导入题库”,选择 ZIP、CSV 或 JSON 文件。
|
||||
1. 安装 Tampermonkey 等兼容用户脚本管理器,打开 [谊安学助手 2.0.user.js](谊安学助手%202.0.user.js) 安装或更新。
|
||||
2. 打开 `http://10.119.67.7/clientcn/` 下的学习地图、课程、练习或考试页面。
|
||||
3. 展开右下角面板,在“题库搜索”导入 [统一题库.csv](题库/统一题库.csv)。原 ZIP、三个岗位 CSV、CSV/JSON 仍可导入,无需选择岗位。
|
||||
4. 若考试标题与题库课程不同,在题库栏建立明确的主题关联。关联使用完整标题和完整题库课程名;相似关键词只提供候选,不授权自动答题。
|
||||
5. 在“任务总览”选择任务模式、顺序或并行,点击“开始本轮”。人工刷新或重开浏览器后默认暂停,检查清单后点击“继续上次任务”。
|
||||
|
||||
脚本仅在 `http://10.119.67.7/clientcn/*` 生效,覆盖 `/clientcn/main`、它的下级路径,以及同目录的 `/clientcn/exam/` 练习和考试页面。其他域名、HTTPS、其他端口、目录外页面及本地文件不显示面板,也不解除复制限制。除油猴 `@match` 外,脚本启动时再次核对网址。
|
||||
脚本仅在 `http://10.119.67.7/clientcn/*` 生效,含其下课程、练习及考试路径;其他主机、HTTPS、其他端口及站点目录外不会注入功能。名称继续为“谊安学助手 2.0”。
|
||||
|
||||
同一网页内切换路由离开 `/clientcn/` 时,脚本停止自动选择和导出、隐藏面板并恢复复制限制;返回范围内后重新显示面板,自动选择与导出保持关闭。
|
||||
## 六个功能栏
|
||||
|
||||
标题栏支持鼠标和触屏拖动,展开或收起都可移动;拖拽不会触发展开/收起。按钮、搜索输入和正文滚动保持原操作。刷新或切换页面会恢复保存位置;窗口缩小、面板展开或内容变高时自动调整到可见区域。
|
||||
| 功能栏 | 内容 |
|
||||
|---|---|
|
||||
| 任务总览 | 四种任务模式、顺序/并行、任务清单、当前任务、总进度及预计剩余时间 |
|
||||
| 视频学习 | 实际倍速、播放进度、平台学习记录、课中题、局部暂停与恢复 |
|
||||
| 考试答题 | 自动选择开关、答案核对、答题间隔、预计得分、考试计时和交卷状态;兼容原练习页 |
|
||||
| 题库搜索 | 统一题库导入、关键词搜索、课程筛选、选中文字搜索、来源及主题关联 |
|
||||
| 控制台 | 最近 500 条运行日志、级别筛选、复制、清空显示 |
|
||||
| 其他设置 | 允许复制开关、默认关闭的题库导出折叠区、异常恢复参数 |
|
||||
|
||||
自动选择适配提供的谊安学桌面练习页,以及明确为 `flag=test`、完整加载并且仍可作答的桌面考试页。未知模式、移动端虚拟翻页试卷、已提交或计时结束的考试不会自动选择。下载的 HTML 可使用独立的“离线导出题库”工具解析。
|
||||
桌面左导航右内容,窄屏顶部标签。全局状态、进度和暂停/继续常驻;切栏不启停任务、不重置计时、不触发导出。拖动标题栏移动面板,位置自动保存;搜索和设置控件不会触发拖拽。
|
||||
|
||||
## 导入题库与搜索答案
|
||||
## 统一题库与准确匹配
|
||||
|
||||
仓库已提供按岗位合并的题库,可直接下载并导入,文件内已标注岗位:
|
||||
统一文件保留 **5520 条来源记录**,包含 **2458 道唯一题、2459 个答案组合、1 道冲突题**。原主操、副操、班长仅作来源信息,不限制搜索和自动答案。相同题型、题干、选项及正确答案文字可以聚合,并显示全部来源。详见 [题库说明](题库/README.md)。
|
||||
|
||||
| 岗位 | 合并文件 | 记录数 |
|
||||
|---|---|---:|
|
||||
| 副操 | [副操_合并题库.csv](题库/副操_合并题库.csv) | 1,560 |
|
||||
| 主操 | [主操_合并题库.csv](题库/主操_合并题库.csv) | 1,620 |
|
||||
| 班长 | [班长_合并题库.csv](题库/班长_合并题库.csv) | 2,340 |
|
||||
- 升级自动读取并迁移旧 v2 题库,验证后写入 v3;原存储保留,迁移保存失败仍可读取原库。
|
||||
- 原题号、课程、答案文字、来源文件及网址保留;重复导入同一来源不增加记录。新增 CSV/JSON 合入统一题库;完整 ZIP 导入作为整库替换。
|
||||
- 搜索允许关键词、选项或正确答案文字,可按课程筛选;宽松搜索结果不会直接授权自动选择。
|
||||
- 自动匹配严格比较题型、完整题干与全部选项,以正确答案全文定位网页当前选项,支持选项乱序。仅清理排版空白和不可见字符,保留大小写、单位、指数、数字、否定词和标点。
|
||||
- 分值、难度和题号单独读取,不污染题干。同题同选项存在不同答案时保留冲突,不按多数票或岗位选答案;只有明确课程/来源能够消歧才自动作答。
|
||||
- 无匹配、图片题、未适配结构或无法唯一映射时等待人工或跳过,并显示原因。网站正常保存真实选项点击,不伪造作答记录。
|
||||
|
||||
可选单个岗位文件,也可同时选择三个文件导入。合并保留全部原记录、课程名称、原题号、参考答案和来源网址,并增加岗位及来源文件列;不同课程的重复题或答案差异保留。详细来源和重新生成方法见 [题库说明](题库/README.md)。
|
||||
自动选择开关默认关闭。仅手动开启此开关只选择当前页答案;通过任务总览启动考试任务后,才启用下述按条件交卷流程。手动作答、关闭开关、暂停或修改题库/主题关联会取消旧交卷计划,继续前重新核验。
|
||||
|
||||
- ZIP 内按“主操 / 班长 / 副操”目录自动归类;成功导入后全量替换已有题库。提供的 `题库.zip` 已核对为 28 个 CSV、5,520 条记录:主操 1,620、班长 2,340、副操 1,560。
|
||||
- 单个或多个 CSV / JSON 建议先选择岗位;文件缺少岗位信息时,使用当前选择的岗位。导入会更新相同岗位、课程和来源的数据,保留其他岗位及其他来源。
|
||||
- 所有文件先解析和验证,再保存。题干、选项或参考答案无效时,会提示文件及题目位置,原题库保留。
|
||||
- 油猴存储在同一浏览器中共享题库、岗位、复制设置及面板位置,站点内切换页面或刷新后无需重新导入。无油猴存储 API 时,回退为当前网站的本地存储,面板会明确提示。
|
||||
## 视频、任务与后台
|
||||
|
||||
搜索时先选择岗位,可再按课程筛选。输入题干、选项文字或关键词后点击“搜索”;多个关键词用空格分开,结果须同时包含所有关键词。也可选中网页题目文字后点击“用选中文字搜索”。切换岗位会保留当前搜索词并重新查询。
|
||||
任务模式为“仅视频、视频+课中答题、仅考试、视频+考试”,执行方式默认顺序,并行最多一个视频和一场考试。识别网页现有目录和入口,不猜业务接口。阶段数与课件数分别处理,非视频及未开放任务显示具体原因,已跳过或失败不计为完成。
|
||||
|
||||
结果显示完整题干、选项、正确答案及课程来源,支持“复制题目与答案”和分页。相同题目、选项及答案合并来源;答案冲突分别展示并标记。遇到冲突,选择对应课程核对。
|
||||
视频支持 1X、1.25X、1.5X、2X,显示实际播放器倍率。播放到末尾后继续等待平台学习完成标记;平台记录时长与播放器位置分别展示。没有明确学习时长要求或任务耗时依据时,预计时间显示待确认,2X 不代表整轮耗时必然减半。
|
||||
|
||||
## 两个功能开关
|
||||
课中答题适配保存 JS 模板中的 `app-question-modal` 与 PC CDK portal:按完整题干及选项匹配,回读选中集合,走网站“查看答案”判分,只有明确回答正确并关闭/进入下一题后才继续。仅视频模式遇强制题、无库、冲突或未知结构时等待人工,不刷新弹题。课中题不套用考试交卷规则。
|
||||
|
||||
**自动选择答案:默认关闭,每次刷新或进入另一份考试后需手动开启。** 先导入题库、选择岗位,并进入已加载完成的兼容练习或桌面考试页,再开启。脚本按岗位、题型、完整题干和全部选项文字精确匹配,优先结合课程来源消歧;以题库正确答案全文定位网页当前选项,支持选项换序。自动匹配只清理排版空白和不可见字符,保留大小写、单位、指数、数字、否定词和标点。关键词及宽松搜索结果不会直接用于自动选择。无匹配、冲突未消除、图片题或选项无法唯一对应时,跳过并显示原因。
|
||||
默认连续 60 秒没有播放进度时尝试续播,15 秒后仍失败再刷新当前视频页面,最多 3 次,两次刷新至少间隔 30 秒,次数跨刷新保存。主动暂停、课中题、等待平台确认、等待交卷或等待人工不算故障。脚本发起的恢复及任务跳转保存一次性续作标记;人工刷新默认暂停。并行页面通过共享租约、心跳及全局控制协调,打开失败或未确认时显示等待,不假称并行成功。
|
||||
|
||||
脚本点击网页真实选项,网站会按正常逻辑保存作答记录。练习单选、判断可能点击后立即判分并锁定;练习多选显示“待确认”,由用户在网页中确认。考试单选、判断可改选,考试多选按当前集合取消多余选项并补选正确项,回读确认完整选中内容与题库答案一致后处理下一题。
|
||||
后台指正常切换标签页或最小化后尽量继续,恢复前台按真实时间和网站记录校准。浏览器关闭、设备休眠、标签冻结或网站强制暂停期间无法保证持续执行;中断显示真实状态,不伪造学习时长。真实账号的解锁、倍速、后台和并行规则仍需实站验收。
|
||||
|
||||
“查看答案核对”折叠区显示已处理题目的题干、题库课程、正确答案全文与网页当前选项字母;未匹配等题目显示在未处理清单中。关闭开关或检测到手动作答时立即停止后续操作,已生效的选择保留。重新开启会重新读取选中状态并核对;切换岗位、题库或页面时取消旧任务。
|
||||
## 考试预计得分与交卷
|
||||
|
||||
## 桌面考试适配
|
||||
适配明确为 `flag=test`、完整加载且可作答的桌面试卷。开考前检查主题及题库,整卷加载后逐题预检;默认题间隔 **4 秒**,最早交卷时间为本场进入试卷起 **6 分钟**。练习多选的正常确认仍按现有网页流程处理。
|
||||
|
||||
考试题干中的分值(例如“(2分)”“(4分)”)和难度属于独立显示元素,提取时按 DOM 标记移除;题目自身的括号和数字保持原文。考试没有“查看答案”按钮不再被误判为锁定。
|
||||
只有以下条件同时成立才自动交卷:
|
||||
|
||||
提供的考试样本“1-1安全生产方针和目标”共有 40 题:15 单选、10 多选、15 判断;页面参考答案为空,答案来自已导入的岗位题库。清理分值与难度后,三岗位均可精确匹配全部 40 题,其中 20 题的正确字母与题库中不同。例如题库 `B. 技术` 对应考试 `D. 技术`,脚本核对“技术”全文后选择网页 D。
|
||||
1. 主题关联明确,整卷及答题卡完整,所有可匹配题已处理并回读核验。
|
||||
2. 按网页每题实际分值累计的可核验预计得分 **严格大于 80 分**;正好 80 分也等待人工。
|
||||
3. 达到最早交卷时长,试卷仍有效、未暂停、未结束,交卷入口及确认流程可以唯一识别。
|
||||
|
||||
此次适配桌面全题 DOM 页面,按顺序选择并回读核对,不操作移动端翻页。不自动点击“查看答案”或交卷;完成后检查核对结果并自行交卷。点击交卷确认、页面提交中或倒计时到零时停止自动选择。网页原有的缓存、接口保存及到时自动交卷逻辑继续生效。
|
||||
未知题计 0 分且不猜答,多选必须整个集合一致才计分;题目分值或 100 分分制无法确认则等待人工。预计得分来自本地题库,不是官方成绩,也不保证真实得分。可有少量未知题,但已核验分值必须严格超过 80。
|
||||
|
||||
**允许复制文字:首次使用默认开启,后续保留设置。** 开启后解除已适配的文字选择、复制和右键限制;关闭后恢复网页原有 `body` 限制属性和相关样式。搜索结果的复制按钮独立可用。
|
||||
提交前再次检查当前试卷、题库版本和选中全文;只走当前场次正常交卷及确认,网站显示成功结果才计完成。提交结果不明停止重复点击。暂停脚本不会暂停网站倒计时;网站剩余时间不足、身份验证或异常流程需人工处理。
|
||||
|
||||
## 网页题目导出
|
||||
## 导出与离线工具
|
||||
|
||||
“导出题库”是独立的折叠开关,每次刷新默认关闭,升级前的自动导出设置也不会使它自动开启。关闭时导出区收起,自动下载和手动导出均禁用。
|
||||
“其他设置”的导出开关默认关闭;开启才展开 CSV/JSON/TXT 按钮,兼容练习页答案完整时自动导出一次 CSV。关闭后停止后续导出,主动重新开启可再次下载。切换功能栏不触发下载。考试页参考答案为空时不提供考试题库导出,导出不会用导入题库填补网页缺失答案。
|
||||
|
||||
开启“导出题库”后展开 CSV / JSON / TXT 按钮。在兼容练习页中,题目和参考答案加载完整后会自动下载一次 CSV,也可点击格式按钮手动导出。再次关闭后停止后续导出;主动重新开启可再次下载当前题库。导出直接读取网页中的参考答案,包括隐藏答案,不用导入题库补全缺失答案。
|
||||
|
||||
考试页参考答案为空,不提供考试题库导出;可使用岗位题库搜索和答案核对。
|
||||
|
||||
- CSV 使用 UTF-8 BOM,可用 Excel 打开;JSON 保留结构化选项和图片地址;TXT 便于阅读。
|
||||
- 缺题或缺答案时不自动下载;手动导出会标记不完整。没有答题卡总数时,只能核对当前页面内容。
|
||||
- 分页或滚动后才加载的题目,需要先加载或逐页导出。同一次页面运行中,相同练习内容只自动下载一次。
|
||||
- 图片以链接导出,不打包图片文件。保存网页的相对图片地址按原始网址解析,离线时可能无法访问。
|
||||
|
||||
从下载的网页导出,也可使用原有独立工具:
|
||||
|
||||
1. 解压网页压缩包。
|
||||
2. 双击 `离线导出题库.html`,保持它与 `question-bank-core.js` 在同一目录。
|
||||
3. 选择解压后的 HTML 文件,查看完整性提示,再点击导出格式。
|
||||
|
||||
离线工具只解析 HTML 文本,不运行原网站脚本、不连接原网站,不需要登录或 Node.js。
|
||||
已保存的 HTML 可双击 [离线导出题库.html](离线导出题库.html) 打开,与 `question-bank-core.js` 放在同一目录。工具以静态 DOM 解析并中和原脚本及资源,不执行原站代码;保留 CSV 防公式转义、UTF-8 BOM 和缺失答案提示。
|
||||
|
||||
## 开发与验证
|
||||
|
||||
`site-scope.js` 负责站点范围;`question-bank-core.js` 负责网页提取和导出;`bank-store.js`、`answer-matcher.js` 负责本地题库和匹配搜索;`assistant-panel.js`、`copy-controller.js`、`answer-runner.js` 分别负责面板拖拽、复制开关和真实选项点击;`practice-exporter.js` 负责页面识别及功能协调。发布脚本已构建,安装时只需一个 `.user.js` 文件。
|
||||
|
||||
修改源码后重新构建:
|
||||
|
||||
```powershell
|
||||
npm run build
|
||||
```
|
||||
|
||||
安装开发依赖并运行验证,需要本机 Chrome:
|
||||
|
||||
```powershell
|
||||
npm install
|
||||
npm test
|
||||
npm run merge:banks
|
||||
```
|
||||
|
||||
使用本机 Edge 时可先设置:
|
||||
测试依赖 Node.js 和 Playwright/Chrome;使用本机模拟页面及中和后的保存 DOM,所有业务 URL 由测试拦截,未访问业务服务器。覆盖统一题库迁移/来源/冲突、真实 40 题全文乱序、题间隔、80/84 分与 4/6 分钟边界、交卷结果、防重复、视频恢复、并行心跳、六栏及拖拽/窄屏、复制/导出/站点范围和完整任务流程。
|
||||
|
||||
```powershell
|
||||
$env:PLAYWRIGHT_CHANNEL = 'edge'
|
||||
npm test
|
||||
```
|
||||
源代码按职责拆分:`bank-store.js`、`answer-matcher.js`、`answer-runner.js`、`exam-controller.js`、`quiz-adapter.js`、`learning-engine.js`、`assistant-panel.js`、`practice-exporter.js`。发布仅需构建后的单个 `.user.js`。
|
||||
|
||||
验证使用本地模拟页面,不连接谊安学服务器;真实登录后的线上使用仍需在实际环境验收。本地存在题库 ZIP 或保存网页样本时,还会核对对应内容。原始 ZIP、解压网页及临时导出由 `.gitignore` 排除;`题库/` 中的三个岗位合并 CSV 随仓库提供。
|
||||
|
||||
远程仓库:`ssh://git@192.168.10.31:2222/qishizhe/yianxue-shauti.git`。
|
||||
开发依据与实施顺序见 [需求.md](需求.md) 和 [实施开发方案.md](实施开发方案.md)。真实课中弹题交互、课程完成条件、账号登录后的并发限制与正式提交结果需在实际环境核实;识别不明时脚本等待人工,不把本地模拟通过等同于全站验收完成。
|
||||
|
||||
Reference in New Issue
Block a user