133 lines
4.5 KiB
Go
133 lines
4.5 KiB
Go
package domain
|
|
|
|
import "time"
|
|
|
|
type AccountStatus string
|
|
|
|
const (
|
|
AccountStatusActive AccountStatus = "active"
|
|
AccountStatusSuspended AccountStatus = "suspended"
|
|
AccountStatusDisabled AccountStatus = "disabled"
|
|
AccountStatusPendingVerify AccountStatus = "pending_verify"
|
|
AccountStatusPendingEnable AccountStatus = "pending_enable"
|
|
)
|
|
|
|
type ProbeClassification string
|
|
|
|
const (
|
|
ProbeClassificationSuccess ProbeClassification = "success"
|
|
ProbeClassificationExplicitFailure ProbeClassification = "explicit_failure"
|
|
ProbeClassificationInconclusive ProbeClassification = "inconclusive"
|
|
)
|
|
|
|
type DiscoveryCandidateStatus string
|
|
|
|
const (
|
|
DiscoveryCandidateStatusPendingAdmission DiscoveryCandidateStatus = "pending_admission"
|
|
DiscoveryCandidateStatusAdmitted DiscoveryCandidateStatus = "admitted"
|
|
DiscoveryCandidateStatusRejected DiscoveryCandidateStatus = "rejected"
|
|
)
|
|
|
|
type GatewaySyncStatus string
|
|
|
|
const (
|
|
GatewaySyncStatusPending GatewaySyncStatus = "pending"
|
|
GatewaySyncStatusApplied GatewaySyncStatus = "applied"
|
|
GatewaySyncStatusFailed GatewaySyncStatus = "failed"
|
|
)
|
|
|
|
type GatewayAckResult string
|
|
|
|
const (
|
|
GatewayAckResultApplied GatewayAckResult = "applied"
|
|
GatewayAckResultFailed GatewayAckResult = "failed"
|
|
)
|
|
|
|
func (r GatewayAckResult) SyncStatus() GatewaySyncStatus {
|
|
switch r {
|
|
case GatewayAckResultApplied:
|
|
return GatewaySyncStatusApplied
|
|
case GatewayAckResultFailed:
|
|
return GatewaySyncStatusFailed
|
|
default:
|
|
return GatewaySyncStatusPending
|
|
}
|
|
}
|
|
|
|
type ProbeResult struct {
|
|
AccountID int64
|
|
Classification ProbeClassification
|
|
ReasonCode string
|
|
ObservedAt time.Time
|
|
}
|
|
|
|
type AccountRoutingState struct {
|
|
AccountID int64 `json:"account_id"`
|
|
Platform string `json:"platform"`
|
|
AccountStatus AccountStatus `json:"account_status"`
|
|
RoutingEnabled bool `json:"routing_enabled"`
|
|
RiskScore int `json:"risk_score"`
|
|
ReasonCode string `json:"reason_code"`
|
|
LastProbeAt time.Time `json:"last_probe_at"`
|
|
Version int64 `json:"version"`
|
|
}
|
|
|
|
type PackageChangeEvent struct {
|
|
EventID string `json:"event_id"`
|
|
EventType string `json:"event_type"`
|
|
PackageID int64 `json:"package_id"`
|
|
Platform string `json:"platform"`
|
|
Model string `json:"model"`
|
|
OccurredAt time.Time `json:"occurred_at"`
|
|
Version int64 `json:"version"`
|
|
GatewaySyncStatus GatewaySyncStatus `json:"gateway_sync_status"`
|
|
Consumer string `json:"consumer,omitempty"`
|
|
ConsumerDetail string `json:"consumer_detail,omitempty"`
|
|
AckedAt *time.Time `json:"acked_at,omitempty"`
|
|
}
|
|
|
|
type PackageChangeAck struct {
|
|
EventID string `json:"event_id"`
|
|
Consumer string `json:"consumer"`
|
|
Result GatewayAckResult `json:"result"`
|
|
Detail string `json:"detail,omitempty"`
|
|
AckedAt time.Time `json:"acked_at"`
|
|
SyncState GatewaySyncStatus `json:"gateway_sync_status"`
|
|
}
|
|
|
|
type GatewayAppliedSnapshot struct {
|
|
Consumer string `json:"consumer"`
|
|
LastEventID string `json:"last_event_id"`
|
|
LastPackageID int64 `json:"last_package_id"`
|
|
LastPlatform string `json:"last_platform"`
|
|
LastModel string `json:"last_model"`
|
|
LastAppliedVersion int64 `json:"last_applied_version"`
|
|
LastResult string `json:"last_result"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type DiscoveryCandidate struct {
|
|
CandidateID string `json:"candidate_id"`
|
|
AccountID int64 `json:"account_id"`
|
|
Platform string `json:"platform"`
|
|
Model string `json:"model"`
|
|
Source string `json:"source"`
|
|
Status DiscoveryCandidateStatus `json:"status"`
|
|
ReasonCode string `json:"reason_code,omitempty"`
|
|
DiscoveredAt time.Time `json:"discovered_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
Version int64 `json:"version"`
|
|
}
|
|
|
|
// SupplyPackage represents a supply package in the system
|
|
type SupplyPackage struct {
|
|
PackageID int64 `json:"package_id"`
|
|
Platform string `json:"platform"`
|
|
Model string `json:"model"`
|
|
Status string `json:"status"` // draft, active, deprecated
|
|
Source string `json:"source"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
Version int64 `json:"version"`
|
|
}
|