Add a single task result and update the file.
(self, task: Task, processing_time: float = None)
| 77 | asyncio.create_task(self._save_to_file()) |
| 78 | |
| 79 | async def add_task_result(self, task: Task, processing_time: float = None): |
| 80 | """Add a single task result and update the file.""" |
| 81 | async with self.file_lock: |
| 82 | task_result = { |
| 83 | "task_id": task.task_id, |
| 84 | "task_input": task.input[:200] + "..." if len(task.input) > 200 else task.input, |
| 85 | "ground_truth": str(task.ground_truth) if task.ground_truth else "", |
| 86 | "result": str(task.result) if task.result else "", |
| 87 | "reasoning": getattr(task, 'reasoning', ""), |
| 88 | "correct": task.score == 1.0 if task.score is not None else False, |
| 89 | "processing_time": processing_time or getattr(task, 'time', 0.0) |
| 90 | } |
| 91 | |
| 92 | self.results_data["results"].append(task_result) |
| 93 | |
| 94 | # Update summary |
| 95 | self.results_data["summary"]["completed_tasks"] = len(self.results_data["results"]) |
| 96 | correct_count = sum(1 for r in self.results_data["results"] if r["correct"]) |
| 97 | self.results_data["summary"]["correct_answers"] = correct_count |
| 98 | self.results_data["summary"]["accuracy"] = correct_count / len(self.results_data["results"]) if self.results_data["results"] else 0.0 |
| 99 | self.results_data["summary"]["last_updated"] = datetime.now().isoformat() + "Z" |
| 100 | |
| 101 | # Save updated results |
| 102 | await self._save_to_file() |
| 103 | |
| 104 | async def _save_to_file(self): |
| 105 | """Save current results to JSON file.""" |
no test coverage detected