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

1from __future__ import annotations 

2 

3from dataclasses import dataclass 

4 

5from lexigram.domain import DomainModel 

6from lexigram.validation import Field 

7 

8 

9@dataclass(init=False) 

10class RAGCacheStats(DomainModel): 

11 """Statistics for cache operations.""" 

12 

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") 

18 

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 

24 

25 @property 

26 def total_operations(self) -> int: 

27 """Calculate total cache operations.""" 

28 return self.hits + self.misses + self.sets + self.deletes