CreateContentOrderCommand.php
- Pfad:
src/UseCases/Command/CreateContentOrderCommand.php - Namespace: UseCases\Command
- Zeilen: 105 | Größe: 3,302 Bytes
- Geändert: 2025-12-30 22:19:41 | 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
-
CreateContentOrderCommandclass Zeile 9
Funktionen 5
-
__construct()public Zeile 15 -
fromRequest()public Zeile 36 -
validate()public Zeile 72 -
isValid()public Zeile 95 -
shouldGenerate()public Zeile 100
Verwendet von 1
Versionen 3
-
v3
2025-12-30 22:19 | claude-code-hook | modified
Claude Code Pre-Hook Backup vor Edit-Operation -
v2
2025-12-30 22:19 | claude-code-hook | modified
Claude Code Pre-Hook Backup vor Edit-Operation -
v1
2025-12-23 07:57 | claude-code-hook | modified
Claude Code Pre-Hook Backup vor Edit-Operation
Code
<?php
declare(strict_types=1);
namespace UseCases\Command;
// @responsibility: Command-Objekt für Content-Auftragserstellung
final class CreateContentOrderCommand
{
/**
* @param array<string> $collections
* @param array<int> $selectedCritics
*/
public function __construct(
public readonly string $title,
public readonly string $briefing,
public readonly string $model,
public readonly array $collections,
public readonly int $contextLimit,
public readonly ?int $authorProfileId,
public readonly ?int $contractId,
public readonly ?int $structureId,
public readonly string $action,
public readonly float $temperature = 0.5,
public readonly int $maxTokens = 4096,
public readonly ?int $systemPromptId = null,
public readonly array $selectedCritics = [],
public readonly bool $qualityCheck = false,
) {
}
/**
* @param array<string, mixed> $data
*/
public static function fromRequest(array $data): self
{
$collections = $data['collections'] ?? ['documents'];
if (!is_array($collections)) {
$collections = [$collections];
}
$critics = $data['critics'] ?? [];
if (!is_array($critics)) {
$critics = [];
}
$critics = array_map('intval', array_filter($critics));
return new self(
title: trim((string) ($data['title'] ?? '')),
briefing: trim((string) ($data['briefing'] ?? '')),
model: (string) ($data['model'] ?? 'mistral'),
collections: $collections,
contextLimit: (int) ($data['context_limit'] ?? 5),
authorProfileId: !empty($data['author_profile_id']) ? (int) $data['author_profile_id'] : null,
contractId: !empty($data['contract_id']) ? (int) $data['contract_id'] : null,
structureId: !empty($data['structure_id']) ? (int) $data['structure_id'] : null,
action: (string) ($data['action'] ?? 'save'),
temperature: (float) ($data['temperature'] ?? 0.5),
maxTokens: (int) ($data['max_tokens'] ?? 4096),
systemPromptId: !empty($data['system_prompt_id']) ? (int) $data['system_prompt_id'] : null,
selectedCritics: $critics,
qualityCheck: !empty($data['quality_check']),
);
}
/**
* Validate the command data.
*
* @return array<string> List of validation errors (empty if valid)
*/
public function validate(): array
{
$errors = [];
if ($this->title === '') {
$errors[] = 'Titel ist erforderlich.';
}
if ($this->briefing === '') {
$errors[] = 'Briefing ist erforderlich.';
}
if ($this->contextLimit < 1 || $this->contextLimit > 20) {
$errors[] = 'Context-Limit muss zwischen 1 und 20 liegen.';
}
if (empty($this->collections)) {
$errors[] = 'Mindestens eine Collection ist erforderlich.';
}
return $errors;
}
public function isValid(): bool
{
return $this->validate() === [];
}
public function shouldGenerate(): bool
{
return $this->action === 'generate';
}
}