Coverage for /home/admin/Documents/AI/applications/lexigram-dev/lexigram/experimental/ai/lexigram-ai-rag/src/lexigram/ai/rag/cache/stats.py: 83%
18 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-25 07:19 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-25 07:19 +0800
1from __future__ import annotations
3from dataclasses import dataclass
5from lexigram.domain import DomainModel
6from lexigram.validation import Field
9@dataclass(init=False)
10class RAGCacheStats(DomainModel):
11 """Statistics for cache operations."""
13 hits: int = Field(default=0, description="Cache hits")
14 misses: int = Field(default=0, description="Cache misses")
15 sets: int = Field(default=0, description="Cache sets")
16 deletes: int = Field(default=0, description="Cache deletes")
17 errors: int = Field(default=0, description="Cache errors")
19 @property
20 def hit_rate(self) -> float:
21 """Calculate cache hit rate."""
22 total = self.hits + self.misses
23 return self.hits / total if total > 0 else 0.0
25 @property
26 def total_operations(self) -> int:
27 """Calculate total cache operations."""
28 return self.hits + self.misses + self.sets + self.deletes