Files
Nexus/docs/reports/2026-06-14-bug-patrol.md
T
r 9c9a51263c chore: 本地快照 — 终端 UI、服务器 site_url、后台任务与 Agent 导航
汇总未提交工作区:Servers 列表 site_url 链接、终端页与选机器 UI、SSH 连通性与 Telegram 通知、agent/offline/unset_path 后台调度与 gate_ai_review 门控;更新 AGENTS 与 agent-exploration 规则(仅本机 commit);同步 web/app 构建产物与相关文档。
2026-06-18 06:01:50 +08:00

87 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 渐变 / 空表分页 |