Эпик 4 re-ревью: fail-fast tx_hash #13

Merged
ant merged 1 commits from chore/re-review-E4-fail-fast-tx-hash into marketplace2 2026-05-20 17:03:29 +00:00
Owner

Эпик 4 re-ревью — HIGH fix

Проблема

3 сервиса Эпика 4 имели anti-pattern:

return t?.transaction?.id ?? t?.processed?.id ?? 'unknown';

При пустом ответе цепи в БД записывалась строка 'unknown' как tx_hash → фантомный audit-trail, невозможно cross-reference в blockchain.

Фикс

normalizeTxHash / normalizeTxResult → fail-fast BadRequestException при отсутствии tx_hash. Соответствует фиксу аналогичной дыры в:

  • PR #7 (Эпик 6 signiss1/signiss2)
  • PR #8 (Эпик 7 submretrn / aprretrem / rejretrem / accretrn / rejretrn)
  • PR #9 (Эпик 8 propwroff / createagenda / execwroff)

Затронуты

  • MarketplaceOrderCreateService.normalizeTxResult (createorder).
  • MarketplaceOrderCancelService.normalizeTxHash (cancelorder).
  • MarketplaceOrderSupplierActionService.normalizeTxHash (acceptorder + declineorder).

Test plan

  • jest marketplace-order-(cancel|create|supplier) — 37/37 passed.

🤖 Generated with Claude Code

# Эпик 4 re-ревью — HIGH fix ## Проблема 3 сервиса Эпика 4 имели anti-pattern: ```ts return t?.transaction?.id ?? t?.processed?.id ?? 'unknown'; ``` При пустом ответе цепи в БД записывалась строка `'unknown'` как `tx_hash` → фантомный audit-trail, невозможно cross-reference в blockchain. ## Фикс `normalizeTxHash` / `normalizeTxResult` → fail-fast `BadRequestException` при отсутствии tx_hash. Соответствует фиксу аналогичной дыры в: - PR #7 (Эпик 6 signiss1/signiss2) - PR #8 (Эпик 7 submretrn / aprretrem / rejretrem / accretrn / rejretrn) - PR #9 (Эпик 8 propwroff / createagenda / execwroff) ## Затронуты - `MarketplaceOrderCreateService.normalizeTxResult` (createorder). - `MarketplaceOrderCancelService.normalizeTxHash` (cancelorder). - `MarketplaceOrderSupplierActionService.normalizeTxHash` (acceptorder + declineorder). ## Test plan - [x] jest marketplace-order-(cancel|create|supplier) — 37/37 passed. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
ant added 1 commit 2026-05-20 16:28:20 +00:00
HIGH:
- 3 сервиса Эпика 4 имели одинаковый anti-pattern:
  `t?.transaction?.id ?? t?.processed?.id ?? 'unknown'`. При пустом
  ответе цепи в БД записывалась строка 'unknown' как tx_hash —
  фантомный audit-trail, невозможно cross-reference в blockchain.
- normalizeTxHash / normalizeTxResult → fail-fast `BadRequestException`
  при отсутствии tx_hash. Соответствует фиксу аналогичной дыры в
  Эпиках 6 (PR #7), 7 (PR #8) и 8 (PR #9).

Затронуты:
- MarketplaceOrderCreateService.normalizeTxResult (createorder).
- MarketplaceOrderCancelService.normalizeTxHash (cancelorder).
- MarketplaceOrderSupplierActionService.normalizeTxHash
  (acceptorder + declineorder).

Тесты: jest marketplace-order-(cancel|create|supplier) — 37/37 passed.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
ant merged commit afbb89a21f into marketplace2 2026-05-20 17:03:29 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: C9S/mono#13