feat: default locale Russian, geo determines language for other countries

- localization-svc: defaultLocale ru, resolveLocale only by geo
- web-svc: DEFAULT_LOCALE ru, layout lang=ru, embeddedTranslations fallback ru
- countryToLocale: default ru when no country or unknown country

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
home
2026-02-23 15:10:38 +03:00
parent 8fc82a3b90
commit cd6b7857ba
606 changed files with 26148 additions and 14297 deletions

View File

@@ -0,0 +1,108 @@
# Production checklist и требования
## 0. Узкие места и митигации
| Область | Узкое место | Митигация (внедрено/требуется) |
|---------|-------------|---------------------------------|
| **Пользователь** | Холодный старт 530 с | Skeleton, timeout, Retry — см. §8 UI/UX |
| **Пользователь** | Загрузка файлов 30300 с | Прогресс по этапам + кнопка Cancel; pre-upload preview |
| **Пользователь** | Гости: история теряется | Предупреждение при закрытии; CTA «Сохранить в аккаунт» |
| **Пользователь** | Rate limit 300 Pro Search/день | 429 + предупреждение при 80%; предложение апгрейда |
| **Инфраструктура** | SearXNG — единый инстанс | Очередь запросов в search-svc; при росте — пул инстансов |
| **Инфраструктура** | cache-worker зависает | `activeDeadlineSeconds` во всех CronJob (520 мин) |
| **Инфраструктура** | Redis/PostgreSQL без HA | Sentinel/Cluster и Read replica при масштабировании |
| **Инфраструктура** | travel-svc без HPA | HPA 14 replicas добавлен в 02-k3s-microservices-spec |
| **Функции** | Внешние API (LLM, FMP, TA) | Retry + circuit breaker; fallback при частичном сбое |
## 1. Инфраструктура
| Компонент | Helm chart | Namespace |
|-----------|------------|-----------|
| Redis | bitnami/redis | perplexica-infra |
| PostgreSQL | bitnami/postgresql | perplexica-infra |
| MinIO | bitnami/minio | perplexica-infra |
| SearXNG | Deployment | perplexica-infra |
## 2. Secrets
- notifications-secrets (vapid_public, vapid_private, smtp_url)
- redis-credentials (url)
- db-credentials (url)
- auth-secrets (jwt_secret)
- llm-credentials (openai)
- finance-keys (fmp)
- travel-keys (tripadvisor)
- yookassa-credentials (shop_id, secret)
## 3. Сетевые политики (NetworkPolicy)
- Ingress: только из ingress-controller
- chat-svc → search-svc, Redis
- cache-worker → Redis, discover-svc, finance-svc, travel-svc
- Redis, PostgreSQL: без внешнего доступа
## 4. PodDisruptionBudget
Минимум 2 доступных пода для: chat-svc, search-svc.
## 5. Observability
- Prometheus: метрики `/metrics` из каждого сервиса
- Grafana: дашборды
- Structured JSON логи
- OpenTelemetry/Jaeger: распределённые трейсы
- Алерты: latency, error rate, availability
## 6. Резервирование и масштабирование
| Область | Решение |
|---------|---------|
| chat-svc | HPA, кэш по query_hash |
| Redis | Sentinel / Cluster при росте |
| PostgreSQL | Read replica, PgBouncer |
| SearXNG | Очередь запросов в search-svc/media-svc; кэш media; при росте — пул инстансов |
| cache-worker | Ограничение concurrency, batch size; `activeDeadlineSeconds` для защиты от зависаний |
## 7. Безопасность
- CORS: ограничить Access-Control-Allow-Origin
- Rate limiting: API Gateway / Ingress
- TLS (cert-manager / Let's Encrypt)
- Retry + circuit breaker для внешних API (FMP, Tripadvisor, LLM)
## 8. UI/UX
| Компонент | Требование |
|-----------|------------|
| Discover, Finance, Travel | Skeleton при cold start; timeout; Retry |
| Pro/Deep Search | Этапы (Classifier → Researcher → Writer); оценка времени |
| Загрузка файлов | Прогресс по этапам: парсинг → chunking → эмбеддинги; кнопка Cancel; timeout 300 с |
| Гости | Предупреждение при закрытии; CTA «Сохранить в аккаунт» для переноса истории |
| Rate limit | 429 + предупреждение при 80% лимита; предложение апгрейда при достижении лимита |
| Ошибки | Сообщение + Retry/Cancel |
| Travel Stepper | Сохранение состояния; skeleton между шагами |
| Медиа | Skeleton grid; 15 с timeout |
## 9. Чек-лист развёртывания
- [ ] Ingress path-based routing
- [ ] Probes /health, /ready во всех сервисах
- [ ] HPA: chat-svc, search-svc, discover-svc, finance-svc, travel-svc, upload-svc, memory-svc
- [ ] Redis, PostgreSQL, MinIO, SearXNG
- [ ] Secrets
- [ ] TLS
- [ ] Rate limiting
- [ ] Prometheus + алерты
- [ ] Backup PostgreSQL, MinIO
- [ ] PDB для chat-svc, search-svc
- [ ] Runbook оператора
- [ ] UI/UX: skeleton, timeout, rate limit feedback, guest warning, file upload progress+cancel
## 10. Ссылки (внутри architecture)
- [04-pages-logic-verification.md §9](./04-pages-logic-verification.md#9-покрытие-фич-perplexity-20252026) — покрытие vs Perplexity 2026
- [06-roadmap-specification.md](./06-roadmap-specification.md) — roadmap и спеки фич
- [01-perplexity-analogue-design.md](./01-perplexity-analogue-design.md)
- [02-k3s-microservices-spec.md](./02-k3s-microservices-spec.md)
- [03-cache-and-precompute-strategy.md](./03-cache-and-precompute-strategy.md)
- [04-pages-logic-verification.md](./04-pages-logic-verification.md)