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
« 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."""
3from __future__ import annotations
5from dataclasses import dataclass
6import json
9VALID_STATUSES = frozenset({"active", "obsolete", "superseded", "conflicting", "unverified"})
12@dataclass(frozen=True)
13class MemoryNode:
14 """A structured memory node row from the local store."""
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
34@dataclass(frozen=True)
35class SearchHit:
36 """A ranked local retrieval result."""
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
47@dataclass(frozen=True)
48class RetrievalLog:
49 """A recorded retrieval log row."""
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
59 def parsed_results(self) -> list[dict[str, object]]:
60 return json.loads(self.results_json)