请求
POST /sql/diagnose/stream
Content-Type: application/json
Accept: text/event-stream
{
"requestId": "exec-7f3d",
"status": "EXEC_ERROR",
"sql": "SELECT nam FROM user",
"executedSql": "SELECT nam FROM user LIMIT 10",
"rewrite": {
"applied": true,
"rules": ["default_select_limit"],
"detail": "未指定 LIMIT,按实验室策略追加 LIMIT 10"
},
"dialect": "mysql",
"connectionId": "lab-conn-001",
"diagnosable": true,
"error": {
"code": "42S22",
"message": "Unknown column 'nam' in 'field list'"
}
}
SSE 事件
| event | 用途 | 前端怎么用 |
meta | 流开始 | 记录 requestId |
phase | 阶段:classify / tool / generate / validate | 进度条 |
tool | Builtin 调用 start/end | 工具日志 |
message | 可选文本增量 | 过程说明 |
result | 完整诊断 JSON | 唯一结构化面板数据源 |
error | 失败 | 错误态(无残缺 result) |
done | 流结束 | 关连接 / 结束 loading |
成功流(节选)
event: meta
data: {"requestId":"diag-9c01","status":"PARSE_ERROR"}
event: phase
data: {"phase":"generate"}
event: tool
data: {"name":"validate_sql_syntax","state":"end","ok":true}
event: result
data: {"errorCategory":"SYNTAX","problemSummary":"SELECT 关键字拼写错误…","rootCause":"…","suggestions":["将 SELEC 改为 SELECT"],"fixedSql":"SELECT id FROM users","confidence":0.92,"assumptions":[],"usedCapabilities":["builtin:validate_sql_syntax"]}
event: done
data: {"ok":true}
result 固定字段
{
"errorCategory": "SYNTAX",
"problemSummary": "…",
"rootCause": "…",
"suggestions": ["…"],
"fixedSql": "SELECT id FROM users",
"confidence": 0.92,
"assumptions": [],
"usedCapabilities": ["builtin:validate_sql_syntax"]
}
原则:过程可流式;终态 JSON 必须完整。fixedSql 为提交态,再执行仍会改写。不要把自动 LIMIT 当作用户错误。