fix(base): use configured folder filter for fresh base views

This commit is contained in:
Research Assistant 2026-05-31 20:55:16 +08:00
parent 8d9aef1516
commit 3ed73a434f
3 changed files with 6 additions and 5 deletions

View file

@ -263,7 +263,7 @@ def _inject_widths_into_block(text: str, widths: dict[str, int]) -> str:
return "\n".join(result)
def merge_base_views(existing_content: str | None, new_views: list[dict]) -> str:
def merge_base_views(existing_content: str | None, new_views: list[dict], folder_filter: str = "") -> str:
"""Incrementally merge standard PaperForge views into an existing .base file.
Strategy:
@ -277,6 +277,7 @@ def merge_base_views(existing_content: str | None, new_views: list[dict]) -> str
Args:
existing_content: Raw text of existing .base file (or None/empty for fresh generation).
new_views: List of 8 view dicts from build_base_views().
folder_filter: Vault-relative folder path for file.inFolder() (used for fresh generation).
Returns:
Merged .base file content with PaperForge views updated, user views preserved.
@ -315,7 +316,7 @@ def merge_base_views(existing_content: str | None, new_views: list[dict]) -> str
fresh_views_yaml = _render_views_section(new_views)
return f"""filters:
and:
- file.inFolder("{new_views[0]["name"]}")
- file.inFolder("{folder_filter}")
- file.ext == "md"
- !zotero_key.isEmpty()
{PROPERTIES_YAML}

View file

@ -234,7 +234,7 @@ views:
- title
"""
views = build_base_views("骨科")
result = merge_base_views(existing, views)
result = merge_base_views(existing, views, folder_filter="Resources/Literature/骨科")
assert "My Custom View" in result, "User view was lost"
assert "推荐分析" in result
@ -243,7 +243,7 @@ views:
def test_merge_base_views_first_run_generates_fresh(self):
"""merge_base_views with no existing content generates fresh YAML."""
views = build_base_views("骨科")
result = merge_base_views(None, views)
result = merge_base_views(None, views, folder_filter="Resources/Literature/骨科")
assert "views:" in result
assert "type: table" in result

View file

@ -79,7 +79,7 @@ class TestBuildBaseViews:
def test_properties_yaml_updated(self):
from paperforge.worker.base_views import merge_base_views
fresh = merge_base_views(None, build_base_views("骨科"))
fresh = merge_base_views(None, build_base_views("骨科"), folder_filter="Resources/Literature/骨科")
assert "lifecycle:" not in fresh
assert "maturity_level:" not in fresh
assert "next_step:" not in fresh