Commit graph

12 commits

Author SHA1 Message Date
ed0ss
98717f3838 docs: раздел конфигурации (.env) в README, шаблон .env.example
Some checks are pending
CI / lint-backend (push) Waiting to run
CI / lint-frontend (push) Waiting to run
CI / build-backend (push) Blocked by required conditions
CI / build-frontend (push) Blocked by required conditions
2026-06-25 14:27:35 +03:00
ed0ss
11d018d4f6 feat: docker-compose для локального запуска, .env.example, инструкция в README
Some checks are pending
CI / lint-backend (push) Waiting to run
CI / lint-frontend (push) Waiting to run
CI / build-backend (push) Blocked by required conditions
CI / build-frontend (push) Blocked by required conditions
2026-06-25 12:24:57 +03:00
ed0ss
14025ae30d fix: передача реальной ошибки LLM в ответ (вместо null)
Some checks are pending
CI / lint-backend (push) Waiting to run
CI / lint-frontend (push) Waiting to run
CI / build-backend (push) Blocked by required conditions
CI / build-frontend (push) Blocked by required conditions
2026-06-25 12:15:45 +03:00
ed0ss
348b744960 chore: убран отдельный IngressRoute для api.sovet.itoservice.ru, API доступен через sovet.itoservice.ru
Some checks are pending
CI / lint-backend (push) Waiting to run
CI / lint-frontend (push) Waiting to run
CI / build-backend (push) Blocked by required conditions
CI / build-frontend (push) Blocked by required conditions
2026-06-25 12:11:43 +03:00
ed0ss
4166c6f0ef chore: смена LLM модели на openrouter/owl-alpha
Some checks are pending
CI / lint-backend (push) Waiting to run
CI / lint-frontend (push) Waiting to run
CI / build-backend (push) Blocked by required conditions
CI / build-frontend (push) Blocked by required conditions
2026-06-25 12:01:06 +03:00
ed0ss
5f6ad253de docs: обновление README, мёрж feat/rest-api в master
Some checks are pending
CI / lint-backend (push) Waiting to run
CI / lint-frontend (push) Waiting to run
CI / build-backend (push) Blocked by required conditions
CI / build-frontend (push) Blocked by required conditions
- README.md полностью переписан под текущую архитектуру: K8s + FastAPI +
  React + Qdrant + OpenRouter
- Добавлена документация REST API v1 с примерами curl
- Добавлена информация об очистке ПД, дедупликации, архитектуре
- Мёрдж ветки feat/rest-api: новый роутер /api/v1/ с API-ключом
2026-06-25 11:55:55 +03:00
ed0ss
69c2bc114b feat: внешний REST API v1 с аутентификацией по API-ключу
- Добавлен роутер /api/v1/ с аутентификацией через API-ключ
- Endpoints: GET /api/v1/me, PATCH /api/v1/me/api-key,
  GET /api/v1/collections, POST /api/v1/tickets, POST /api/v1/search
- На странице настроек: копирование и сброс API-ключа
2026-06-25 11:43:51 +03:00
ed0ss
c4924b4da8 feat: раскрытие полного текста тикета по клику в результатах поиска
Some checks failed
CI / lint-backend (push) Has been cancelled
CI / lint-frontend (push) Has been cancelled
CI / build-backend (push) Has been cancelled
CI / build-frontend (push) Has been cancelled
- Добавлено поле full_text в SourceItem (бэкенд)
- Фронтенд: клик по строке тикета раскрывает/скрывает полный текст
2026-06-20 20:11:58 +03:00
ed0ss
522fb7717e feat: очистка персональных данных перед сохранением в Qdrant
- Добавлена функция sanitize_pii() в chunking.py
- Удаляются номера телефонов, email-адреса, русские имена в обращениях
- Фикс NON_SOLUTION убраны ложные срабатывания на штатные фразы закрытия
2026-06-20 20:10:28 +03:00
ed0ss
41af532e7b fix: масштабные исправления и улучшения бэкенда и фронтенда
Some checks are pending
CI / lint-backend (push) Waiting to run
CI / lint-frontend (push) Waiting to run
CI / build-backend (push) Blocked by required conditions
CI / build-frontend (push) Blocked by required conditions
Бэкенд:
- TicketInput: ticket_id принимает int | str, приводится к str (было 500 на числовых ID)
- LLM: добавлен импорт logger, обработка 429 и не-200 ответов от OpenRouter
- Смена модели на poolside/laguna-m.1:free (обход лимитов OpenRouter)
- Добавлен GET /api/collections/{id} — получение коллекции по ID
- Дедикат заявок: hash() заменён на детерминированный hashlib.md5
  для ID точек в Qdrant (раньше после рестарта пода создавались дубликаты)
- Добавлена get_existing_ticket_ids() — проверка дубликатов до эмбеддинга,
  пропуск уже загруженных заявок
- Мультитенантная изоляция: tenant_id + collection_id во всех фильтрах Qdrant
- Эмбеддинги: заменён несовместимый openai SDK на прямой httpx
- Реренкинг: исправлен доступ к ScoredPoint.payload через .get()
- Чанкинг: расширены роли (support/operator/agent + client/user/customer)
- bcrypt: понижен до 4.0.1 (5.x несовместим с passlib)

Фронтенд:
- Регистрация: добавлен выбор тарифа (free/starter/pro)
- CollectionView: ticket_count загружается с бэкенда при монтировании
  (раньше жил только в React-состоянии — сбрасывался после обновления страницы)
- uploadFile: используется getToken() вместо устаревшей переменной token,
  в ошибке показывается реальный HTTP-статус
- Nginx: увеличен client_max_body_size до 50M для загрузки файлов
- k8s: добавлены манифесты namespace, postgres, redis, qdrant, backend,
  frontend, ingress, traefik
2026-06-20 19:51:58 +03:00
ed0ss
0063df0a87 Реструктуризация проекта в SaaS: FastAPI бэкенд, React SPA фронтенд, Helm-чарт, CI/CD
Some checks are pending
CI / lint-backend (push) Waiting to run
CI / lint-frontend (push) Waiting to run
CI / build-backend (push) Blocked by required conditions
CI / build-frontend (push) Blocked by required conditions
- Бэкенд: FastAPI + SQLAlchemy async + PostgreSQL, JWT-аутентификация,
  Qdrant multi-tenant векторное хранилище, Celery воркер
- Фронтенд: React + Vite + TypeScript SPA (логин, регистрация,
  дашборд, поиск по коллекциям, настройки)
- Инфраструктура: docker-compose, Helm-чарт, GitHub Actions CI,
  Prometheus/Grafana мониторинг
- Embedding через OpenRouter (nvidia/llama-nemotron-embed-vl-1b-v2:free)
- LLM: google/gemma-4-31b-it:free через OpenRouter
2026-06-20 17:40:27 +03:00
ed0ss
fa620edcf8 Initial commit 2026-06-20 16:07:21 +03:00