🟦 TEAM-1 | Movements
Эндпоинт: GET /api/movements/{itemId}/history (ADMIN + USER)
Query params
type=RECEIVE|WRITE_OFF (опционально)
page=0&size=20
Response
{
"content": [
{
"id": 102,
"type": "WRITE_OFF",
"quantity": 10,
"performedBy": "admin",
"createdAt": "2026-05-28T11:30:00"
}
],
"totalElements": 15,
"page": 0,
"size": 20
}
Что сделать
StockMovementRepository: запрос по item_id, JOIN с users для performedBy
- Сортировка:
created_at DESC (новые первые)
- 404 если товар не найден
Acceptance criteria
🟦 TEAM-1 | Movements
Эндпоинт:
GET /api/movements/{itemId}/history(ADMIN + USER)Query params
type=RECEIVE|WRITE_OFF(опционально)page=0&size=20Response
{ "content": [ { "id": 102, "type": "WRITE_OFF", "quantity": 10, "performedBy": "admin", "createdAt": "2026-05-28T11:30:00" } ], "totalElements": 15, "page": 0, "size": 20 }Что сделать
StockMovementRepository: запрос поitem_id, JOIN сusersдляperformedBycreated_at DESC(новые первые)Acceptance criteria
?type=WRITE_OFF→ только списанияperformedByсодержит username пользователя