🟦 TEAM-1 | Movements
Эндпоинт: POST /api/movements/receive (ADMIN only)
Request
{
"itemId": 1,
"quantity": 50
}
Response 200
{
"itemId": 1,
"movementId": 101,
"type": "RECEIVE",
"quantity": 50,
"stockAfter": 73,
"createdAt": "2026-05-28T11:00:00"
}
Что сделать
@Transactional: stock.quantity += quantity + INSERT INTO stock_movements
user_id берётся из SecurityContext (текущий авторизованный пользователь)
- 404 если товар не найден или
is_active = false
⚠️ Kafka LowStockAlertEvent и инвалидация кэша — задачи KAFKA-1 и CACHE-3 (TEAM-2).
Acceptance criteria
🟦 TEAM-1 | Movements
Эндпоинт:
POST /api/movements/receive(ADMIN only)Request
{ "itemId": 1, "quantity": 50 }Response
200{ "itemId": 1, "movementId": 101, "type": "RECEIVE", "quantity": 50, "stockAfter": 73, "createdAt": "2026-05-28T11:00:00" }Что сделать
@Transactional:stock.quantity += quantity+INSERT INTO stock_movementsuser_idберётся изSecurityContext(текущий авторизованный пользователь)is_active = falseAcceptance criteria
stock.quantityувеличился на Nstock_movementsсtype=RECEIVEuser_idпривязан к текущему пользователю