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 比对,为唯一变更文件
28 lines
852 B
Python
28 lines
852 B
Python
from collections.abc import AsyncIterator
|
|
|
|
import httpx
|
|
import pytest
|
|
|
|
from knowledge_adapter.app import create_app
|
|
|
|
|
|
@pytest.fixture
|
|
async def client() -> AsyncIterator[httpx.AsyncClient]:
|
|
transport = httpx.ASGITransport(app=create_app())
|
|
async with httpx.AsyncClient(transport=transport, base_url="http://test") as value:
|
|
yield value
|
|
|
|
|
|
async def test_healthz_reports_only_adapter_liveness(client: httpx.AsyncClient) -> None:
|
|
response = await client.get("/healthz")
|
|
|
|
assert response.status_code == 200
|
|
assert response.json() == {"status": "ok"}
|
|
assert set(response.headers) >= {"content-type"}
|
|
|
|
|
|
async def test_api_documentation_is_not_exposed(client: httpx.AsyncClient) -> None:
|
|
for path in ("/docs", "/redoc", "/openapi.json"):
|
|
response = await client.get(path)
|
|
assert response.status_code == 404
|