TaskResultBuilder.php
- Pfad:
src/Domain/Entity/TaskResultBuilder.php - Namespace: Domain\Entity
- Zeilen: 141 | Größe: 3,471 Bytes
- Geändert: 2025-12-25 16:58:40 | Gescannt: 2025-12-31 10:22:15
Code Hygiene Score: 96
- Dependencies: 100 (25%)
- LOC: 79 (20%)
- Methods: 100 (20%)
- Secrets: 100 (15%)
- Classes: 100 (10%)
- Magic Numbers: 100 (10%)
Keine Issues gefunden.
Dependencies 6
- constructor Domain\ValueObject\AssigneeType
- use Domain\ValueObject\AssigneeType
- use Domain\ValueObject\ExecutionDuration
- use Domain\ValueObject\ExecutionMetrics
- use Domain\ValueObject\ResultStatus
- use Domain\ValueObject\TokenCount
Klassen 1
-
TaskResultBuilderclass Zeile 15
Funktionen 13
-
__construct()public Zeile 29 -
withAssignment()public Zeile 43 -
withModel()public Zeile 50 -
withRequest()public Zeile 57 -
withResponse()public Zeile 64 -
withDuration()public Zeile 72 -
withMetrics()public Zeile 79 -
withTokens()public Zeile 86 -
withCost()public Zeile 93 -
withStatus()public Zeile 100 -
withError()public Zeile 107 -
estimateTokens()public Zeile 115 -
build()public Zeile 124
Versionen 2
-
v2
2025-12-25 16:58 | claude-code-hook | modified
Claude Code Pre-Hook Backup vor Edit-Operation -
v1
2025-12-25 16:58 | claude-code-hook | modified
Claude Code Pre-Hook Backup vor Edit-Operation
Code
<?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
);
}
}