feat: add passport data

This commit is contained in:
2026-05-12 18:11:49 +03:00
parent 4c6761d4c4
commit c263ad704d
7 changed files with 14 additions and 12 deletions

View File

@@ -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

View File

@@ -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,

View File

@@ -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):

View File

@@ -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

View File

@@ -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'),
) )

View File

@@ -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)

View File

@@ -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,