Косметические правки по фронту, раскатка приложения в продакшн версии, исправление бага с созданием контакта

This commit is contained in:
mi
2026-09-03 11:34:25 +03:00
parent f989097484
commit 465a70d488
18 changed files with 528 additions and 139 deletions
+17 -18
View File
@@ -31,20 +31,9 @@
## #BACK_DEFECT Исправлены дублирующиеся триггеры на создание контакта для сервиса синхронизации. Исправлено создание в БД лишних задач на обновление контакта (каждый бустрап пользователя вызывал задачу на обновление контакта)
# Закрыто 18.08-24.08
## #INFRASTRUCTURE Зарегистрировать Conteiner registry Selectel
## #BACK_DEFECT Автопродление TLS падает при перезагрузке nginx; сертификат действует до 14.10.2026. (Исправить reload внутри контейнера и проверить systemctl start an-chat-ssl-renew.service до успешного завершения.)
# В разработку:
1 #BACK_SECURE После интеграции с смс провайдером, реализовать debounce механизм при авторизации - каждая след. смс можно отправить через все большее окно. (сейчас есть Фиксированный cooldownmin_seconds_between_attempts)
2. #MONITORING Настроить мониторинг в Signoz
3. #BACK_BUSINESS Хранить историю устройств, с которых пользователь входил в ЛК (Ид юзера, идентификатор устройства, дата последнего входа, способ входа - веб\приложение)
4. #BACK_BUSINESS Веб-пуши для PWA
5. #UI На кнопке Чат отображать значок наличия непрочитанных уведомлений. Требуется синхронизация между устройствами (решение, например через Dialog.client_last_opened_at)
6. #BACK_BUSINESS Описание бизнес сущностей: Пользователь
7. #BACK_BUSINESS Описание бизнес сущностей: Сообщение
8. #UI Сделать страницу с инструкцией по установке приложения
9. #LEGAL Написать пользовательское соглашение.
10. #BACK_BUSINESS Разработка Message Safety v2 по [`module-05`](modules/module-05-message-safety.md), §18 DoR/DoD и cutover gates [`module-10-vm2`](modules/module-10-deployment-vm2.md):
## #BACK_BUSINESS Разработка Message Safety v2 по [`module-05`](modules/module-05-message-safety.md), §18 DoR/DoD и cutover gates [`module-10-vm2`](modules/module-10-deployment-vm2.md):
- API/OpenAPI v2, versioned `message_safety.config_versions`, configuration activation/validation и schema migrations;
- PostgreSQL queue/lease/fencing/deadline + Redis hot cache/rate/wakeup;
- Unicode normalization и versioned text rule bundle/corpus;
@@ -55,8 +44,21 @@
- VM2 internal nginx/TLS/egress/collector/dashboards + root-owned emergency MOCK helper/alert;
- contract/security/failure/load acceptance и S3 negative gate;
- controlled v1→v2 cutover, rollback rehearsal и удаление stub references.
11. #BACK_BUSINESS Разработка sync-service
12. #INFRASTRUCTURE Перераскатить сервисы от деплоя
## #BACK_BUSINESS Разработка sync-service
## #INFRASTRUCTURE Перераскатить сервисы от деплоя
# В разработку:
1 #BACK_SECURE После интеграции с смс провайдером, реализовать debounce механизм при авторизации - каждая след. смс можно отправить через все большее окно. (сейчас есть Фиксированный cooldownmin_seconds_between_attempts)
2. #MONITORING Настроить мониторинг в Signoz
3. #BACK_BUSINESS Хранить историю устройств, с которых пользователь входил в ЛК (Ид юзера, идентификатор устройства, дата последнего входа, способ входа - веб\приложение)
4. #BACK_BUSINESS Веб-пуши для PWA
5. #UI На кнопке Чат отображать значок наличия непрочитанных уведомлений. Требуется синхронизация между устройствами (решение, например через Dialog.client_last_opened_at)
6. #BACK_BUSINESS Описание бизнес сущностей: Пользователь
7. #BACK_BUSINESS Описание бизнес сущностей: Сообщение
8. #UI Сделать страницу с инструкцией по установке приложения
9. #LEGAL Написать пользовательское соглашение.
13. #INFRASTRUCTURE Поднять второй контур для продакшн
14. #INFRASTRUCTURE Спрятать сеть за балансировщиком нагрузки
15. #UI Добавить подсказку по разрешенным типам файлов
@@ -66,14 +68,11 @@
19. #MONITORING Добавить логи (Для 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.).
20. #MONITORING Nginx metrics/tracing в signoz
21. #BACK_SECURE Сформулировать требования для обработки персональных данных
22. #UI Скрыть раздел диагностики в профиле пользователя (наличие этого раздела в енв передать, как часть наследования продуктовой среды?)
23. #BACK_BUSINESS Разработка notification-service
24. #BACK_BUSINESS 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 включать только на время ревью.
25. #UI Реализация мнемоник: Определение итогового перечня мнемоник, перевод фронтенда на мнемоники, seed заливка мнемоник в БД (?)
26. #INFRASTRUCTURE Развернуть Гит в облаке
27. #BACK_BUSINESS Синхронизация документов из битрикс24 в Приложение.
28. #INFRASTRUCTURE Зарегистрировать Conteiner registry Selectel
29. #BACK_BUSINESS Определить пул тестовых номеров, чтобы их было легко в Б24 отслеживать.
30. #INFRASTRUCTURE перевести взаимодействие с signoz на TLS (сейчас OTEL_REMOTE_TLS_INSECURE=true)
31. #BACK_BUSINESS VM1 -> VM2: `curl -sS --cacert /etc/han/ca/vm2-internal-ca.crt "https://processing.internal:8443/internal/safety/status" | python3 -m json.tool` В коде захардкожен Redis в components = "degraded". Надо реализовать реальную проверку вместо костыля.
32. #BACK_BUSINESS Решить проблему с обновлением сигнатур CLAMAV.
+30 -2
View File
@@ -33,10 +33,38 @@ bitrix_sync.request_bitrix_contact_rebind(
operator_id
)
# Копирование проекта на ВМ
# Публикация в сторе
Скачать keystore из Expo и выгрузить сертификат
cd C:\Users\MI\Documents\Assistent\HAN_chat_specification\VM4_Expo-mobile
npx eas-cli credentials -p android
Либо проще тут https://expo.dev/accounts/anzh/projects/han-chat/credentials/android/ru.han.chat
# Копирование отдельного файла на ВМ
Нужны 3 значения:
Keystore password
Key alias
Key password
+ архив с @anzh__han-chat-keystore.bak.jks
Далее создаем папку
идем в нее из терминала cd ........
Туда скачиваем из рустора pepk.jar
И даем две команды
java -jar pepk.jar `
--keystore=.\@anzh__han-chat-keystore.bak.jks `
--alias=<значение от expo> `
--output=.\pepk_out.zip `
--encryptionkey= <значение из стора>`
--include-cert
keytool -exportcert `
-alias <значение от expo> `
-keystore .\@anzh__han-chat-keystore.bak.jks `
-rfc `
-file .\upload_certificate.pem
Готовые файлы заливаем уже в рустор
@@ -0,0 +1,17 @@
INSERT INTO han_app.popular_questions (
id,
mnemonic,
locale,
question_text,
sort_order,
record_status
)
VALUES
(gen_random_uuid(), 'popular.patent_check', 'ru', 'Проверить патент', 20, 'A'),
(gen_random_uuid(), 'popular.rkl_check', 'ru', 'Проверить в РКЛ', 30, 'A')
ON CONFLICT (mnemonic, locale) DO UPDATE
SET
question_text = EXCLUDED.question_text,
sort_order = EXCLUDED.sort_order,
record_status = 'A',
updated_at = now();
@@ -0,0 +1,137 @@
# Создание уведомлений
## Публичные (инсерт в БД)
BEGIN;
INSERT INTO han_app.guest_notifications (
id,
notification_type,
notification_datetime,
header,
text,
priority_override,
date_expired,
price,
old_price,
instruction_url,
chat_message_text,
lifecycle_status,
closed_at,
record_status,
status_changed_at,
status_change_reason,
created_at,
updated_at,
updater_user_id
)
VALUES
-- 1. Авторизация
(
'019fa3e9-8d91-7199-8199-609916d48f04',
'authorize',
now(),
'Войдите в личный кабинет',
'Авторизуйтесь, чтобы всегда иметь возможность обратиться к экспертам',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
'active',
NULL,
'A',
NULL,
NULL,
now(),
now(),
NULL
),
-- 2. Установка приложения
(
'019fa3e9-8d91-722a-90df-e4824e23b354',
'install_app',
now(),
'Установите приложение HAN',
'Добавьте приложение на главный экран, чтобы сервис всегда был под рукой.',
NULL,
NULL,
NULL,
NULL,
'https://www.han0107.ru/app/how-install-pwa',
NULL,
'active',
NULL,
'A',
NULL,
NULL,
now(),
now(),
NULL
),
-- 3. Глобальная акция
(
'019fa3e9-8d91-7d19-8873-eefb2a60f116',
'promo_global',
now(),
'Специальное предложение',
'Узнайте подробнее об актуальной акции.',
NULL,
now() + interval '30 days',
NULL,
NULL,
NULL,
'Здравствуйте! Хочу узнать подробнее об акции.',
'active',
NULL,
'A',
NULL,
NULL,
now(),
now(),
NULL
),
-- 4. Глобальное предложение
(
'019fa3e9-8d91-7452-a13d-3d2518ea257d',
'ads_global',
now(),
'Нужна помощь?',
'Расскажем об услугах и подберём подходящее решение.',
NULL,
now() + interval '30 days',
NULL,
NULL,
NULL,
'Здравствуйте! Хочу получить консультацию по услугам.',
'active',
NULL,
'A',
NULL,
NULL,
now(),
now(),
NULL
)
ON CONFLICT (id) DO UPDATE SET
notification_datetime = EXCLUDED.notification_datetime,
header = EXCLUDED.header,
text = EXCLUDED.text,
priority_override = EXCLUDED.priority_override,
date_expired = EXCLUDED.date_expired,
price = EXCLUDED.price,
old_price = EXCLUDED.old_price,
instruction_url = EXCLUDED.instruction_url,
chat_message_text = EXCLUDED.chat_message_text,
lifecycle_status = 'active',
closed_at = NULL,
record_status = 'A',
status_changed_at = now(),
status_change_reason = 'guest_campaign_republished',
updated_at = now();
COMMIT;