## Summary - add shared governance artifact truth presentation and badge taxonomy - integrate artifact-truth messaging across baseline, evidence, tenant review, review pack, and operation run surfaces - add focused regression coverage and spec artifacts for artifact truth semantics ## Testing - not run in this step Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #188
62 lines
1.5 KiB
PHP
62 lines
1.5 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Support\Ui\GovernanceArtifactTruth;
|
|
|
|
use App\Support\Badges\BadgeDomain;
|
|
use App\Support\Badges\BadgeSpec;
|
|
|
|
final readonly class ArtifactTruthDimension
|
|
{
|
|
public function __construct(
|
|
public string $axis,
|
|
public string $state,
|
|
public string $label,
|
|
public string $classification,
|
|
public ?BadgeDomain $badgeDomain = null,
|
|
public ?string $badgeState = null,
|
|
) {}
|
|
|
|
public function isPrimary(): bool
|
|
{
|
|
return $this->classification === 'primary';
|
|
}
|
|
|
|
public function isDiagnostic(): bool
|
|
{
|
|
return $this->classification === 'diagnostic';
|
|
}
|
|
|
|
public function badgeSpec(): ?BadgeSpec
|
|
{
|
|
if (! $this->badgeDomain instanceof BadgeDomain || ! is_string($this->badgeState) || trim($this->badgeState) === '') {
|
|
return null;
|
|
}
|
|
|
|
return \App\Support\Badges\BadgeCatalog::spec($this->badgeDomain, $this->badgeState);
|
|
}
|
|
|
|
/**
|
|
* @return array{
|
|
* axis: string,
|
|
* state: string,
|
|
* label: string,
|
|
* classification: string,
|
|
* badgeDomain: ?string,
|
|
* badgeState: ?string
|
|
* }
|
|
*/
|
|
public function toArray(): array
|
|
{
|
|
return [
|
|
'axis' => $this->axis,
|
|
'state' => $this->state,
|
|
'label' => $this->label,
|
|
'classification' => $this->classification,
|
|
'badgeDomain' => $this->badgeDomain?->value,
|
|
'badgeState' => $this->badgeState,
|
|
];
|
|
}
|
|
}
|