zcbot/web
caoqianming 976ef45e87 core(POST /v1/tasks/{id}/messages): 同 task 单活 run 锁 + 启动 reaper
挡住"用户连点 send 两条 → 两个 BG 线程争 messages.idx UniqueConstraint
race"的旧 TODO。POST /messages 把所有权 + 活跃 Run 检查 + 新 Run INSERT
收进一个事务,首步 SELECT Task … FOR UPDATE 锁 task 行,命中 running 已
存在则 409。lifespan 加 stale-run reaper,把进程 crash 留下的孤儿 running
标 error,避免对应 task 被 409 永挂。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 08:27:48 +08:00
..
static core(files API): user-rooted /v1/files*,去掉 task_id 前置 2026-05-18 07:59:19 +08:00
__init__.py core(§7 Phase G G1): Web UI 脚手架 + cli.py web 子命令 2026-05-14 13:37:54 +08:00
app.py core(POST /v1/tasks/{id}/messages): 同 task 单活 run 锁 + 启动 reaper 2026-05-18 08:27:48 +08:00
auth.py core(§7 D + D'): /v1 JSON API + PLATFORM_KEY→JWT auth + dev SPA 2026-05-15 16:14:25 +08:00
broker.py core(§7 Phase G G4): chat 发送 + SSE 流式回复 2026-05-15 09:19:25 +08:00
sinks.py core(§7 Phase G G4): chat 发送 + SSE 流式回复 2026-05-15 09:19:25 +08:00