693cd952cd
仓库首次入库(此前仅存在于本地工作区与测试服构建产物中,未上传)。 改动(src/knowledge_adapter/asset_content_processor.py): - 新增 _TRUNCATED_TRAILING_MARKDOWN_RESOURCE_IMAGE 规则,清除 chunk 末尾被截断的  - 回归测试 tests/test_asset_content_processor.py:: test_truncated_trailing_markdown_resource_image_is_removed 验证证据: - 测试服 120.76.217.51,镜像 knowledge-adapter-service:reviewed-test-aeab4b5fca2d (release aeab4b5fca2d8661):KB d015d05c-25c8-4d63-b2ab-e8590d3c2dfb 5 个查询全部 http=200、records=5、残留 resource:// = 0;KB b9dacd62 无退化;容器日志无 error/exception - 本地:pytest 141 项全通过、ruff 全通过 - 该文件与 258c31e0fe07fd08 源码的差异经逐文件 md5 比对,为唯一变更文件
35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
from knowledge_adapter.content_budget import TRUNCATION_MARKER, truncate_content
|
|
|
|
|
|
def test_plain_content_is_truncated_with_explicit_marker() -> None:
|
|
limit = len(TRUNCATION_MARKER) + 5
|
|
|
|
result = truncate_content("abcdefghij" * 10, max_chars=limit)
|
|
|
|
assert result == f"abcde{TRUNCATION_MARKER}"
|
|
assert len(result) == limit
|
|
|
|
|
|
def test_truncation_never_splits_markdown_image_node() -> None:
|
|
content = (
|
|
"prefix "
|
|
""
|
|
" trailing text"
|
|
)
|
|
limit = len(TRUNCATION_MARKER) + len("prefix 
|
|
|
|
result = truncate_content(content, max_chars=limit)
|
|
|
|
assert result == f"prefix {TRUNCATION_MARKER}"
|
|
assert len(result) <= limit
|
|
|
|
|
|
def test_truncation_never_splits_fenced_code_block() -> None:
|
|
content = "intro\n```python\nprint('sensitive')\n```\n" + ("after" * 20)
|
|
limit = len(TRUNCATION_MARKER) + len("intro\n```python\nprint")
|
|
|
|
result = truncate_content(content, max_chars=limit)
|
|
|
|
assert result == f"intro\n{TRUNCATION_MARKER}"
|
|
assert result.count("```") == 0
|