feat: add endpoints desc

This commit is contained in:
2026-05-11 19:50:25 +03:00
parent 852ee9ec2e
commit 46b1e336d9
22 changed files with 236 additions and 95 deletions

View File

@@ -3,7 +3,7 @@ from decimal import Decimal
from src.application.abstractions import IUnitOfWork
from src.application.contracts import ILogger,IReceipt
from src.application.domain.enums import PaymentStatus
from src.application.domain.exceptions import ApplicationException
from src.application.domain.exceptions import ApplicationException,NotFoundException,PaymentMetadataException,ReceiptDataException
from src.infrastructure.database.decorators import transactional
@@ -17,19 +17,19 @@ class CreateCryptoTransferCompletedCommand:
@transactional
async def __call__(self, *, order_id: str, user_id: str, web3_transaction_hash: str | None = None) -> None:
if not order_id:
raise ApplicationException(status_code=400, message='Crypto transfer completed message missing order_id')
raise PaymentMetadataException(message='Crypto transfer completed message missing order_id')
if not user_id:
raise ApplicationException(status_code=400, message='Crypto transfer completed message missing user_id')
raise PaymentMetadataException(message='Crypto transfer completed message missing user_id')
await self._unit_of_work.payment_repository.update_crypto_transfer_completed(
order_id=order_id,
web3_transaction_hash=web3_transaction_hash,
)
user = await self._unit_of_work.user_repository.get(user_id)
if user is None:
raise ApplicationException(status_code=404, message='User not found')
raise NotFoundException(message='User not found')
email = str(user.email or '').strip()
if not email:
raise ApplicationException(status_code=400, message='User email missing')
raise ReceiptDataException(message='User email missing')
customer_info = ' '.join(
part
for part in (
@@ -40,28 +40,28 @@ class CreateCryptoTransferCompletedCommand:
if part
)
if not customer_info:
raise ApplicationException(status_code=400, message='User full name missing')
raise ReceiptDataException(message='User full name missing')
customer_inn = str(user.inn or '').strip()
if not customer_inn:
raise ApplicationException(status_code=400, message='User inn missing')
raise ReceiptDataException(message='User inn missing')
if user.birth_date is None:
raise ApplicationException(status_code=400, message='User birth date missing')
raise ReceiptDataException(message='User birth date missing')
customer_birthday = f'{user.birth_date.isoformat()}T12:00:00.000Z'
order = await self._unit_of_work.order_repository.get_by_id(order_id)
if order is None:
raise ApplicationException(status_code=404, message='Order not found')
raise NotFoundException(message='Order not found')
if order.total_price is None:
raise ApplicationException(status_code=400, message='Order total price missing for receipt')
raise ReceiptDataException(message='Order total price missing for receipt')
if order.service_fee is None:
raise ApplicationException(status_code=400, message='Order service fee missing for receipt')
raise ReceiptDataException(message='Order service fee missing for receipt')
total_amount = Decimal(str(order.total_price)).quantize(Decimal('0.01'))
service_fee = Decimal(str(order.service_fee)).quantize(Decimal('0.01'))
principal_amount = (total_amount - service_fee).quantize(Decimal('0.01'))
if principal_amount < 0:
raise ApplicationException(status_code=400, message='Invalid receipt amounts: principal negative')
raise ReceiptDataException(message='Invalid receipt amounts: principal negative')
try:
receipt_response = await self._receipt.create_receipt(