Record a chunk processing result.
(
self,
chunk_index: int,
success: bool,
memories_created: int,
chunk_time: float,
details: Optional[Dict[str, Any]] = None
)
| 187 | self.build_logs = [] |
| 188 | |
| 189 | def record_chunk( |
| 190 | self, |
| 191 | chunk_index: int, |
| 192 | success: bool, |
| 193 | memories_created: int, |
| 194 | chunk_time: float, |
| 195 | details: Optional[Dict[str, Any]] = None |
| 196 | ) -> None: |
| 197 | """Record a chunk processing result.""" |
| 198 | self.processed_chunks += 1 |
| 199 | self.chunk_timings.append(chunk_time) |
| 200 | |
| 201 | if success: |
| 202 | self.successful_builds += 1 |
| 203 | self.total_memories_created += memories_created |
| 204 | else: |
| 205 | self.failed_builds += 1 |
| 206 | |
| 207 | log_entry = { |
| 208 | "chunk_index": chunk_index, |
| 209 | "success": success, |
| 210 | "memories_created": memories_created, |
| 211 | "chunk_time": round(chunk_time, 3), |
| 212 | "timestamp": datetime.now().isoformat(), |
| 213 | } |
| 214 | if details: |
| 215 | log_entry["details"] = details |
| 216 | self.build_logs.append(log_entry) |
| 217 | |
| 218 | # Log progress |
| 219 | elapsed = time.time() - self.start_time |
| 220 | progress_pct = (self.processed_chunks / self.total_chunks) * 100 |
| 221 | avg_time = sum(self.chunk_timings) / len(self.chunk_timings) if self.chunk_timings else 0 |
| 222 | eta = avg_time * (self.total_chunks - self.processed_chunks) |
| 223 | |
| 224 | logger.info( |
| 225 | f"[MemRL Build] Progress: {self.processed_chunks}/{self.total_chunks} " |
| 226 | f"({progress_pct:.1f}%) | Memories: {self.total_memories_created} | " |
| 227 | f"Success: {self.successful_builds} | Failed: {self.failed_builds} | ETA: {eta:.1f}s" |
| 228 | ) |
| 229 | |
| 230 | def get_summary(self) -> Dict[str, Any]: |
| 231 | """Get build progress summary.""" |