id(); $table->foreignId('tenant_id')->constrained(); $table->string('finding_type'); $table->string('scope_key'); $table->foreignId('baseline_run_id')->nullable()->constrained('inventory_sync_runs'); $table->foreignId('current_run_id')->nullable()->constrained('inventory_sync_runs'); $table->string('fingerprint', 64); $table->string('subject_type'); $table->string('subject_external_id'); $table->string('severity'); $table->string('status'); $table->timestampTz('acknowledged_at')->nullable(); $table->foreignId('acknowledged_by_user_id')->nullable()->constrained('users'); $table->jsonb('evidence_jsonb')->nullable(); $table->timestamps(); $table->unique(['tenant_id', 'fingerprint']); $table->index(['tenant_id', 'status']); $table->index(['tenant_id', 'scope_key']); $table->index(['tenant_id', 'baseline_run_id']); $table->index(['tenant_id', 'current_run_id']); }); } /** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('findings'); } };