zcbot/web/static/js
caoqianming 4f6e879050 feat(web): systemctl restart 优雅 drain in-flight run,不再误标 error
此前 restart 硬杀 BG run 线程,下次启动 reaper 把所有 running/cancelling
标 error: server restarted before run finished —— 用户一多就不能随便重启。

单实例止血,零 DB 改动:
- lifespan 加 draining(Event) + inflight 登记表(顺手修 create_task 不留引用
  可能被 GC 的旧坑);finally 先拒新 run → await 收尾 → 超 drain_timeout 转
  协作式 cancel(= 用户按停止,标 idle 不报 error、可重发)→ 超 cancel_grace
  仍没退的留给 SIGKILL(最坏退化 = 改前)
- POST /messages:draining 期返 503 + Retry-After;起 run 登记 inflight
- main.py uvicorn 加 timeout_graceful_shutdown=5(否则长连 SSE 挡在 drain 前)
- config/agent.yaml 加 shutdown 段(drain 30s / grace 15s,偏短更安全)
- dev SPA chat.js 发送包退避重试(503 背压 + 交接拒连都重试 ~26s)

部署强耦合:unit TimeoutStopSec 10→90(必须 > drain+grace+sandbox 清扫余量),
已写进 RUN.md unit + 故障兜底。B 蓝绿(零 503 窗口)留作触发信号后再做。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 10:54:43 +08:00
..
api.js refactor(dev): 前端模块化 Step 1 — dev.html 拆零构建 ES module(叶子优先) 2026-06-05 16:55:20 +08:00
auth.js refactor(dev): 前端模块化 Step 2 — 抽出 embed.js(iframe 模式) 2026-06-07 19:35:01 +08:00
chat.js feat(web): systemctl restart 优雅 drain in-flight run,不再误标 error 2026-06-10 10:54:43 +08:00
dom.js refactor(dev): 前端模块化 Step 1 — dev.html 拆零构建 ES module(叶子优先) 2026-06-05 16:55:20 +08:00
embed.js refactor(dev): 前端模块化 Step 2 收官 — 抽出 chat.js,main 缩成 75 行入口 2026-06-08 08:09:53 +08:00
files.js refactor(dev): 前端模块化 Step 2 收官 — 抽出 chat.js,main 缩成 75 行入口 2026-06-08 08:09:53 +08:00
format.js refactor(dev): 前端模块化 Step 1 — dev.html 拆零构建 ES module(叶子优先) 2026-06-05 16:55:20 +08:00
layout.js refactor(dev): 前端模块化 Step 2(起)— 抽出 layout.js 2026-06-06 21:27:51 +08:00
main.js refactor(dev): 前端模块化 Step 2 收官 — 抽出 chat.js,main 缩成 75 行入口 2026-06-08 08:09:53 +08:00
markdown.js refactor(dev): 前端模块化 Step 1 — dev.html 拆零构建 ES module(叶子优先) 2026-06-05 16:55:20 +08:00
media.js refactor(dev): 前端模块化 Step 2 — 抽出 media.js + 收敛 downloadFile 反向依赖 2026-06-07 19:05:48 +08:00
newtask.js fix(web): 修登录无反应(newtask.js 漏 import $)+ 补 favicon 2026-06-08 09:22:59 +08:00
preview.js feat(preview): pptx 在线预览 —— LibreOffice→PDF + 复用 PDF iframe(DESIGN §8.3 Stage 1) 2026-06-09 13:04:02 +08:00
progress.js Show task progress above composer 2026-06-08 09:04:43 +08:00
state.js Show task progress above composer 2026-06-08 09:04:43 +08:00