Jack
|
02d163a177
|
feat: implement GET /api/v1/agents/<agent_id>/versions API (#15629)
## Summary
Implement the `GET /api/v1/agents/<agent_id>/versions` endpoint in Go,
listing all version snapshots for an agent canvas in descending update
time order.
### Changes
- **New**: `internal/dao/user_canvas_version.go` —
`UserCanvasVersionDAO` with `ListByCanvasID` (ordered by update_time
DESC) and `GetByID`
- **Modified**: `internal/service/agent.go` — Added `CheckCanvasAccess`,
`ListVersions`, `GetVersion` methods
- **Modified**: `internal/handler/agent.go` — Added `ListAgentVersions`
handler with auth check
- **Modified**: `internal/router/router.go` — Registered `GET
/:agent_id/versions` route
- **New**: `internal/service/agent_test.go` — 5 service-level tests
(SQLite in-memory DB, zero mock)
- **Modified**: `internal/handler/agent_test.go` — 3 handler-level tests
(real DB, pre-authenticated context)
### Testing
All 8 tests pass with zero mocking (in-memory SQLite replaces MySQL):
```
=== RUN TestListVersions_Success --- PASS
=== RUN TestListVersions_Empty --- PASS
=== RUN TestCheckCanvasAccess_Owner --- PASS
=== RUN TestCheckCanvasAccess_NotOwner --- PASS
=== RUN TestCheckCanvasAccess_NotFound --- PASS
=== RUN TestListAgentVersionsHandler_Success --- PASS
=== RUN TestListAgentVersionsHandler_NoPermission --- PASS
=== RUN TestListAgentVersionsHandler_CanvasNotFound --- PASS
```
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-04 15:36:26 +08:00 |
|