iflytek/astron-agent · error · BusinessException

PROMPT_GROUP_SAVE_FAILED

PROMPT_GROUP_SAVE_FAILED

Error message

PROMPT_GROUP_SAVE_FAILED

What it means

Generic failure wrapper for WorkflowService.addComparisons: any non-BusinessException thrown while calling coreSystemService.addComparisons (the core system that persists the comparison-group protocol) is converted to PROMPT_GROUP_SAVE_FAILED. BusinessException from the core path is rethrown unchanged; everything else is masked behind this stable business code.

Solutions

  1. Read the server log line 'Failed to add comparison group protocol' for the wrapped root-cause exception.
  2. Verify the core service is up and reachable (health check, configured endpoint).
  3. Retry the addComparisons call after fixing the root cause; if persistent, fix the core-side error indicated in the log.

Example fix

// before
coreSystemService.addComparisons(protocol, flowId, version);
// after
try {
    coreSystemService.addComparisons(protocol, flowId, version);
} catch (BusinessException e) {
    throw e;
} catch (Exception e) {
    log.error("addComparisons failed flowId={} version={}", flowId, version, e);
    throw new BusinessException(ResponseEnum.PROMPT_GROUP_SAVE_FAILED);
}
Defensive patterns

Strategy: try-catch

Validate before calling

boolean coreHealthy = coreHealthEndpoint.ping(); // check core service reachability first
if (!coreHealthy) throw new IllegalStateException("core service unavailable");

Try / catch

try {
    workflowService.addComparisons(req);
} catch (BusinessException e) {
    if ("PROMPT_GROUP_SAVE_FAILED".equals(e.getCode())) {
        // retry with backoff; inspect server logs for root cause
    } else { throw e; }
}

Prevention

When it happens

Trigger: The remote call coreSystemService.addComparisons throws — core service unreachable, core returned an error, network timeout, or a serialization/DB error inside the core system while saving the comparison protocol for the given flowId/version.

Common situations: Core workflow service is down or being redeployed; wrong core-system base URL configured for this environment; core rejects the protocol payload; transient network failure between console backend and core.

Related errors


AI-assisted analysis of iflytek/astron-agent@5e758547a8 (2026-09-12). Data as JSON: /api/errors/0567c50d760cc424. Report an issue: GitHub.

Appendix: source

Thrown at console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/service/workflow/WorkflowService.java:5132

    }

    public Object addComparisons(WorkflowComparisonReq workflowComparisonReq) {
        try {
            // A comparison row is later addressed only by workflow group + caller-supplied version.
            // Authorize the top-level workflow before creating that executable snapshot.
            loadWorkflowForDebugExecution(workflowComparisonReq.getFlowId());
            // Workflow protocol conversion
            WorkflowReq workflowReq = new WorkflowReq();
            workflowReq.setData(workflowComparisonReq.getData());
            workflowReq.setName(workflowComparisonReq.getName());
            FlowProtocol protocol = buildWorkflowData(workflowReq, workflowComparisonReq.getFlowId());
            // Call core system to add comparison group protocol
            coreSystemService.addComparisons(protocol, workflowComparisonReq.getFlowId(), workflowComparisonReq.getVersion());
        } catch (BusinessException ex) {
            throw ex;
        } catch (Exception ex) {
            log.error("Failed to add comparison group protocol, flowId={}, version={}, error={}", workflowComparisonReq.getFlowId(), workflowComparisonReq.getVersion(), ex.getMessage(), ex);
            throw new BusinessException(ResponseEnum.PROMPT_GROUP_SAVE_FAILED);
        }
        return ApiResult.success();
    }

    public Object deleteComparisons(WorkflowComparisonReq workflowComparisonReq) {
        try {
            requireOwnedWorkflow(workflowComparisonReq.getFlowId());
            // Call core system to delete comparison group protocol
            coreSystemService.deleteComparisons(workflowComparisonReq.getFlowId(), workflowComparisonReq.getVersion());
        } catch (BusinessException ex) {
            throw ex;
        } catch (Exception ex) {
            log.error("Failed to delete comparison group protocol, flowId={}, version={}, error={}", workflowComparisonReq.getFlowId(), workflowComparisonReq.getVersion(), ex.getMessage(), ex);
            throw new BusinessException(ResponseEnum.RESPONSE_FAILED, "Failed to delete comparison group protocol: " + ex.getMessage());
        }
        return ApiResult.success();
    }

View on GitHub (pinned to 5e758547a8)