feat: add webhook case management

This commit is contained in:
2026-06-09 11:13:56 +08:00
parent 490b3089d2
commit 9d791be174
17 changed files with 1982 additions and 12 deletions

View File

@@ -97,6 +97,7 @@ http://127.0.0.1:23000
- 标定数字食品区域和垃圾桶 ROI
- 直接保存标定结果到项目配置文件
- 查看事件汇总、区域序号、停留时间、报警和警告事件
- 查看本地处置单状态,并手工标记为已处理
项目仍保留 `tools/calibrator` 作为轻量单页标定工具,但正式使用建议走 `23000` 管理页。
@@ -117,6 +118,12 @@ http://127.0.0.1:19080
- `PUT /api/manage/calibration`
- `GET /api/manage/summary`
- `GET /api/manage/events`
- `GET /api/manage/cases`
- `GET /api/manage/cases/summary`
- `POST /api/manage/cases/{case_id}/handle`
- `POST /api/manage/webhooks/case-update`
`/api/manage/webhooks/case-update` 需要请求头 `X-Webhook-Token`,并且请求体里的 `status` 目前固定为 `handled`
## 运行识别计时进程
@@ -133,7 +140,9 @@ scripts/run_runtime.sh
3. 按标定区域做占用变化检测。
4. 判断垃圾桶区域是否有明显投放动作。
5. 调用批次计时状态机。
6. 写入 `logs/events.jsonl`,管理页会读取这个文件
6. `time_alarm``batch_pending_disposal``warning_escalated` 映射到本地处置单状态
7. 写入 `logs/events.jsonl``logs/cases.jsonl``logs/runtime_diagnostics.jsonl`
8. 按配置向外部系统推送事件 webhook 和处置单 webhook。
当前视觉版本是可运行的启发式版本:
@@ -168,8 +177,24 @@ trash_sustained_motion_delta = 8.0
trash_sustained_motion_frames = 2
trash_motion_cooldown_seconds = 3
diagnostics_path = "logs/runtime_diagnostics.jsonl"
[case_sink]
path = "logs/cases.jsonl"
[webhooks]
enabled = true
event_url = "https://example.com/runtime-events"
case_url = "https://example.com/case-events"
callback_token = "shared-secret"
connect_timeout_seconds = 3
read_timeout_seconds = 5
```
运行时会额外记录:
- `logs/cases.jsonl`:本地处置单状态变更
- `logs/webhook_delivery.jsonl`Webhook 投递结果审计
## 本地测试
```bash