9c9a51263c
汇总未提交工作区:Servers 列表 site_url 链接、终端页与选机器 UI、SSH 连通性与 Telegram 通知、agent/offline/unset_path 后台调度与 gate_ai_review 门控;更新 AGENTS 与 agent-exploration 规则(仅本机 commit);同步 web/app 构建产物与相关文档。
87 lines
2.8 KiB
Markdown
87 lines
2.8 KiB
Markdown
# Bug 巡查 — 2026-06-14
|
||
|
||
**日期**:2026-06-14
|
||
**范围**:`825d029` 暂停居中开关 + `4bbc47f` UI 美化 + 监测链路
|
||
**方法**:L2b + pytest + 代码走读 + 生产探针
|
||
|
||
## 进度条
|
||
|
||
| 步骤 | 状态 |
|
||
|------|------|
|
||
| `local_verify.sh` | ✅ 26/26 |
|
||
| `pytest`(非 chain) | ✅ 571 passed |
|
||
| `pytest tests/chain` | ✅ 9/9 |
|
||
| `test_watch_*` | ✅ 23/23 |
|
||
| 生产 `/health` | ✅ `ok` @ `825d029` |
|
||
| 浏览器终验 | ⚠️ 待用户确认暂停开关交互 |
|
||
|
||
---
|
||
|
||
## 发现与处理
|
||
|
||
| # | 严重度 | 问题 | 根因 | 状态 |
|
||
|---|--------|------|------|------|
|
||
| 1 | **P2** | 暂停槽底部显示「剩余 **已到期**」 | 暂停时 API `remaining_sec=null`,`formatRemaining(null)`→「已到期」 | **已修** — 暂停底栏改「已暂停 · 时长 · Agent 60s」 |
|
||
| 2 | P3 | Sparkline 渐变 `${color}33` 在非 hex 主题失效 | Vuetify 可能返回 `rgb()` | 未修(线条仍正常) |
|
||
| 3 | P3 | 探针表 `total=0` 仍显示 1 页分页 | `pageCount` 下限为 1 | 未修 |
|
||
| 4 | — | SSH 探针引号 | `adee25d` | 已部署 |
|
||
| 5 | — | TTL ghost pin | `_finalize_due_pins` | 已修 |
|
||
| 6 | — | CH-AGT-001 pipeline mock | `825d029` 前已修 | ✅ |
|
||
|
||
---
|
||
|
||
## P2 — 暂停态「已到期」误文案(已修)
|
||
|
||
后端 `watch_service._slot_payload`:暂停时 `remaining_sec=None`(TTL 倒计时冻结)。
|
||
|
||
```138:139:frontend/src/utils/watchFormat.ts
|
||
export function formatRemaining(sec: number | null | undefined): string {
|
||
if (sec == null || sec <= 0) return '已到期'
|
||
```
|
||
|
||
暂停底栏若用 `formatRemaining(slot.remaining_sec)` 会误显示「已到期」,与用户「槽位保留」语义冲突。
|
||
|
||
**修复**:`WatchSlotCard.vue` 暂停底栏改为 `已暂停 · {ttl} · Agent 60s 上报`。
|
||
|
||
---
|
||
|
||
## 暂停居中开关(`825d029`)走读
|
||
|
||
| 检查项 | 结果 |
|
||
|--------|------|
|
||
| 暂停仅中部开关可开启 | ✅ 顶栏开关 `v-if="monitoringOn"` |
|
||
| 开启后显示指标 | ✅ `v-else` 包裹 metrics |
|
||
| 暂停不跳转历史 | ✅ `@click` 仅 `monitoringOn` 时 |
|
||
| API 失败提示 | ✅ `WatchSlotRow.onMonitoring` try/catch |
|
||
| 暂停不返回 metrics | ✅ 后端 `monitoring_enabled` 分支 |
|
||
|
||
---
|
||
|
||
## 本地验证
|
||
|
||
```text
|
||
bash scripts/local_verify.sh → 26/26
|
||
pytest tests/ -m "not chain and not slow" → 571 passed
|
||
pytest tests/chain -q → 9 passed
|
||
pytest tests/test_watch_pins.py tests/test_watch_metrics.py → 23 passed
|
||
```
|
||
|
||
---
|
||
|
||
## 生产(源站 SSH)
|
||
|
||
| 项 | 结果 |
|
||
|----|------|
|
||
| `curl http://127.0.0.1:8600/health` | `ok` |
|
||
| `git log -1` | `825d029` |
|
||
|
||
---
|
||
|
||
## 待办
|
||
|
||
| 优先级 | 项 |
|
||
|--------|-----|
|
||
| P0 | 部署 P2 底栏文案修复(工作区未提交) |
|
||
| P2 | 浏览器终验:暂停→中部开→指标→顶栏关 |
|
||
| P3 | Sparkline 渐变 / 空表分页 |
|