feat(ssa): Complete Phase 2A frontend integration - multi-step workflow end-to-end
Phase 2A: WorkflowPlannerService, WorkflowExecutorService, Python data quality, 6 bug fixes, DescriptiveResultView, multi-step R code/Word export, MVP UI reuse. V11 UI: Gemini-style, multi-task, single-page scroll, Word export. Architecture: Block-based rendering consensus (4 block types). New R tools: chi_square, correlation, descriptive, logistic_binary, mann_whitney, t_test_paired. Docs: dev summary, block-based plan, status updates, task list v2.0. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -115,6 +115,57 @@ function() {
|
||||
)
|
||||
}
|
||||
|
||||
#* JIT Guardrails Check
|
||||
#* @post /api/v1/guardrails/jit
|
||||
#* @serializer unboxedJSON
|
||||
function(req) {
|
||||
tryCatch({
|
||||
input <- jsonlite::fromJSON(req$postBody, simplifyVector = FALSE)
|
||||
|
||||
# 必需参数
|
||||
tool_code <- input$tool_code
|
||||
params <- input$params
|
||||
|
||||
if (is.null(tool_code)) {
|
||||
return(list(
|
||||
status = "error",
|
||||
error_code = "E400",
|
||||
message = "Missing tool_code parameter"
|
||||
))
|
||||
}
|
||||
|
||||
# 加载数据
|
||||
df <- tryCatch(
|
||||
load_input_data(input),
|
||||
error = function(e) {
|
||||
return(NULL)
|
||||
}
|
||||
)
|
||||
|
||||
if (is.null(df)) {
|
||||
return(list(
|
||||
status = "error",
|
||||
error_code = "E100",
|
||||
message = "Failed to load data for guardrail checks"
|
||||
))
|
||||
}
|
||||
|
||||
# 执行 JIT 护栏检查
|
||||
result <- run_jit_guardrails(df, tool_code, params)
|
||||
|
||||
return(list(
|
||||
status = "success",
|
||||
checks = result$checks,
|
||||
suggested_tool = result$suggested_tool,
|
||||
can_proceed = result$can_proceed,
|
||||
all_checks_passed = result$all_checks_passed
|
||||
))
|
||||
|
||||
}, error = function(e) {
|
||||
return(map_r_error(e$message))
|
||||
})
|
||||
}
|
||||
|
||||
#* 执行统计工具
|
||||
#* @post /api/v1/skills/<tool_code>
|
||||
#* @param tool_code:str 工具代码(如 ST_T_TEST_IND)
|
||||
|
||||
Reference in New Issue
Block a user