Skip to content

feat(inventory): 在 SMB 库里搜索画廊 - #186

Merged
HicirTech merged 7 commits into
mainfrom
Feat--inventory-search
Oct 17, 2026
Merged

HicirTech merged 7 commits into
mainfrom
Feat--inventory-search

Conversation

@HicirTech

Copy link
Copy Markdown
Owner
  • SMB 库的顶栏换成在线列表那套搜索栏(SearchBar、SearchLayout、搜索按钮原样复用,没改上游文件):左边返回,右边「+」打开高级搜索,分类勾选、评分、页数和标签选择器都能用;订阅搜索和以图搜图要用到网站,选了只给一句提示
  • 按全部字段搜:标题、日文标题、标签、上传者、分类;命名空间(含简写)、$、-、引号的写法和在线搜索一样,分类表「勾上就排除」的语义也一样
  • 分两段出结果:手机上有缓存就先用缓存;缓存为空时,先拿书库页已经列好的文件夹名按标题出结果。随后列目录、并发查每个 metadata.json 的 mtime(并发数跟随「元数据并发」设置),只重读新增或改过的记录;核对结果和先出的不同才替换,核对失败时保留先出的结果并提示「可能不是最新」
  • 缓存每个共享一份 JSON,放在 App 私有目录 files/inventory-search/,不进数据库,整个搜索不写 share、不访问 e-hentai
  • 结果沿用当前排序,每页 50 本;返回键先收起搜索栏,再清掉搜索;删除和重新同步会同步到搜索结果
  • 库页面不再能划出右抽屉:它没有右抽屉,以前退出多选会把右抽屉解锁(e20353c7 起就有),新的搜索栏也会;现在两处都只锁左抽屉
  • 新增 4 条字符串,覆盖现有的 10 种语言

验证:LXC 上 CI 同款构建通过,单测 468 个 0 失败;新增 InventoryQueryTest、InventorySearchCacheTest、InventorySearchTest,SmbInventoryTest、SmbPathsTest 补了用例;InventorySearch 做过变异验证,4 个变异体全部被抓到。平板(SM-X926B,Android 16,调试版,147 个文件夹、145 份元数据,元数据并发 64)经 start_scene 直接进库页,不开抽屉、详情页和阅读器,测完设置没有改动。家里 Wi-Fi:标题结果 111–235 ms(同时段一页 50 本 68–216 ms);缓存已建好时完整结果中位 161 ms,9 次里 8 次在 0.3 s 内;第一次建缓存 353–370 ms。手机热点 + WireGuard(往返 88–367 ms):缓存已建好时 1.12–1.97 s,8 次都在 2 s 内;第一次建缓存 2.45、2.79 s(这两项是在下面说的并行版上测的,这两种情况没有要读 share 的快速结果,两版走同一条路径);标题结果 0.69–1.00 s(同时段一页 1.09–1.72 s)。设备上还确认了核对后会补进只靠标签匹配的画廊、返回键会清掉搜索、订阅搜索只弹提示、排除分类生效、右抽屉划不出来。试过让核对和标题那页并行:隧道上标题结果慢到 1.40–1.44 s,完整结果也没变快,所以保留顺序。

未验证:先出标题、再出完整结果时,局域网 463–521 ms(装包后第一次 730 ms)超过 0.5 s,隧道有一次 4.18 s 超过 4 s,都是标题命中多、要先读完一整页的情况(单独建缓存两条链路都达标);缓存已建好时局域网有一次查 mtime 卡了 1.24 s,没再复现;原子改名后文件夹的修改时间会不会跟着变没有测,缓存只看 metadata.json 自己的 mtime;标签选择器没在设备上点过;各语言译文没有母语者校对。

Closes #185

@HicirTech
HicirTech merged commit 193df4b into main Oct 17, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(inventory): 在 SMB 库里搜索画廊

1 participant