diff --git a/docs/stack.md b/docs/stack.md index e38a05e..72a8397 100644 --- a/docs/stack.md +++ b/docs/stack.md @@ -1,7 +1,7 @@ # Стек технологий и архитектура развёртывания **Проект:** АС «Платформа ОПОРА РОССИИ» -**Статус:** согласовано +**Статус:** согласовано (бэкапы отложены, выбор LLM — в тестировании) **Дата:** 26.09.2026 --- @@ -29,9 +29,9 @@ | Контейнеризация | **Docker Engine + Docker Compose** | Один сервер; задел под Kubernetes при росте | | Reverse proxy / TLS | **Nginx + Certbot (Let's Encrypt)** | HTTPS, статика фронтенда | | Мониторинг | **Prometheus + Grafana + Loki** | Метрики, логи, алерты | -| Бэкапы | **pgBackRest** (БД) + **rclone** (файлы, offsite) | Ежесуточно, хранение ≥ 30 дней | +| Бэкапы | **Отложены** (см. раздел 5) | Принятый риск на текущем этапе | | CI/CD | **GitLab CI** | Сборка образов, деплой на сервер | -| AI-ассистент «Зам» | **Внешний LLM API: OpenRouter / PiAPI** | Без GPU; только обезличенный контекст (см. раздел 6) | +| AI-ассистент «Зам» | **Внешний LLM API: OpenRouter / PiAPI** | Без GPU; выбор модели — в тестировании (см. раздел 8) | --- @@ -63,7 +63,6 @@ └────────────────────┘ Мониторинг: Prometheus + Grafana + Loki - Бэкапы: pgBackRest → внешний диск + offsite (rclone) AI: внешний LLM API (OpenRouter / PiAPI) — только обезличенные данные ``` @@ -81,7 +80,6 @@ | `redis` | Redis | | `minio` | S3-совместимое хранилище артефактов | | `prometheus` / `grafana` / `loki` | Мониторинг и логи | -| `pgbackrest` | Резервное копирование БД | --- @@ -93,7 +91,7 @@ | CPU | **Intel Xeon** | | RAM | **16 ГБ** | | GPU | **нет** (AI — через внешний API) | -| Диск | SSD — уточнить объём (рекомендуется ≥ 500 ГБ + отдельный диск под бэкапы) | +| Диск | **SSD, единый** (отдельного диска под бэкапы нет) | | Сеть | **статический IP** | | Домен | **opora.my-dpr.ru** (тестовый) | | TLS | **Let's Encrypt** (Certbot, автообновление) | @@ -104,13 +102,16 @@ ## 5. Надёжность и резервное копирование -- Ежесуточный бэкап PostgreSQL (pgBackRest) + архивация WAL для point-in-time recovery. -- Бэкап артефактов (MinIO) — ежесуточно через rclone. -- **Схема хранения (рекомендация):** локальный внешний диск/NAS + offsite-копия в S3-совместимое хранилище РФ (Selectel / Yandex Object Storage / VK Cloud). -- Хранение ≥ 30 дней (п. 4.1.9 ТЗ). -- Восстановление — не более 24 ч (п. 4.1.4 ТЗ). -- Ежеквартальная проверка восстановления из бэкапа. -- Мониторинг доступности и алерты (Prometheus + Alertmanager). +**Решение заказчика: бэкапы на текущем этапе отложены.** + +Принятый риск: при сбое диска или ошибке данные могут быть потеряны безвозвратно. Рекомендация на будущее (не блокирует старт): + +- минимальный `pg_dump` раз в сутки на внешнее хранилище (offsite, S3-совместимое в РФ) — дёшево и снимает основной риск; +- бэкап артефактов (MinIO) через rclone; +- хранение ≥ 30 дней (п. 4.1.9 ТЗ); +- восстановление — не более 24 ч (п. 4.1.4 ТЗ). + +Мониторинг доступности и алерты (Prometheus + Alertmanager) — в объёме. --- @@ -143,17 +144,35 @@ OpenRouter и PiAPI — зарубежные сервисы, данные ухо --- -## 8. Открытые вопросы +## 8. AI-ассистент: тестирование моделей -1. **Объём диска** сервера (SSD) и наличие отдельного диска под бэкапы. -2. **Offsite-хранилище** для бэкапов — подтвердить провайдера (Selectel / Yandex / VK) или второй диск. -3. **Модель LLM** для ассистента (выбор через OpenRouter/PiAPI) — уточнить на этапе техпроекта. -4. **Реестр отечественного ПО** — нужен ли в перспективе (влияет на миграцию ОС/СУБД). +Выбор LLM — в тестировании. Критерии оценки: + +| Критерий | Что проверяем | +|---|---| +| Русский язык | Качество текста, терминология («точка 0», «прирост», «красная зона») | +| Function calling | Надёжность вызова инструментов (заполнить карточку, создать задачу, загрузить артефакт) | +| Стоимость | Цена за 1M токенов, оценка месячного бюджета | +| Скорость | Латентность ответа | +| Контекст | Размер окна (сводки по 89 регионам) | +| Стабильность | Повторяемость структурированного вывода (JSON) | + +Кандидаты (через OpenRouter): GPT-4o / GPT-4o-mini, Claude (Sonnet/Haiku), Gemini Flash, Qwen, DeepSeek, Mistral. +PiAPI — уточнить назначение (генерация изображений/медиа для артефактов или LLM). --- -## 9. Следующие шаги +## 9. Открытые вопросы -1. Уточнить объём диска и offsite-хранилище (раздел 8). +1. **Модель LLM** — по результатам тестирования (раздел 8). +2. **Назначение PiAPI** — LLM или генерация медиа. +3. **Бэкапы** — когда включать (отложено). +4. **Реестр отечественного ПО** — нужен ли в перспективе. + +--- + +## 10. Следующие шаги + +1. Провести тестирование LLM-моделей (раздел 8). 2. Утвердить документ. 3. Перейти к техническому проекту: структура БД, контракты API, макеты экранов.