Coverage for src \ truenex_memory \ store \ models.py: 100%

42 statements  

« prev     ^ index     » next       coverage.py v7.14.0, created at 2026-05-19 10:21 +0200

1"""Small data models returned by the local store.""" 

2 

3from __future__ import annotations 

4 

5from dataclasses import dataclass 

6import json 

7 

8 

9VALID_STATUSES = frozenset({"active", "obsolete", "superseded", "conflicting", "unverified"}) 

10 

11 

12@dataclass(frozen=True) 

13class MemoryNode: 

14 """A structured memory node row from the local store.""" 

15 

16 id: str 

17 project_id: str 

18 type: str 

19 title: str 

20 content: str 

21 status: str 

22 source_kind: str 

23 source_document_id: str | None 

24 source_chunk_id: str | None 

25 source_path: str | None 

26 content_hash: str | None 

27 created_by: str 

28 model_name: str | None 

29 confidence: float | None 

30 created_at: str 

31 updated_at: str 

32 

33 

34@dataclass(frozen=True) 

35class SearchHit: 

36 """A ranked local retrieval result.""" 

37 

38 title: str 

39 content: str 

40 source_path: str | None 

41 heading_path: str | None 

42 memory_type: str 

43 status: str 

44 score: float 

45 

46 

47@dataclass(frozen=True) 

48class RetrievalLog: 

49 """A recorded retrieval log row.""" 

50 

51 id: str 

52 project_id: str 

53 query: str 

54 top_k: int 

55 result_count: int 

56 results_json: str 

57 created_at: str 

58 

59 def parsed_results(self) -> list[dict[str, object]]: 

60 return json.loads(self.results_json)