Files
mnote/.codex/reasonix-tasks/2026-05-21-batch-b2-worker-f-local-index-panel.md
T

2.7 KiB
Raw Blame History

Batch B2 Worker FLocal Search Index Page Settings Panel

项目根目录:/mnt/Data1T/mnote

你不是单独在代码库里工作,可能有其他 worker 并行执行。不要回滚、覆盖或格式化与你任务无关的文件;不要提交 git。

背景

Batch B Worker C 运行 scripts/task452-local-search-index-browser-smoke.js

  • /api/search/documents 返回 200,结果包含 LOCAL-SEARCH-* token。
  • 失败点在 page-settings 索引页签:wolai-page-settings-local-index-backlinks / wolai-page-settings-local-index-tags 30 秒内没有渲染出 "Search Smoke""#alpha"
  • 结果文件:tmp/task452-local-search-index-browser-smoke/result.json

初步入口:

  • rust/crates/mnote-web/src/ssr/pages/layout.rs
    • pageSettingsLocalIndexScopeKey
    • pageSettingsLocalIndexIsAvailable
    • renderPageSettingsLocalIndex
    • loadPageSettingsLocalIndex
    • setActivePageSettingsTab
  • Rust API 单测在 rust/crates/mnote-web/src/routes/search.rs 已覆盖 /api/search/local-index/backlinks/api/search/local-index/tags 授权读取。

目标

系统化排查并最小修复 task452

  1. 先复现或读取 tmp/task452.../result.json,确认不是搜索 API 问题。
  2. 明确 root cause:例如 currentRootUri()currentDocumentId()resolveWorkspaceId(document.body)、tab 激活、fetch 失败、payload shape、或 UI render 条件。
  3. 用最小补丁修复 page-settings 本地索引 panel 的渲染。
  4. 保持 local-first 口径:本地索引 panel 只在 sourceKind=local_folder + rootUri + 当前文档可识别时工作。

允许修改范围

  • rust/crates/mnote-web/src/ssr/pages/layout.rs
  • scripts/task452-local-search-index-browser-smoke.js(仅允许增加诊断或同步当前真实 UI 语义;不要弱化核心断言)
  • 可新增 .codex/reasonix-tasks/results/batch-b2-worker-f-local-index-panel.md

不要修改搜索后端、Convex、OnlyOffice、AI 工具链。

验收命令

至少运行:

node --check scripts/task452-local-search-index-browser-smoke.js

如果本地 http://127.0.0.1:3000 可用,请实跑:

PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/google-chrome-stable node scripts/task452-local-search-index-browser-smoke.js

如改动 layout.rs 影响 Rust 编译,请运行相关 targeted test 或至少:

cargo test -p mnote-web search_local_index_backlinks_and_tags_read_authorized_root -- --test-threads=1

输出要求

最终说明:

  • 根因判断,必须指向具体函数或数据流。
  • 修改了哪些文件。
  • 验证命令和结果。
  • task452 仍失败时,说明新的失败点,不要把失败写成完成。