Add run lifecycle report projection

This commit is contained in:
npc0-hue
2026-08-06 20:35:13 +08:00
parent 4e78957a60
commit 68921b3f68
13 changed files with 270 additions and 8 deletions
+39
View File
@@ -57,6 +57,26 @@ type RunControlHeartbeatResponse struct {
ServerTime time.Time `json:"serverTime"`
}
type RunLifecycleReportRequest struct {
RunEndpointID string `json:"runEndpointId"`
SessionToken string `json:"sessionToken"`
ServerInstanceID string `json:"serverInstanceId"`
Capability string `json:"capability"`
State domain.JobState `json:"state"`
Progress JobProgressBody `json:"progress"`
Message string `json:"message,omitempty"`
ErrorCode string `json:"errorCode,omitempty"`
ExecutionResult RunJobExecutionResultBody `json:"executionResult,omitempty"`
}
type RunLifecycleReportResponse struct {
Accepted bool `json:"accepted"`
RunEndpointID string `json:"runEndpointId"`
ServerInstanceID string `json:"serverInstanceId"`
ProjectedState domain.ServerInstanceState `json:"projectedState,omitempty"`
ServerTime time.Time `json:"serverTime"`
}
func (request RunControlHelloRequest) ToDomain() domain.RunControlHello {
return domain.RunControlHello{
RegistrationToken: request.RegistrationToken,
@@ -92,6 +112,20 @@ func (request RunControlHeartbeatRequest) ToDomain() domain.RunControlHeartbeat
}
}
func (request RunLifecycleReportRequest) ToDomain() domain.RunLifecycleReport {
return domain.RunLifecycleReport{
RunEndpointID: request.RunEndpointID,
SessionToken: request.SessionToken,
ServerInstanceID: request.ServerInstanceID,
Capability: request.Capability,
State: request.State,
Progress: progressReportToDomain(request.Progress),
Message: request.Message,
ErrorCode: request.ErrorCode,
ExecutionResult: domain.JobExecutionResult{Kind: request.ExecutionResult.Kind, ProcessState: request.ExecutionResult.ProcessState, ExitClassification: request.ExecutionResult.ExitClassification, ExitCode: request.ExecutionResult.ExitCode, Version: request.ExecutionResult.Version, Checksum: request.ExecutionResult.Checksum, SizeBytes: request.ExecutionResult.SizeBytes, AuditSummary: request.ExecutionResult.AuditSummary, Content: request.ExecutionResult.Content, ServerDeploymentEvidence: serverDeploymentEvidenceToDomain(request.ExecutionResult.ServerDeploymentEvidence), DeploymentReceipt: deploymentReceiptToDomain(request.ExecutionResult.DeploymentReceipt)},
}
}
func RunControlHelloFromDomain(result domain.RunControlHelloResult) RunControlHelloResponse {
result = domain.CopyRunControlHelloResult(result)
return RunControlHelloResponse{
@@ -114,3 +148,8 @@ func RunControlHeartbeatFromDomain(result domain.RunControlHeartbeatResult) RunC
ServerTime: result.ServerTime,
}
}
func RunLifecycleReportFromDomain(result domain.RunLifecycleReportResult) RunLifecycleReportResponse {
result = domain.CopyRunLifecycleReportResult(result)
return RunLifecycleReportResponse{Accepted: result.Accepted, RunEndpointID: result.RunEndpointID, ServerInstanceID: result.ServerInstanceID, ProjectedState: result.ProjectedState, ServerTime: result.ServerTime}
}