Full pipeline: IMAP ingress -> OpenClaw dispatch -> callback -> SMTP reply. SQLite stateful storage with idempotency, threading, and retry logic. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
19 lines
981 B
Markdown
19 lines
981 B
Markdown
# Checkpoint 004 — Feedback kết quả kiểm tra
|
|
|
|
## Kết luận
|
|
✅ **Đạt** theo tiêu chí checkpoint.
|
|
|
|
## Bằng chứng
|
|
- Verify command: `go build ./...` chạy thành công.
|
|
- `internal/api/router.go` có `POST /callback`.
|
|
- Có middleware kiểm tra `X-Bridge-Token`; thiếu/sai token trả `401 Unauthorized` và log warning kèm `remote_addr`.
|
|
- Callback parse payload với `metadata.task_uuid` + `result` là required.
|
|
- Lookup task theo `task_uuid`; không thấy trả `404`.
|
|
- Idempotent path: task đã `COMPLETED` trả `200 {"status":"already_completed"}`.
|
|
- Callback hợp lệ cập nhật `ai_response`, `status=CALLBACK_DONE`.
|
|
- `NewRouter(db, callbackToken, onDone)` đã đổi signature; `cmd/bridge/main.go` truyền `nil` tạm.
|
|
|
|
## Lưu ý (không chặn checkpoint)
|
|
- Hiện `onDone` chưa wire sang SMTP egress (đúng như checkpoint ghi “bước sau”).
|
|
- Trường `status` từ payload hiện chưa được dùng trong logic callback.
|