*/ class BaselineSnapshotFactory extends Factory { protected $model = BaselineSnapshot::class; /** * @return array */ public function definition(): array { return [ 'workspace_id' => Workspace::factory(), 'baseline_profile_id' => BaselineProfile::factory(), 'snapshot_identity_hash' => hash('sha256', fake()->uuid()), 'captured_at' => now(), 'lifecycle_state' => BaselineSnapshotLifecycleState::Complete->value, 'completed_at' => now(), 'failed_at' => null, 'summary_jsonb' => ['total_items' => 0], 'completion_meta_jsonb' => [ 'expected_items' => 0, 'persisted_items' => 0, 'producer_run_id' => null, 'was_empty_capture' => true, ], ]; } public function building(): static { return $this->state(fn (): array => [ 'lifecycle_state' => BaselineSnapshotLifecycleState::Building->value, 'completed_at' => null, 'failed_at' => null, ]); } public function complete(): static { return $this->state(fn (): array => [ 'lifecycle_state' => BaselineSnapshotLifecycleState::Complete->value, 'completed_at' => now(), 'failed_at' => null, ]); } public function incomplete(?string $reasonCode = null): static { return $this->state(fn (): array => [ 'lifecycle_state' => BaselineSnapshotLifecycleState::Incomplete->value, 'completed_at' => null, 'failed_at' => now(), 'completion_meta_jsonb' => [ 'expected_items' => 0, 'persisted_items' => 0, 'producer_run_id' => null, 'was_empty_capture' => true, 'finalization_reason_code' => $reasonCode, ], ]); } }