Files
fotospiel-app/app/Services/AiEditing/AiProviderResult.php
Codex Agent 36bed12ff9
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
tests / ui (push) Has been cancelled
feat: implement AI styling foundation and billing scope rework
2026-02-06 20:01:58 +01:00

119 lines
3.6 KiB
PHP

<?php
namespace App\Services\AiEditing;
class AiProviderResult
{
/**
* @param array<int, array<string, mixed>> $outputs
* @param array<string, mixed> $requestPayload
* @param array<string, mixed> $responsePayload
*/
public function __construct(
public readonly string $status,
public readonly ?string $providerTaskId = null,
public readonly ?string $failureCode = null,
public readonly ?string $failureMessage = null,
public readonly ?string $safetyState = null,
public readonly array $safetyReasons = [],
public readonly ?float $costUsd = null,
public readonly array $outputs = [],
public readonly array $requestPayload = [],
public readonly array $responsePayload = [],
public readonly ?int $httpStatus = null,
) {}
/**
* @param array<int, array<string, mixed>> $outputs
* @param array<string, mixed> $requestPayload
* @param array<string, mixed> $responsePayload
*/
public static function succeeded(
array $outputs = [],
?float $costUsd = null,
?string $safetyState = null,
array $safetyReasons = [],
array $requestPayload = [],
array $responsePayload = [],
?int $httpStatus = null,
): self {
return new self(
status: 'succeeded',
outputs: $outputs,
costUsd: $costUsd,
safetyState: $safetyState,
safetyReasons: $safetyReasons,
requestPayload: $requestPayload,
responsePayload: $responsePayload,
httpStatus: $httpStatus,
);
}
/**
* @param array<string, mixed> $requestPayload
* @param array<string, mixed> $responsePayload
*/
public static function processing(
string $providerTaskId,
?float $costUsd = null,
array $requestPayload = [],
array $responsePayload = [],
?int $httpStatus = null,
): self {
return new self(
status: 'processing',
providerTaskId: $providerTaskId,
costUsd: $costUsd,
requestPayload: $requestPayload,
responsePayload: $responsePayload,
httpStatus: $httpStatus,
);
}
/**
* @param array<string, mixed> $requestPayload
* @param array<string, mixed> $responsePayload
*/
public static function failed(
string $failureCode,
string $failureMessage,
array $requestPayload = [],
array $responsePayload = [],
?int $httpStatus = null,
): self {
return new self(
status: 'failed',
failureCode: $failureCode,
failureMessage: $failureMessage,
requestPayload: $requestPayload,
responsePayload: $responsePayload,
httpStatus: $httpStatus,
);
}
/**
* @param array<string, mixed> $requestPayload
* @param array<string, mixed> $responsePayload
*/
public static function blocked(
string $failureCode,
string $failureMessage,
?string $safetyState = null,
array $safetyReasons = [],
array $requestPayload = [],
array $responsePayload = [],
?int $httpStatus = null,
): self {
return new self(
status: 'blocked',
failureCode: $failureCode,
failureMessage: $failureMessage,
safetyState: $safetyState,
safetyReasons: $safetyReasons,
requestPayload: $requestPayload,
responsePayload: $responsePayload,
httpStatus: $httpStatus,
);
}
}