Files
lexgo/spikes/selection/README.md

2.9 KiB
Raw Permalink Blame History

#4 阅读选择技术验证

独立小样,默认英语;虚构章节与释义,保存仅在当前页面内有效,刷新即清空。不是生产阅读器,不连接账号、数据库、词典服务或复习调度。

从仓库根目录运行:

python spikes/selection/serve.py

打开 http://127.0.0.1:5184/。点词或用鼠标拖选连续文本;使用面板起点/终点按钮调整。正文获得焦点后,←/→ 选择相邻词,Shift+←/→ 调整连续范围,Escape 取消;关闭面板保留阅读位置和键盘续读位置。修改释义后必须点击保存;关闭不会自动保存。

测试(Node 22.22.1;DOM 测试复用学习端锁定的 jsdom 开发依赖):

pnpm --dir learner install --frozen-lockfile
node --test spikes/selection/range.test.mjs spikes/selection/ui.test.mjs
node --check spikes/selection/app.mjs

range.mjs 的 Intl.Segmenter 仅用于验证 UI 选择边界,不替代 #3 的 spaCy 分词。正式集成时必须使用章节原文、内容版本和 NLP token 映射。代码没有复制 LinguaCafe 实现;固定上游版本与四项对照见 架构 Wiki,范围/重叠策略见 业务规则 Wiki。

手机测试证据(待补充)

用户已确认 #4 验收通过,工单已关闭;没有提供具体手机测试记录,以下证据缺口保留。390 CSS 像素的桌面窄屏检查不是真机结果。需要使用实际手机浏览器记录设备、系统、浏览器版本和以下结果:

  1. 普通上下滑动正文,不应意外选词或阻止滚动。
  2. 长按单词,用系统选择手柄扩展/缩短跨行短语;正文反馈、面板文字和“选中范围”一致。特别检查靠近底部面板的位置,系统菜单/手柄是否被遮挡。
  3. 使用面板起点/终点按钮调整,验证 emoji、组合字符、连字符及两次出现的 a small step 有不同位置。
  4. 关闭面板继续阅读,打开“验证设置与快捷键”核对关闭前后的滚动位置;输入释义时检查虚拟键盘与面板滚动。
  5. 测试词典无结果/资源不可用,仍可填写虚构释义、显式保存并继续阅读。

默认服务器只监听本机。手机需与电脑处于同一可信局域网,在明确进行手机测试时,用电脑的实际局域网 IPv4 地址启动:

python spikes/selection/serve.py --host <电脑局域网IPv4地址>

手机打开 http://<电脑局域网IPv4地址>:5184/。只提供本目录白名单静态文件,不提供目录列表、私人内容或写入接口。若系统防火墙阻止访问,先由用户确认网络放行范围;不自动修改防火墙或发布公网。测试完停止进程。后续真机回归结果回填相关实施工单,并引用 #4 的证据缺口。