Fix build and code structure improvements. New but essential UI functionality. CI improvements. Documentation improvements. AI module improvements.
This commit is contained in:
84
src/__Libraries/StellaOps.Verdict/Persistence/VerdictRow.cs
Normal file
84
src/__Libraries/StellaOps.Verdict/Persistence/VerdictRow.cs
Normal file
@@ -0,0 +1,84 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace StellaOps.Verdict.Persistence;
|
||||
|
||||
/// <summary>
|
||||
/// Database entity for verdict storage.
|
||||
/// </summary>
|
||||
[Table("verdicts", Schema = "stellaops")]
|
||||
public sealed class VerdictRow
|
||||
{
|
||||
[Column("verdict_id")]
|
||||
public required string VerdictId { get; set; }
|
||||
|
||||
[Column("tenant_id")]
|
||||
public Guid TenantId { get; set; }
|
||||
|
||||
// Subject fields
|
||||
[Column("subject_purl")]
|
||||
public required string SubjectPurl { get; set; }
|
||||
|
||||
[Column("subject_cve_id")]
|
||||
public required string SubjectCveId { get; set; }
|
||||
|
||||
[Column("subject_component_name")]
|
||||
public string? SubjectComponentName { get; set; }
|
||||
|
||||
[Column("subject_component_version")]
|
||||
public string? SubjectComponentVersion { get; set; }
|
||||
|
||||
[Column("subject_image_digest")]
|
||||
public string? SubjectImageDigest { get; set; }
|
||||
|
||||
[Column("subject_digest")]
|
||||
public string? SubjectDigest { get; set; }
|
||||
|
||||
// Claim fields
|
||||
[Column("claim_status")]
|
||||
public required string ClaimStatus { get; set; }
|
||||
|
||||
[Column("claim_confidence")]
|
||||
public decimal? ClaimConfidence { get; set; }
|
||||
|
||||
[Column("claim_vex_status")]
|
||||
public string? ClaimVexStatus { get; set; }
|
||||
|
||||
// Result fields
|
||||
[Column("result_disposition")]
|
||||
public required string ResultDisposition { get; set; }
|
||||
|
||||
[Column("result_score")]
|
||||
public decimal? ResultScore { get; set; }
|
||||
|
||||
[Column("result_matched_rule")]
|
||||
public string? ResultMatchedRule { get; set; }
|
||||
|
||||
[Column("result_quiet")]
|
||||
public bool ResultQuiet { get; set; }
|
||||
|
||||
// Provenance fields
|
||||
[Column("provenance_generator")]
|
||||
public required string ProvenanceGenerator { get; set; }
|
||||
|
||||
[Column("provenance_run_id")]
|
||||
public string? ProvenanceRunId { get; set; }
|
||||
|
||||
[Column("provenance_policy_bundle_id")]
|
||||
public string? ProvenancePolicyBundleId { get; set; }
|
||||
|
||||
// Inputs hash
|
||||
[Column("inputs_hash")]
|
||||
public required string InputsHash { get; set; }
|
||||
|
||||
// Full JSON
|
||||
[Column("verdict_json", TypeName = "jsonb")]
|
||||
public required string VerdictJson { get; set; }
|
||||
|
||||
// Timestamps
|
||||
[Column("created_at")]
|
||||
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
|
||||
|
||||
[Column("expires_at")]
|
||||
public DateTimeOffset? ExpiresAt { get; set; }
|
||||
}
|
||||
Reference in New Issue
Block a user