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