feat: add passport data
This commit is contained in:
@@ -30,5 +30,6 @@ class IUserRepository(ABC):
|
|||||||
birth_date: date,
|
birth_date: date,
|
||||||
middle_name: str | None,
|
middle_name: str | None,
|
||||||
inn: str | None,
|
inn: str | None,
|
||||||
|
passport_data: str | None,
|
||||||
) -> UserEntity:
|
) -> UserEntity:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
@@ -88,6 +88,7 @@ class CompleteKycCommand:
|
|||||||
middle_name=personal_data.middle_name,
|
middle_name=personal_data.middle_name,
|
||||||
birth_date=birth_date,
|
birth_date=birth_date,
|
||||||
inn=personal_data.inn,
|
inn=personal_data.inn,
|
||||||
|
passport_data=personal_data.passport_data,
|
||||||
)
|
)
|
||||||
await unit_of_work.kyc_repository.update_session_result(
|
await unit_of_work.kyc_repository.update_session_result(
|
||||||
user_id=user_id,
|
user_id=user_id,
|
||||||
@@ -223,6 +224,7 @@ class PollKycSessionsCommand:
|
|||||||
middle_name=personal_data.middle_name,
|
middle_name=personal_data.middle_name,
|
||||||
birth_date=birth_date,
|
birth_date=birth_date,
|
||||||
inn=personal_data.inn,
|
inn=personal_data.inn,
|
||||||
|
passport_data=personal_data.passport_data,
|
||||||
)
|
)
|
||||||
await unit_of_work.kyc_repository.update_session_result(
|
await unit_of_work.kyc_repository.update_session_result(
|
||||||
user_id=user_id,
|
user_id=user_id,
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ class KycPersonalData(BaseModel):
|
|||||||
birth_date: str
|
birth_date: str
|
||||||
middle_name: str | None = None
|
middle_name: str | None = None
|
||||||
inn: str | None = None
|
inn: str | None = None
|
||||||
|
passport_data: str | None = None
|
||||||
|
|
||||||
|
|
||||||
class KycSessionResponse(BaseModel):
|
class KycSessionResponse(BaseModel):
|
||||||
|
|||||||
@@ -17,9 +17,7 @@ class UserEntity:
|
|||||||
crypto_wallet: str | None = None
|
crypto_wallet: str | None = None
|
||||||
phone: str | None = None
|
phone: str | None = None
|
||||||
|
|
||||||
bik: str | None = None
|
passport_data: str | None = None
|
||||||
account_number: str | None = None
|
|
||||||
card_number: str | None = None
|
|
||||||
inn: str | None = None
|
inn: str | None = None
|
||||||
|
|
||||||
kyc_verified: bool | None = None
|
kyc_verified: bool | None = None
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ FIELD_ALIASES = {
|
|||||||
'middle_name': {'middle_name','middlename','patronymic','отчество'},
|
'middle_name': {'middle_name','middlename','patronymic','отчество'},
|
||||||
'birth_date': {'birth_date','birthdate','date_birth','datebirth','birthday','дата_рождения'},
|
'birth_date': {'birth_date','birthdate','date_birth','datebirth','birthday','дата_рождения'},
|
||||||
'inn': {'inn','tax_id','taxid','инн'},
|
'inn': {'inn','tax_id','taxid','инн'},
|
||||||
|
'passport_data': {'passport_data','passport','passport_number','passport_series_number','серия_номер_паспорта','паспорт'},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -41,6 +42,7 @@ def extract_personal_data(data: Any) -> KycPersonalData:
|
|||||||
middle_name=values.get('middle_name'),
|
middle_name=values.get('middle_name'),
|
||||||
birth_date=str(_parse_date(values['birth_date'])),
|
birth_date=str(_parse_date(values['birth_date'])),
|
||||||
inn=values.get('inn'),
|
inn=values.get('inn'),
|
||||||
|
passport_data=values.get('passport_data'),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from sqlalchemy import Boolean, Date, DateTime, String
|
from sqlalchemy import Boolean,Date,String,DateTime
|
||||||
from sqlalchemy.orm import Mapped, mapped_column
|
from sqlalchemy.orm import Mapped,mapped_column
|
||||||
from src.infrastructure.database.models.base import Base
|
from src.infrastructure.database.models.base import Base
|
||||||
from src.infrastructure.database.models.mixins import AuditTimestampsMixin, SoftDeleteMixin, UlidPrimaryKeyMixin
|
from src.infrastructure.database.models.mixins import UlidPrimaryKeyMixin,AuditTimestampsMixin,SoftDeleteMixin
|
||||||
|
|
||||||
|
|
||||||
class UserModel(Base, UlidPrimaryKeyMixin, AuditTimestampsMixin, SoftDeleteMixin):
|
class UserModel(Base, UlidPrimaryKeyMixin, AuditTimestampsMixin, SoftDeleteMixin):
|
||||||
@@ -20,9 +20,7 @@ class UserModel(Base, UlidPrimaryKeyMixin, AuditTimestampsMixin, SoftDeleteMixin
|
|||||||
crypto_wallet: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
crypto_wallet: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
||||||
phone: Mapped[str | None] = mapped_column(String(16), nullable=True)
|
phone: Mapped[str | None] = mapped_column(String(16), nullable=True)
|
||||||
|
|
||||||
bik: Mapped[str | None] = mapped_column(String(9), nullable=True)
|
passport_data: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
||||||
account_number: Mapped[str | None] = mapped_column(String(20), nullable=True)
|
|
||||||
card_number: Mapped[str | None] = mapped_column(String(19), nullable=True)
|
|
||||||
inn: Mapped[str | None] = mapped_column(String(12), nullable=True)
|
inn: Mapped[str | None] = mapped_column(String(12), nullable=True)
|
||||||
|
|
||||||
kyc_verified: Mapped[bool] = mapped_column(Boolean, nullable=False, server_default='false', default=False)
|
kyc_verified: Mapped[bool] = mapped_column(Boolean, nullable=False, server_default='false', default=False)
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ class UserRepository(IUserRepository):
|
|||||||
birth_date: date,
|
birth_date: date,
|
||||||
middle_name: str | None,
|
middle_name: str | None,
|
||||||
inn: str | None,
|
inn: str | None,
|
||||||
|
passport_data: str | None,
|
||||||
) -> UserEntity:
|
) -> UserEntity:
|
||||||
user = await self._session.get(UserModel,user_id)
|
user = await self._session.get(UserModel,user_id)
|
||||||
if user is None:
|
if user is None:
|
||||||
@@ -53,6 +54,7 @@ class UserRepository(IUserRepository):
|
|||||||
user.middle_name = middle_name
|
user.middle_name = middle_name
|
||||||
user.birth_date = birth_date
|
user.birth_date = birth_date
|
||||||
user.inn = inn
|
user.inn = inn
|
||||||
|
user.passport_data = passport_data
|
||||||
user.kyc_verified = True
|
user.kyc_verified = True
|
||||||
user.kyc_verified_at = datetime.now(timezone.utc)
|
user.kyc_verified_at = datetime.now(timezone.utc)
|
||||||
await self._session.flush()
|
await self._session.flush()
|
||||||
@@ -70,9 +72,7 @@ class UserRepository(IUserRepository):
|
|||||||
birth_date=user.birth_date,
|
birth_date=user.birth_date,
|
||||||
crypto_wallet=user.crypto_wallet,
|
crypto_wallet=user.crypto_wallet,
|
||||||
phone=user.phone,
|
phone=user.phone,
|
||||||
bik=user.bik,
|
passport_data=user.passport_data,
|
||||||
account_number=user.account_number,
|
|
||||||
card_number=user.card_number,
|
|
||||||
inn=user.inn,
|
inn=user.inn,
|
||||||
kyc_verified=user.kyc_verified,
|
kyc_verified=user.kyc_verified,
|
||||||
is_deleted=user.is_deleted,
|
is_deleted=user.is_deleted,
|
||||||
|
|||||||
Reference in New Issue
Block a user