11 KiB
Закрыто 21.07-27.07
- MVP frontend: один чат с компанией без истории диалогов; пункт «Чат» открывает текущий активный диалог или создаёт его при отсутствии
- При создании пользователя номер телефона копировать в профиль Russian_Phone
- Убрать хеширование устройства клиента в devise_json - хочу видеть его параметры.
- Добавить параметр, ограничивающих кол-во неуспешных попыток ввода смс.
- Поправить чтение сообщений от Битрикса. Сейчас они выглядят так: "[b]Антон Пичугин:[/b] [br]опять ты?" Надо убрать из текста сообщения Отправителя в битриксе
- Если неавторизованный пользователь вводит сообщение, после отправки идет на регистрацию, после окончания регистрации его сообщение пропадает. Надо чтобы сохранялось и отправлялось (по аналогии с нажатием на кнопку из раздела "Популярные вопросы")
- Изменение в БД по аудитам (заполнение IP, сквозное заполнение UserSession)
- Яндекс.капчу добавить
- Формы согласий поправить (Согласие на обработку ПД + Политика, Пользовательское соглашение, Реклама)
- При повторном запросе OTP кода при авторизации не нужно указывать ошибку "Новый код заказан. Предыдущий код больше не действует."
- Интеграция с СМС-провайдером — спецификация и план rollout зафиксированы в
modules/module-11-idgtl-sms.md; пункт не закрыт до реализацииsms-service/worker, Keycloak lifecycle, schemasms, callback/nginx, env validation, observability и общего DoD. Production prerequisites: согласованные sender/template, DirectTOKEN_1, callback credentials/подтверждённый source IP и статический egress IP. - Моделирование уведомлений — постановка v6 синхронизирована с
functional_blocks (business logic)/notification-requirements.md, arch-00…05 и module-01/03/07. Зафиксированы: instruction только в новой вкладке; TTL только при отсутствииdate_expired; первое скачивание любого связанного документа скрывает;producer_testтолько для smoke, secret/hash раздельно. - Кнопка "Позвонить оператору" (ссылка tel:+74999591007)
- На главном экране две кнопки: чат и звонок оператору. На кнопке с чатом уведомление при наличии непрочитанных сообщений.
Закрыто 28.07-03.08
- Подключить OTLP-провайдер
- Отправлять на UI информацию разные ошибки при попытках авторизации в зависимости от события: код неверен, истёк или уже использован; превышен лимит попыток авторизации, попробуйте через 24 часа (в случаях превышения otp.phone.max_send_attempts_per_24h); превышен лимит неуспешных авторизаций, начните процедуру заново (в случае превышения otp.phone.max_verify_attempts).
- При отрицательном результате проверки сообщения через message-safety, если сообщение отправлялось с главного экрана, то пользователь не переводится в чат, ему под окном главного экрана выпадает сообщение об ошибке. Не на всех устройствах это видно. Воспринимается как UX-дефект. Как надо: вне зависимости от решения message-safety, если пользователь отправил сообщение, то он переводится на экран с чатом. Далее, сейчас отрицательный результат message-safety выводится пользователю как техническая ошибка (красным цветом под полем ввода сообщения) и опять же воспринимается не как бизнес-логика, а как техническая ошибка. Это поведение нужно поменять. Если сообщение пользователя не прошло проверку, нужно ему в окне чата прислать ответ: Для сообщений: К сожалению, ваше сообщение не соответствует правилам данного чата и не может быть отправлено. Попробуйте переформулировать. Для документов: К сожалению, ваш документ не прошел проверку и не может быть доставлен.
- UX-дефект: frontend показывает «Не удалось завершить вход» при ошибке отправки отложенного сообщения, хотя вход завершён. Это следует исправить: завершать экран авторизации после bootstrap, а ошибку Bitrix показывать уже в чате (если сообщение отклонено сервисом message-safety, учесть реализацию предыдущего пункта)
- Ограничить кол-во символов в сообщении на фронте. Показывать в моменте счетчик: n/max, где n сколько символов уже напечатано, max сколько может быть отправлено. Максимальное кол-во символов - положить в app_settings.
- Убрать с экрана ввода номера телефона тексты согласий внизу экрана: Нажимая «Получить код», вы соглашаетесь с условиями использования и политикой конфиденциальности. Согласия пользователь дает ранее на отдельном экране.
В разработку:
-
После интеграции с смс провайдером, реализовать debounce механизм при авторизации - каждая след. смс можно отправить через все большее окно.
-
аудит безопасности вм
-
На экране профиля в гостевом режиме добавить кнопку "Авторизоваться"
-
Store-review вход: точечный bypass в Keycloak OTP SPI по номеру из
.env(STORE_REVIEW_ENABLED/STORE_REVIEW_PHONE/STORE_REVIEW_OTP) — для этого телефона SMS не шлётся, verify принимает фиксированный OTP; остальные номера идут обычным OTP/SMS. Не путать с глобальнымKEYCLOAK_OTP_MOCK_*. Учётные данные только в Review Notes стора (не в бинарнике/UI); пользователь с демо-контентом; в production включать только на время ревью. -
Хранить историю устройств, с которых пользователь входил в ЛК (Ид юзера, идентификатор устройства, дата последнего входа, способ входа - веб\приложение)
-
Веб-пуши для PWA
-
На кнопке Чат отображать значок наличия непрочитанных уведомлений. Требуется синхронизация между устройствами (решение, например через Dialog.client_last_opened_at)
-
Описание бизнес сущностей: Пользователь
-
Описание бизнес сущностей: Сообщение
-
Вынести за пределы ВМ1 сервисы message-safety и sync-service.
-
Сделать страницу с инстркцией по установке приложения
-
Написать пользовательское соглашение.
-
Разработка message-safety
-
Разработка sync-service
-
Разработка notification-service
-
Поднять второй контур для продакшн
-
Спрятать сеть за балансировщиком нагрузки
-
Добавить логи (Для Python-сервисов добавить OTLP Log Exporter: api-backend; sms-service; sms-worker. Подключить LoggerProvider, BatchLogRecordProcessor и bounded queue. Передавать resource attributes: service.name; service.version; deployment.environment; service.namespace=han-chat.) Экспортировать структурированные поля request_id, trace_id, span_id, severity и event name. Оставить stdout как аварийный локальный журнал. Добавить canary-тесты, запрещающие экспорт токенов, cookie, телефонов, email, текстов сообщений, SQL и object keys.).
-
Nginx metrics/tracing в signoz
На будущее (после доработки отдельных функциональностей):
- Определение итогового перечня мнемоник, перевод фронтенда на мнемоники, seed заливка мнемоник в БД (?)
- Моделирование профиля клиента.
- Реализация мнемоник.
- Реализовать в полноценном
bitrix-syncобработчикdocument.client_uploaded: claim/retry/DLQ, идемпотентность поclient_document_id, группировка поsubmission_id; до этого stub задачи не claim-ит.
На анализ: debounce на отправку СМС (сейчас есть Фиксированный cooldownmin_seconds_between_attempts)
Критично для релиза:
- Разработка message-safety
- Разработка sync-service
- Пользовательское соглашение
- Разработка notification-service
- Подключить OTLP-провайдер
- Починить баги
- Второй контур для продакшн