[CL-HOTELSYNC-REVENUE-VALIDATE] Валидация totalRevenue в hotel-sync webhook #858
No reviewers
Labels
No labels
ci-failing
duplicate
needs-rebase
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
europa-tech-srl/europatech!858
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/claude-hotelsync-revenue-validate"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что сделано
Добавлена валидация PMS-поля
data.totalRevenueв webhookPOST /api/hotel-sync/webhook(eventrevenue.daily) перед записью в финансовую колонкуpropertyObject.annualRevenue. ГардNumber.isFinite() && >= 0; невалидное значение → warn-лог + skip.Зачем
Соседнее поле
rateклампится в [0,1] (PIX-1235), аtotalRevenueписалось напрямую без проверки. Malformed PMS-payload (NaN/Infinity/negative) попадал вannualRevenue, которое питает yield-проекции инвесторам → искажение фин-расчётов. Найдено в мега-аудите (rate-limit/validation coverage). Эндпоинт M2M (x-api-key + HMAC-SHA256), severity LOW.План тестирования
api/src/routes/__tests__/hotel-sync.test.ts: valid 125000 → пишет; negative/NaN/Infinity → skip. RED до фикса, GREEN после.Где могу ошибаться