Косметические правки по фронту, раскатка приложения в продакшн версии, исправление бага с созданием контакта
This commit is contained in:
+17
-18
@@ -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
@@ -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;
|
||||
Reference in New Issue
Block a user