diff --git a/paperforge/worker/base_views.py b/paperforge/worker/base_views.py index 7976b527..04c664e6 100644 --- a/paperforge/worker/base_views.py +++ b/paperforge/worker/base_views.py @@ -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} diff --git a/tests/test_base_preservation.py b/tests/test_base_preservation.py index 7498402b..42128d7b 100644 --- a/tests/test_base_preservation.py +++ b/tests/test_base_preservation.py @@ -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 diff --git a/tests/test_base_views.py b/tests/test_base_views.py index af307ad3..9cf25a85 100644 --- a/tests/test_base_views.py +++ b/tests/test_base_views.py @@ -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