feat: improve schedule cleanup and handover

This commit is contained in:
Winnie
2026-08-20 19:12:44 +08:00
parent ae3b6d63e2
commit bc62034241
7 changed files with 306 additions and 63 deletions
+73 -1
View File
@@ -6,6 +6,78 @@
---
## 0. 当前交接状态(2026-08-20
### 0.1 代码与服务
- 基线代码:`ae3b6d6``develop`)。本次改动尚未提交,修改范围见下方「0.4」。
- Docker Compose 项目名:`model-platform-develop14`
- 主入口:<http://127.0.0.1:9120>;浏览器通过 web/Nginx 访问后端 API。
- 当前启用的 `.env` 已配置 MySQL 连接和存储后端。**不要把 `.env` 中的连接串、密码或
Token 提交到 Git。**
检查服务:
```powershell
docker compose -p model-platform-develop14 ps
Invoke-WebRequest http://127.0.0.1:9120/api/v1/health
```
完整重建并启动:
```powershell
docker compose -p model-platform-develop14 up -d --build
```
仅后端 Python 代码变动时,使用下面命令即可;它不会删除数据库或 `data/`
```powershell
docker compose -p model-platform-develop14 build backend
docker compose -p model-platform-develop14 up -d --force-recreate --no-deps backend
```
### 0.2 调度模块本次行为
调度页面位于 `frontend/app/features/schedules/`,对应 API 位于
`backend/src/backend/schedules.py`
- 删除调度方案:删除该方案的节点、连线、运行记录,以及可删除的运行日志/结果产物;若方案
仍有运行中的任务,后端返回 409,避免删到一半。
- 删除节点:运行中的节点不可删除;有历史运行记录时,前端会提示“该节点有运行日志,是否一并删除?”。
用户确认后会删除节点、关联连线、该节点的 `schedule_node_runs` 记录和可删除日志/结果。
- `StorageObjects.is_immutable=1` 的审计原件受存储层保护,不能物理删除;删除节点时会删除其
运行记录引用,使其不再在调度页面展示,但保留原件,避免再次出现
`immutable object cannot be deleted` 并导致节点删除回滚。
- 运行记录列表已加入轮询:有运行中任务时约 1.5 秒刷新一次,空闲时约 5 秒刷新一次;右侧刷新
按钮仍可手动刷新。
### 0.3 关键排查位置
| 现象 | 首先查看 |
|---|---|
| 页面请求报错 | 浏览器 F12 → Network → Fetch/XHR,查看请求 URL、状态码和响应内容 |
| API / 数据库异常 | `docker compose -p model-platform-develop14 logs --tail=200 backend` |
| Cron 未触发 | `docker compose -p model-platform-develop14 logs --tail=200 schedule` |
| 脚本执行失败 | 调度页面“运行记录”→“查看结果”→ 节点日志 |
| 容器状态或端口问题 | `docker compose -p model-platform-develop14 ps` |
### 0.4 未提交改动清单
当前工作区包含以下代码改动,提交前应按需执行 typecheck / 后端测试:
| 文件 | 作用 |
|---|---|
| `backend/src/backend/schedule_schemas.py` | 节点删除请求支持历史记录确认参数 |
| `backend/src/backend/schedules.py` | 调度/节点删除、运行中保护、日志清理与不可变产物兼容 |
| `frontend/app/services/api.ts` | 节点删除 API 参数 |
| `frontend/app/context/AuthContext.tsx` | API 参数透传 |
| `frontend/app/features/schedules/state/schedulesStore.ts` | 删除确认及删除后刷新状态 |
| `frontend/app/features/schedules/SchedulePage.tsx` | 运行记录轮询 |
`data/` 是本地运行数据,不应作为本次代码改动一起提交。
---
## 1. 最近 8 个 commit(按时间倒序)
### `85b2916` — fix: local_storage_base_dirbucket 标识符语义统一:最终 fix)
@@ -423,4 +495,4 @@ M frontend/vite.config.ts (4+/2-)
```
`frontend/vite.config.ts` 的改动不在本次 trash / bucket 修复范围内,等下次 commit 一起提。
`data/` 是 `STORAGE_BACKEND=local` 的对象存储本地根,git ignore 不应跟踪。
`data/` 是 `STORAGE_BACKEND=local` 的对象存储本地根,git ignore 不应跟踪。