Files
supply-intelligence/internal/admission/types.go
2026-05-07 10:16:46 +08:00

63 lines
2.2 KiB
Go

package admission
import "time"
// ProbeClassification mirrors domain.ProbeClassification for internal use
type ProbeClassification string
const (
ProbeClassificationSuccess ProbeClassification = "success"
ProbeClassificationExplicitFailure ProbeClassification = "explicit_failure"
ProbeClassificationInconclusive ProbeClassification = "inconclusive"
)
// CandidateStatus mirrors domain.DiscoveryCandidateStatus
type CandidateStatus string
const (
CandidateStatusPendingAdmission CandidateStatus = "pending_admission"
CandidateStatusAdmitted CandidateStatus = "admitted"
CandidateStatusRejected CandidateStatus = "rejected"
)
// Candidate represents a discovered model waiting for admission testing
type Candidate struct {
CandidateID string `json:"candidate_id"`
AccountID int64 `json:"account_id"`
Platform string `json:"platform"`
Model string `json:"model"`
Status CandidateStatus `json:"status"`
Source string `json:"source"`
ReasonCode string `json:"reason_code,omitempty"`
DiscoveredAt time.Time `json:"discovered_at"`
UpdatedAt time.Time `json:"updated_at"`
Version int64 `json:"version"`
}
// TestResult records the outcome of an admission test run
type TestResult struct {
CandidateID string `json:"candidate_id"`
Status CandidateStatus `json:"status"` // admitted or rejected
TestedAt time.Time `json:"tested_at"`
FailureCode string `json:"failure_code,omitempty"`
FailureSummary string `json:"failure_summary,omitempty"`
Passed bool `json:"passed"`
}
// TestCase defines a single test case within an admission test run
type TestCase struct {
ID string `json:"id"`
Name string `json:"name"`
Endpoint string `json:"endpoint"`
Method string `json:"method"`
Headers map[string]string `json:"headers,omitempty"`
Body string `json:"body,omitempty"`
TimeoutSecs int `json:"timeout_secs"`
}
// TestSuite defines a collection of test cases for a model type
type TestSuite struct {
Platform string `json:"platform"`
Cases []TestCase `json:"cases"`
}