docs: consolidate documentation into organized structure

- Move 12 markdown files from root to docs/ subdirectories
- Organize documentation by category:
  • docs/troubleshooting/ (1 file)  - Technical troubleshooting guides
  • docs/deployment/      (4 files) - Deployment and security documentation
  • docs/guides/          (3 files) - Feature-specific guides
  • docs/planning/        (4 files) - Planning and improvement proposals

Root directory cleanup:
- Reduced from 16 to 4 markdown files in root
- Only essential project files remain:
  • CLAUDE.md (AI instructions)
  • README.md (Main project readme)
  • CLEANUP_PLAN.md (Current cleanup plan)
  • SRC_STRUCTURE_IMPROVEMENTS.md (Structure improvements)

This improves:
 Documentation discoverability
 Logical organization by purpose
 Clean root directory
 Better maintainability
This commit is contained in:
2025-10-05 11:05:04 +02:00
parent 887847dde6
commit 5050c7d73a
36686 changed files with 196456 additions and 12398919 deletions

View File

@@ -0,0 +1,92 @@
<?php
declare(strict_types=1);
namespace App\Framework\Queue\ValueObjects;
/**
* Job status enumeration for tracking job lifecycle
*/
enum JobStatus: string
{
case PENDING = 'pending'; // Job created, waiting in queue
case PROCESSING = 'processing'; // Job being processed
case COMPLETED = 'completed'; // Job completed successfully
case FAILED = 'failed'; // Job failed with error
case RETRYING = 'retrying'; // Job failed, retrying
case CANCELLED = 'cancelled'; // Job was cancelled
case EXPIRED = 'expired'; // Job expired (timeout)
/**
* Get human-readable label
*/
public function getLabel(): string
{
return match ($this) {
self::PENDING => 'Pending',
self::PROCESSING => 'Processing',
self::COMPLETED => 'Completed',
self::FAILED => 'Failed',
self::RETRYING => 'Retrying',
self::CANCELLED => 'Cancelled',
self::EXPIRED => 'Expired',
};
}
/**
* Check if status represents a final state
*/
public function isFinal(): bool
{
return match ($this) {
self::COMPLETED, self::CANCELLED, self::EXPIRED => true,
default => false
};
}
/**
* Check if status represents an active state
*/
public function isActive(): bool
{
return match ($this) {
self::PENDING, self::PROCESSING, self::RETRYING => true,
default => false
};
}
/**
* Check if status represents a failure state
*/
public function isFailure(): bool
{
return match ($this) {
self::FAILED, self::EXPIRED => true,
default => false
};
}
/**
* Get next possible statuses from current status
*
* @return self[]
*/
public function getNextPossibleStatuses(): array
{
return match ($this) {
self::PENDING => [self::PROCESSING, self::CANCELLED],
self::PROCESSING => [self::COMPLETED, self::FAILED, self::CANCELLED, self::EXPIRED],
self::RETRYING => [self::PROCESSING, self::FAILED, self::CANCELLED],
self::FAILED => [self::RETRYING, self::CANCELLED],
default => [] // Final states have no transitions
};
}
/**
* Check if transition to another status is valid
*/
public function canTransitionTo(self $newStatus): bool
{
return in_array($newStatus, $this->getNextPossibleStatuses(), true);
}
}