Backup #1401
| ID | 1401 |
| Dateipfad | /var/www/dev.campus.systemische-tools.de/src/Domain/Entity/TaskResultBuilder.php |
| Version | 1 |
| Typ |
modified |
| Größe | 3.4 KB |
| Hash | 645a7f9bfcb990ea32dfee9eb1667c969630cfaa96edb96c3bfd6bcb1ec01480 |
| Datum | 2025-12-25 16:58:23 |
| Geändert von | claude-code-hook |
| Grund | Claude Code Pre-Hook Backup vor Edit-Operation |
| Datei existiert |
Ja
|
Dateiinhalt
<?php
declare(strict_types=1);
namespace Domain\Entity;
// @responsibility: Builder für TaskResult-Entity (optionale Felder, Validierung)
use Domain\ValueObject\AssigneeType;
use Domain\ValueObject\ExecutionDuration;
use Domain\ValueObject\ExecutionMetrics;
use Domain\ValueObject\ResultStatus;
use Domain\ValueObject\TokenCount;
final class TaskResultBuilder
{
private int $taskId;
private ?int $assignmentId = null;
private string $executor;
private AssigneeType $executorType;
private ?string $modelName = null;
private ?string $request = null;
private ?string $response = null;
private ExecutionDuration $duration;
private ExecutionMetrics $metrics;
private ResultStatus $status = ResultStatus::SUCCESS;
private ?string $errorMessage = null;
public function __construct(int $taskId, string $executor, AssigneeType $executorType)
{
$this->taskId = $taskId;
$this->executor = $executor;
$this->executorType = $executorType;
$this->duration = ExecutionDuration::now();
$this->metrics = ExecutionMetrics::zero();
}
public static function for(int $taskId, string $executor, AssigneeType $executorType): self
{
return new self($taskId, $executor, $executorType);
}
public function withAssignment(int $assignmentId): self
{
$this->assignmentId = $assignmentId;
return $this;
}
public function withModel(string $modelName): self
{
$this->modelName = $modelName;
return $this;
}
public function withRequest(string $request): self
{
$this->request = $request;
return $this;
}
public function withResponse(string $response): self
{
$this->response = $response;
$this->duration = $this->duration->completeNow();
return $this;
}
public function withDuration(ExecutionDuration $duration): self
{
$this->duration = $duration;
return $this;
}
public function withMetrics(ExecutionMetrics $metrics): self
{
$this->metrics = $metrics;
return $this;
}
public function withTokens(int $input, int $output): self
{
$this->metrics = $this->metrics->withTokens(TokenCount::create($input, $output));
return $this;
}
public function withCost(float $costUsd): self
{
$this->metrics = $this->metrics->withCost($costUsd);
return $this;
}
public function withStatus(ResultStatus $status): self
{
$this->status = $status;
return $this;
}
public function withError(string $errorMessage): self
{
$this->errorMessage = $errorMessage;
$this->status = ResultStatus::ERROR;
return $this;
}
public function estimateTokens(): self
{
if ($this->request !== null && $this->response !== null) {
$this->metrics = ExecutionMetrics::fromEstimation($this->request, $this->response);
}
return $this;
}
public function build(): TaskResult
{
return new TaskResult(
$this->taskId,
$this->assignmentId,
$this->executor,
$this->executorType,
$this->modelName,
$this->request,
$this->response,
$this->duration,
$this->metrics,
$this->status,
$this->errorMessage
);
}
}
Vollständig herunterladen
Aktionen
Andere Versionen dieser Datei
| ID |
Version |
Typ |
Größe |
Datum |
| 1410 |
2 |
modified |
3.4 KB |
2025-12-25 16:58 |
| 1401 |
1 |
modified |
3.4 KB |
2025-12-25 16:58 |
← Zurück zur Übersicht