fn classify_runner_error(e: &Error, image: &str) -> (ExecStatus, String)Expand description
把容器执行错误分类为前端可读的状态与脱敏消息。
issue #20 的核心诉求:让「镜像未构建」「daemon 不可达」从笼统的「系统暂时不可用」 中区分出来,给出可操作的修复指引。
判定策略:
- 超时:
docker.rs用Error::IOError { kind: TimedOut }上报(docker.rs:223-227、:305-309)。io::Error的 Display 只渲染自定义消息(如 “Execution timed out”),不含 kind 名——故靠字符串contains("TimedOut")永远命中不了真实超时路径。 这里按变体 + kind 判定,是最可靠的信号。 - 镜像缺失:Docker Engine API 稳定文本 “No such image”,走 Display 字符串匹配。
- daemon 不可达:来自
get_docker()构造的 io::Error 消息(docker.rs:54),走字符串匹配。 - 其余:兜底「系统暂时不可用」。