TaskStatus.php
- Pfad:
src/Domain/ValueObject/TaskStatus.php - Namespace: Domain\ValueObject
- Zeilen: 77 | Größe: 1,958 Bytes
- Geändert: 2025-12-23 08:08:26 | Gescannt: 2025-12-31 10:22:15
Code Hygiene Score: 100
- Dependencies: 100 (25%)
- LOC: 100 (20%)
- Methods: 100 (20%)
- Secrets: 100 (15%)
- Classes: 100 (10%)
- Magic Numbers: 100 (10%)
Keine Issues gefunden.
Klassen 1
-
TaskStatusenum Zeile 9
Funktionen 5
-
canTransitionTo()public Zeile 20 -
getAllowedTransitions()public Zeile 30 -
isTerminal()public Zeile 44 -
label()public Zeile 52 -
badgeClass()public Zeile 66
Verwendet von 2
- ExecuteAITaskUseCase.php use
- Task.php use
Versionen 3
-
v3
2025-12-23 08:08 | claude-code-hook | modified
Claude Code Pre-Hook Backup vor Edit-Operation -
v2
2025-12-22 15:53 | claude-code-hook | modified
Claude Code Pre-Hook Backup vor Edit-Operation -
v1
2025-12-22 15:53 | claude-code-hook | modified
Claude Code Pre-Hook Backup vor Edit-Operation
Code
<?php
declare(strict_types=1);
namespace Domain\ValueObject;
// @responsibility: Task-Status-Enum mit State-Machine-Transitionen
enum TaskStatus: string
{
case PENDING = 'pending';
case IN_PROGRESS = 'in_progress';
case COMPLETED = 'completed';
case FAILED = 'failed';
case CANCELLED = 'cancelled';
/**
* Check if transition to target status is allowed.
*/
public function canTransitionTo(self $target): bool
{
return in_array($target, $this->getAllowedTransitions(), true);
}
/**
* Get all allowed transitions from current status.
*
* @return array<self>
*/
public function getAllowedTransitions(): array
{
return match ($this) {
self::PENDING => [self::IN_PROGRESS, self::CANCELLED],
self::IN_PROGRESS => [self::COMPLETED, self::FAILED, self::CANCELLED],
self::COMPLETED => [],
self::FAILED => [self::PENDING], // Allow retry
self::CANCELLED => [],
};
}
/**
* Check if this is a terminal (final) status.
*/
public function isTerminal(): bool
{
return in_array($this, [self::COMPLETED, self::FAILED, self::CANCELLED], true);
}
/**
* Get human-readable label.
*/
public function label(): string
{
return match ($this) {
self::PENDING => 'Offen',
self::IN_PROGRESS => 'In Arbeit',
self::COMPLETED => 'Abgeschlossen',
self::FAILED => 'Fehlgeschlagen',
self::CANCELLED => 'Abgebrochen',
};
}
/**
* Get CSS class for badge styling.
*/
public function badgeClass(): string
{
return match ($this) {
self::PENDING => 'pending',
self::IN_PROGRESS => 'info',
self::COMPLETED => 'completed',
self::FAILED => 'failed',
self::CANCELLED => 'warning',
};
}
}