mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-07-06 22:12:12 +02:00
Revert "Merge pull request #1523 from CREDO23/fix/chat-citations"
This reverts commitcd2242147a, reversing changes made toa4bb0a5253.
This commit is contained in:
parent
fb955d3201
commit
a08de01cc7
53 changed files with 410 additions and 1788 deletions
|
|
@ -71,7 +71,7 @@ class _KBBackendStub(KBPostgresBackend):
|
|||
def __init__(self, *, children=None, file_data=None) -> None:
|
||||
self.als_info = AsyncMock(return_value=children or [])
|
||||
self._load_file_data = AsyncMock(
|
||||
return_value=(file_data, 17, None) if file_data is not None else None
|
||||
return_value=(file_data, 17) if file_data is not None else None
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -69,25 +69,13 @@ class _FakeSession:
|
|||
|
||||
@pytest.fixture(autouse=True)
|
||||
def _stub_embeddings_and_chunks(monkeypatch: pytest.MonkeyPatch) -> None:
|
||||
"""Avoid loading the embedding model in unit tests.
|
||||
|
||||
Mirrors the legacy stub: one chunk spanning the whole content, with a
|
||||
zero summary/chunk vector, routed through the shared span builder.
|
||||
"""
|
||||
from app.indexing_pipeline.document_chunker import ChunkSlice
|
||||
|
||||
async def _fake_build_chunk_embeddings(content: str, *, use_code_chunker: bool):
|
||||
summary = np.zeros(8, dtype=np.float32)
|
||||
pairs = (
|
||||
[(ChunkSlice(content, 0, len(content)), np.zeros(8, dtype=np.float32))]
|
||||
if content
|
||||
else []
|
||||
)
|
||||
return summary, pairs
|
||||
|
||||
"""Avoid loading the embedding model in unit tests."""
|
||||
monkeypatch.setattr(
|
||||
kb_persistence, "build_chunk_embeddings", _fake_build_chunk_embeddings
|
||||
kb_persistence,
|
||||
"embed_texts",
|
||||
lambda texts: [np.zeros(8, dtype=np.float32) for _ in texts],
|
||||
)
|
||||
monkeypatch.setattr(kb_persistence, "chunk_text", lambda content: [content])
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
|
|
|
|||
|
|
@ -1,92 +0,0 @@
|
|||
"""Unit tests for the numbered-document read preamble."""
|
||||
|
||||
import pytest
|
||||
|
||||
from app.agents.chat.multi_agent_chat.shared.middleware.filesystem.backends.numbered_document import (
|
||||
build_read_preamble,
|
||||
compute_matched_line_ranges,
|
||||
)
|
||||
|
||||
pytestmark = pytest.mark.unit
|
||||
|
||||
|
||||
_BODY = "alpha\nbravo\ncharlie\ndelta"
|
||||
|
||||
|
||||
class TestComputeMatchedLineRanges:
|
||||
def test_maps_matched_chunk_spans_to_line_ranges(self):
|
||||
chunks = [(1, 0, 12), (2, 12, len(_BODY))]
|
||||
ranges = compute_matched_line_ranges(_BODY, chunks, {2})
|
||||
assert ranges == [(3, 4)]
|
||||
|
||||
def test_includes_only_matched_chunks(self):
|
||||
chunks = [(1, 0, 5), (2, 6, 11)]
|
||||
ranges = compute_matched_line_ranges(_BODY, chunks, {1})
|
||||
assert ranges == [(1, 1)]
|
||||
|
||||
def test_skips_chunks_without_spans(self):
|
||||
chunks = [(1, None, None)]
|
||||
ranges = compute_matched_line_ranges(_BODY, chunks, {1})
|
||||
assert ranges == []
|
||||
|
||||
def test_sorted_and_deduplicated(self):
|
||||
chunks = [(1, 12, len(_BODY)), (2, 0, 5), (3, 0, 5)]
|
||||
ranges = compute_matched_line_ranges(_BODY, chunks, {1, 2, 3})
|
||||
assert ranges == [(1, 1), (3, 4)]
|
||||
|
||||
|
||||
class TestBuildReadPreamble:
|
||||
def test_contains_document_metadata(self):
|
||||
preamble = build_read_preamble(
|
||||
document_id=42,
|
||||
document_type="FILE",
|
||||
title="Test Doc",
|
||||
url="https://example.com",
|
||||
matched_line_ranges=[],
|
||||
)
|
||||
assert "<document_id>42</document_id>" in preamble
|
||||
assert "<document_type>FILE</document_type>" in preamble
|
||||
assert "Test Doc" in preamble
|
||||
assert "https://example.com" in preamble
|
||||
|
||||
def test_citation_hint_uses_document_id(self):
|
||||
preamble = build_read_preamble(
|
||||
document_id=42,
|
||||
document_type="FILE",
|
||||
title="Test Doc",
|
||||
url="",
|
||||
matched_line_ranges=[],
|
||||
)
|
||||
assert "[citation:d42#L" in preamble
|
||||
|
||||
def test_lists_matched_line_ranges(self):
|
||||
preamble = build_read_preamble(
|
||||
document_id=7,
|
||||
document_type="NOTE",
|
||||
title="Notes",
|
||||
url="",
|
||||
matched_line_ranges=[(12, 18), (40, 40)],
|
||||
)
|
||||
assert "<matched_lines>" in preamble
|
||||
assert "12-18" in preamble
|
||||
assert "40" in preamble
|
||||
|
||||
def test_omits_matched_lines_block_when_empty(self):
|
||||
preamble = build_read_preamble(
|
||||
document_id=7,
|
||||
document_type="NOTE",
|
||||
title="Notes",
|
||||
url="",
|
||||
matched_line_ranges=[],
|
||||
)
|
||||
assert "<matched_lines>" not in preamble
|
||||
|
||||
def test_ends_with_trailing_newline_so_body_follows_cleanly(self):
|
||||
preamble = build_read_preamble(
|
||||
document_id=1,
|
||||
document_type="FILE",
|
||||
title="t",
|
||||
url="",
|
||||
matched_line_ranges=[],
|
||||
)
|
||||
assert preamble.endswith("\n")
|
||||
Loading…
Add table
Add a link
Reference in a new issue