Files
aiform_prod/CHANGELOG_PROFILE_VALIDATION.md
Fedor c39b12630e Профиль: валидация, календарь, ИНН 12 цифр, email, DaData адреса, банки из BANK_IP, подсказка ИНН (ФНС)
- Backend: N8N_AUTH_WEBHOOK из env (fallback), банки из BANK_IP, эндпоинт
  /api/v1/profile/dadata/address для подсказок адресов (FORMA_DADATA_*).
- Config: bank_ip, bank_api_url, forma_dadata_api_key, forma_dadata_secret.
- Frontend Profile: DatePicker для даты рождения, ИНН 12 цифр + ссылка на ФНС,
  валидация email, чекбокс «Совпадает с адресом регистрации», AutoComplete
  адресов через DaData, Select банков из /api/v1/banks/nspk (bankId/bankName).

Подробности в CHANGELOG_PROFILE_VALIDATION.md.
2026-02-27 18:32:06 +03:00

2.3 KiB
Raw Permalink Blame History

Изменения: форма профиля, валидация, DaData, банки

Backend

auth_universal.py

  • Чтение N8N_AUTH_WEBHOOK: fallback на os.environ.get("N8N_AUTH_WEBHOOK"), если в config нет поля n8n_auth_webhook (чтобы webhook auth_miniapp вызывался при отсутствии config.py на хосте).

banks.py

  • URL списка банков берётся из .env: BANK_IP (в config — bank_ip), fallback на bank_api_url и запасной URL. Прокси запроса к внешнему API для мини-аппа.

profile.py

  • Новый эндпоинт GET /api/v1/profile/dadata/address?query=...&count=10 — подсказки адресов через DaData API (ключи FORMA_DADATA_API_KEY, FORMA_DADATA_SECRET в .env). Ответ: { "suggestions": [ { "value", "unrestricted_value" } ] }.

config.py

  • Добавлены поля: bank_ip (BANK_IP), bank_api_url; forma_dadata_api_key, forma_dadata_secret (FORMA_DADATA_*).

Frontend (Profile.tsx)

  • Дата рождения: календарь (DatePicker), формат DD.MM.YYYY, нельзя выбрать будущую дату.
  • ИНН: строго 12 цифр, валидация и ввод только цифр; подсказка «Узнать свой ИНН вы можете здесь» со ссылкой на сервис ФНС (service.nalog.ru).
  • Email: валидация формата (type: email).
  • Адрес регистрации / Почтовый адрес: чекбокс «Совпадает с адресом регистрации» — при включении почтовый подставляется и блокируется; оба поля — AutoComplete с подсказками из DaData (запрос к /api/v1/profile/dadata/address).
  • Банк для возмещения: выпадающий список (Select) с поиском, данные с /api/v1/banks/nspk (API из BANK_IP); учтён формат ответа с полями bankId, bankName (camelCase).

.env