Remove AI config approval flow

This commit is contained in:
npc0-hue
2026-09-22 15:33:32 +08:00
parent 20008b4043
commit a8b5d483a3
54 changed files with 364 additions and 875 deletions
+15 -7
View File
@@ -22,9 +22,10 @@ type LlmConfigSuggestionRequest struct {
}
type LlmConfigSuggestionResponse struct {
ServerInstanceID string `json:"serverInstanceId"`
Recommendation string `json:"recommendation"`
SuggestedConfig string `json:"suggestedConfig,omitempty"`
ServerInstanceID string `json:"serverInstanceId"`
Recommendation string `json:"recommendation"`
SuggestedConfig string `json:"suggestedConfig,omitempty"`
ConfigExecution *AIConfigExecutionResponse `json:"configExecution,omitempty"`
}
type AIInvocationUsageResponse struct {
@@ -39,8 +40,11 @@ type AIConfigRecommendationResponse struct {
Key string `json:"key"`
SuggestedConfig string `json:"suggestedConfig,omitempty"`
DiffSummary string `json:"diffSummary"`
DiffID string `json:"diffId,omitempty"`
ExpiresAt string `json:"expiresAt,omitempty"`
}
type AIConfigExecutionResponse struct {
Status string `json:"status"`
Job JobResponse `json:"job"`
}
type AIInvocationSafeErrorResponse struct {
@@ -57,6 +61,7 @@ type AIInvocationResponse struct {
Status string `json:"status"`
Recommendation string `json:"recommendation,omitempty"`
ConfigRecommendation *AIConfigRecommendationResponse `json:"configRecommendation,omitempty"`
ConfigExecution *AIConfigExecutionResponse `json:"configExecution,omitempty"`
Usage AIInvocationUsageResponse `json:"usage"`
Error *AIInvocationSafeErrorResponse `json:"error,omitempty"`
}
@@ -84,10 +89,12 @@ func AIInvocationFromDomain(response domain.AIInvocationResponse) AIInvocationRe
Key: response.ConfigRecommendation.Key,
SuggestedConfig: response.ConfigRecommendation.SuggestedConfig,
DiffSummary: response.ConfigRecommendation.DiffSummary,
DiffID: response.ConfigRecommendation.DiffID,
ExpiresAt: response.ConfigRecommendation.ExpiresAt,
}
}
var execution *AIConfigExecutionResponse
if response.ConfigExecution != nil {
execution = &AIConfigExecutionResponse{Status: response.ConfigExecution.Status, Job: JobFromDomain(response.ConfigExecution.Job)}
}
var safeError *AIInvocationSafeErrorResponse
if response.Error != nil {
safeError = &AIInvocationSafeErrorResponse{Code: response.Error.Code, Message: response.Error.Message, Details: response.Error.Details}
@@ -100,6 +107,7 @@ func AIInvocationFromDomain(response domain.AIInvocationResponse) AIInvocationRe
Status: response.Status,
Recommendation: response.Recommendation,
ConfigRecommendation: config,
ConfigExecution: execution,
Usage: AIInvocationUsageResponse{
ProviderID: response.Usage.ProviderID,
Model: response.Usage.Model,
-60
View File
@@ -42,44 +42,6 @@ type PluginLifecycleActionResponse struct {
Job JobResponse `json:"job"`
}
type AIConfigDiffPreviewResponse struct {
ID string `json:"id"`
RequestID string `json:"requestId"`
CreatedBy string `json:"createdBy"`
ServerInstanceID string `json:"serverInstanceId"`
PluginID string `json:"pluginId,omitempty"`
ProviderID string `json:"providerId,omitempty"`
Model string `json:"model,omitempty"`
Key string `json:"key"`
ConfigVersion int `json:"configVersion"`
CurrentConfigChecksum string `json:"currentConfigChecksum,omitempty"`
ProposedConfig string `json:"proposedConfig,omitempty"`
DiffSummary string `json:"diffSummary"`
State string `json:"state"`
ExpiresAt time.Time `json:"expiresAt"`
ApprovedBy string `json:"approvedBy,omitempty"`
ApprovedAt time.Time `json:"approvedAt,omitempty"`
CancelledBy string `json:"cancelledBy,omitempty"`
CancelledAt time.Time `json:"cancelledAt,omitempty"`
JobID string `json:"jobId,omitempty"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
type AIConfigDiffListResponse struct {
Items []AIConfigDiffPreviewResponse `json:"items"`
Count int `json:"count"`
}
type AIConfigDiffApprovalRequest struct {
IdempotencyKey string `json:"idempotencyKey"`
}
type AIConfigDiffApprovalResponse struct {
Preview AIConfigDiffPreviewResponse `json:"preview"`
Dispatch ServerConfigWriteDispatchResponse `json:"dispatch"`
}
func (request PluginLifecycleActionRequest) ToDomain(pluginID string) domain.PluginLifecycleRequest {
return domain.PluginLifecycleRequest{PluginID: pluginID, ServerInstanceID: request.ServerInstanceID, Operation: domain.PluginLifecycleOperation(request.Operation), TargetVersion: request.TargetVersion, IdempotencyKey: request.IdempotencyKey}
}
@@ -101,25 +63,3 @@ func PluginLifecycleResultFromDomain(result domain.PluginLifecycleResult) Plugin
result = domain.CopyPluginLifecycleResult(result)
return PluginLifecycleActionResponse{Status: result.Status, Installation: PluginLifecycleFromDomain(result.Installation), Job: JobFromDomain(result.Job)}
}
func AIConfigDiffFromDomain(preview domain.AIConfigDiffPreview) AIConfigDiffPreviewResponse {
preview = domain.CopyAIConfigDiffPreview(preview)
return AIConfigDiffPreviewResponse{ID: preview.ID, RequestID: preview.RequestID, CreatedBy: preview.CreatedBy, ServerInstanceID: preview.ServerInstanceID, PluginID: preview.PluginID, ProviderID: preview.ProviderID, Model: preview.Model, Key: preview.Key, ConfigVersion: preview.ConfigVersion, CurrentConfigChecksum: preview.CurrentConfigChecksum, ProposedConfig: preview.ProposedConfig, DiffSummary: preview.DiffSummary, State: string(preview.State), ExpiresAt: preview.ExpiresAt, ApprovedBy: preview.ApprovedBy, ApprovedAt: preview.ApprovedAt, CancelledBy: preview.CancelledBy, CancelledAt: preview.CancelledAt, JobID: preview.JobID, CreatedAt: preview.CreatedAt, UpdatedAt: preview.UpdatedAt}
}
func AIConfigDiffListFromDomain(previews []domain.AIConfigDiffPreview) AIConfigDiffListResponse {
items := make([]AIConfigDiffPreviewResponse, len(previews))
for i, preview := range previews {
items[i] = AIConfigDiffFromDomain(preview)
}
return AIConfigDiffListResponse{Items: items, Count: len(items)}
}
func (request AIConfigDiffApprovalRequest) ToDomain(diffID string) domain.AIConfigDiffApprovalRequest {
return domain.AIConfigDiffApprovalRequest{DiffID: diffID, IdempotencyKey: request.IdempotencyKey}
}
func AIConfigDiffApprovalFromDomain(result domain.AIConfigDiffApprovalResult) AIConfigDiffApprovalResponse {
result = domain.CopyAIConfigDiffApprovalResult(result)
return AIConfigDiffApprovalResponse{Preview: AIConfigDiffFromDomain(result.Preview), Dispatch: ServerConfigWriteDispatchFromDomain(result.Dispatch)}
}
+3 -4
View File
@@ -243,9 +243,8 @@ type GamePluginManifestServerBody struct {
}
type GamePluginManifestAIBody struct {
Purposes []string `json:"purposes,omitempty"`
Mediation string `json:"mediation,omitempty"`
ConfigWritePolicy string `json:"configWritePolicy,omitempty"`
Purposes []string `json:"purposes,omitempty"`
Mediation string `json:"mediation,omitempty"`
}
type GamePluginProductionLifecycleBody struct {
@@ -1206,7 +1205,7 @@ func (server GamePluginManifestServerBody) ToDomain() domain.GamePluginManifestS
}
func (ai GamePluginManifestAIBody) ToDomain() domain.GamePluginManifestAI {
return domain.GamePluginManifestAI{Purposes: domain.CopyStringSlice(ai.Purposes), Mediation: ai.Mediation, ConfigWritePolicy: ai.ConfigWritePolicy}
return domain.GamePluginManifestAI{Purposes: domain.CopyStringSlice(ai.Purposes), Mediation: ai.Mediation}
}
func (lifecycle GamePluginProductionLifecycleBody) ToDomain() domain.GamePluginProductionLifecycle {