41 lines
1.7 KiB
Markdown
41 lines
1.7 KiB
Markdown
# 2026-06-09 — 服务层 ValueError 中文化(str(exc) 透传源头)
|
||
|
||
## 摘要
|
||
|
||
将经 API `detail=str(exc)` 透传、且原先为英文的 `ValueError` 文案改为中文,避免 sync/scripts/批量/调度等接口在未走全局 `http_errors_zh` 映射时仍显示英文。
|
||
|
||
## 动机
|
||
|
||
待办 #1(API detail 英改中)方案 1:优先改下层异常源头,比统一包装 `raise_api_error` 改动小、语义稳定。
|
||
|
||
## 涉及文件
|
||
|
||
| 文件 | 变更 |
|
||
|------|------|
|
||
| `server/application/services/script_service.py` | `Execution not found` → 执行记录不存在 |
|
||
| `server/application/services/server_batch_service.py` | `Unknown batch op` → 未知的批量操作 |
|
||
| `server/infrastructure/database/crypto.py` | `Failed to decrypt credential` → 凭据解密失败 |
|
||
| `server/infrastructure/ssh/asyncssh_pool.py` | SSH 凭据缺失提示中文化 |
|
||
| `server/utils/schedule_cycle.py` | 自定义 cron / 字段数 / 周期类型校验中文化 |
|
||
| `server/api/schemas.py` | `batch_id` 校验中文化 |
|
||
| `server/infrastructure/redis/script_execution_store.py` | 执行记录不存在提示中文化 |
|
||
|
||
## 迁移 / 重启
|
||
|
||
- 无需 DB 迁移
|
||
- 需重启 API 进程后生效
|
||
|
||
## 验证
|
||
|
||
```bash
|
||
pytest tests/test_schedule_cycle.py tests/test_http_errors_zh.py -q
|
||
bash scripts/local_verify.sh
|
||
```
|
||
|
||
手动:脚本重试不存在 execution、批量未知 op、调度非法 cycle、推送 batch_id 非法 → 422/400 detail 为中文。
|
||
|
||
## 未覆盖(后续)
|
||
|
||
- `f"SSH 连接失败: {e}"` 等库异常后缀(方案 2:`translate_sync_error_message` 包装)
|
||
- API 层字面量 `detail="Server not found"`(已由 `http_errors_zh` 全局处理,待部署)
|