File size: 1,942 Bytes
aad7814
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
"""Reference ingest body cleanup — strip photo captions and RICS NOTE blocks."""

from __future__ import annotations

from backend.core.reference_chunker import (
    _clean_reference_body,
    build_reference_chunks,
    split_into_section_paragraphs,
)


def test_clean_reference_body_strips_photos_and_notes() -> None:
    raw = (
        "NOTE 2: You will need to submit a Building Regulations application.\n"
        "The mortar bedding and pointing to the ridge tiles is deteriorating.\n"
        "Photo - 5 Main roof hip pitched style\n"
        "Photo - 6 Front roof slope. Note the slipped tiles.\n"
        "There is some moss and lichen growth on the roof.\n"
    )
    cleaned = _clean_reference_body(raw)
    assert "NOTE 2" not in cleaned
    assert "Photo -" not in cleaned
    assert "mortar bedding" in cleaned
    assert "moss and lichen" in cleaned


def test_split_into_section_paragraphs_deduplicates_table_stub() -> None:
    text = (
        "D2 Roof coverings\n"
        "Element no. Element name\n"
        "D2 Roof coverings\n"
        "The pitched roof covering comprises natural slate tiles laid to timber rafters.\n"
        "Photo - 1 Main roof\n"
    )
    tagged = split_into_section_paragraphs(text, {"D2"})
    assert len(tagged) == 1
    sid, _idx, body = tagged[0]
    assert sid == "D2"
    assert "slate tiles" in body
    assert "Element no" not in body
    assert "Photo -" not in body


def test_build_reference_chunks_applies_cleanup() -> None:
    text = (
        "F4 Heating\n"
        "NOTE 1: Generic procedural guidance only.\n"
        "The boiler is a condensing unit installed in 2019.\n"
        "Photo - 3 Boiler cupboard\n"
    )
    chunks = build_reference_chunks(text, source_filename="past.pdf", valid_section_ids={"F4"})
    assert len(chunks) == 1
    assert "condensing unit" in chunks[0].text
    assert "NOTE 1" not in chunks[0].text
    assert "Photo -" not in chunks[0].text