Travelmart · AI Hello
Внутренний обзор · 2026

AI для команды
Travelmart

Что мы уже запустили в проде, как дать всей команде доступ из России, и что меняется в работе аналитика, разработчика, продакта и QA.

Часть 1 · Где мы стоим

У нас уже работает Claude в продакшене

vipzal-chat.govori.io — production AI-чат, отвечает посетителям сайта о ВИП-залах, fast-track, бизнес-залах. Сегодня. Без нашего участия.

FastAPI
Python 3.12 backend
pgvector
Семантический поиск услуг
Sonnet 4.6
через Claude API + tool use
prompt cache
экономия ~80% токенов на системе
Что Claude делает прямо сейчас
  • Ищет услугу по описанию (e5-base embeddings)
  • Достаёт актуальные цены через get_price
  • Проверяет доступность на дату через check_availability
  • Генерирует кнопку «Заказать» в нужный модуль виджета
Что это значит

Мы уже умеем: ставить Claude в production-цикл, давать ему tools, индексировать свою базу знаний, кешировать промпт.

Это не «попробуем когда-нибудь». Это инженерная база, на которую ляжет всё дальше.

Часть 1 · Где мы стоим

Где AI вписывается в наш стек

Цвет персиковый — где Claude уже работает или встанет в ближайших итерациях.

Frontend / виджеты

vipzal-admin · Vue 3.5 Pinia · Tailwind v4 Reka UI · Shadow DOM vipzal-chat widget.js vipzal-order-widget

Backend / API

vipzal · PHP / Yii2 MySQL · Redis widgets-api / v3 vipzal-chat · FastAPI tools: search, price, availability

Знания / индексы

pgvector · e5-base service_doc index Notion · Tracker README / CLAUDE.md codebase index (план)
Тезис

Большинство «новых» AI-сценариев в команде — это переиспользование того, что уже стоит: тот же pgvector, та же модель эмбеддингов, тот же tool-use паттерн. Меняются только индексы и инструменты.

Часть 2 · Доступ из России

Anthropic API напрямую из РФ — не работает

Региональные ограничения, банки, IP-фильтры. Каждый разработчик решает сам — VPN, чужой ключ, не пользуется вовсе. Это и небезопасно, и неуправляемо.

Что ломается

  • Подписка / биллинг с российской карты
  • Console.anthropic.com по российскому IP
  • Веб-чат claude.ai

Что обычно делают

  • VPN на каждое подключение
  • Один общий ключ на чате коллег
  • Используют OpenRouter / прокси-сервисы

Чем это плохо

  • Нет контроля над тем, что и куда уходит
  • Нет учёта расходов по командам
  • Утечка ключа = утечка лимита всей компании
Часть 2 · Доступ из России

Решение — один gateway на всю компанию

VPS вне РФ → один корпоративный API-ключ → у каждого разработчика локальный клиент, который ходит через нас.

01

Клиент

Claude Code / IDE / CLI / browser-app

02

Gateway

VPS · Caddy/Traefik · auth · audit · rate limit

03

Anthropic

Один корпоративный ключ, биллинг сводится

Что это даёт

  • Каждому — свой персональный токен в личном кабинете
  • Учёт: кто, сколько, на каких задачах
  • Аудит запросов (метаданные, не контент)
  • Ротация и отзыв доступа за минуту

Что для этого надо

  • VPS вне санкционного периметра (он у нас уже есть — там стоит vipzal-chat)
  • Reverse-proxy и SSL (Traefik уже работает)
  • Тонкая прослойка: 200 строк Python — не стартап
Часть 2 · Доступ из России

Что внутри gateway

Не «давайте напишем proxy». Минимальный набор, который должен быть с первого дня.

Auth

SSO через корп. почту → персональный API-токен. Сотрудник уволился — токен мгновенно отзываем.

Audit log

Кто, когда, какая модель, сколько токенов. Тело сообщения по умолчанию НЕ пишем — только метаданные.

Rate limit + budget

Per-user квота в день, hard-cap на месяц. Алерт если кто-то «застрял в цикле» и съел дневную норму за час.

Routing

Один endpoint, под капотом — Sonnet/Opus/Haiku в зависимости от задачи и бюджета. Команды не выбирают модель руками.

# Что увидит ваш Claude Code
export ANTHROPIC_BASE_URL=https://ai.travelmart.tech
export ANTHROPIC_API_KEY=tm_personal_xxx...

# Дальше — обычный claude code, обычный SDK, всё одинаково
A
Аналитики · постановщики задач

Поиск по своей же документации перед тикетом

Что больно сейчас

  • Прежде чем заводить задачу — ищешь, не делалось ли уже
  • Документация размазана: Notion, Tracker, README, личные заметки
  • Поиск Notion не понимает синонимы и переформулировки
  • В итоге дублируешь требования или просишь дев — «глянь, ты помнишь?»

Что меняет AI

  • Один индекс: Notion + Tracker + README + код (тот же pgvector, что в vipzal-chat)
  • Семантический поиск: «фастпасс с приоритетным проходом» = «fast-track» = «ускоренный проход»
  • Агент не отдаёт ссылки — он отвечает кратко и даёт ссылки в конце как пруф
  • Сразу видишь: «такая задача уже была в VIP-7124, статус Released»
Пример сценария

«Партнёр просит, чтобы fast-track можно было купить за 30 минут до вылета.»

Агент находит: ограничение в check_availability уже учитывает advance_booking_minutes. В Tracker была задача VIP-6982, мы этот параметр сделали настраиваемым. Аналитику — оформить запрос на настройку у конкретного партнёра, а не на разработку.

A
Аналитики · постановщики задач

Письмо партнёра → структурированная постановка

Что больно сейчас

  • Партнёр присылает 4 абзаца текста с 5 разными хотелками
  • Часть — уже есть, часть про другой модуль, часть нерелевантна
  • Чтобы развести их по тикетам, надо уметь читать между строк

Что меняет AI

  • Вставил письмо → агент даёт черновик: 3 задачи, для каждой — модуль, тип, acceptance criteria
  • Сверяется с индексом: «вот это уже сделали в VIP-6741»
  • Спрашивает, чего не хватает — не угадывает
  • На выходе — готовый текст для Tracker, не «творчество»
// Что агент возвращает аналитику
{ "requests": [
    { "summary": "Оплата Tinkoff Junior", "module": "order3/payment",
      "existing": "VIP-7041 (отказали)", "action": "уточнить у партнёра" },
    /* …ещё 2 задачи */
  ],
  "questions_to_partner": ["Какой банк выпустил карту?"] }
D
Разработчики · Yii2 + Vue 3

Codebase Q&A: задаёшь вопрос — агент сам ходит по коду

Что больно сейчас

  • vipzal — 10 лет PHP/Yii2, десятки модулей, миграции, behaviors, components
  • Чтобы починить баг в цене — надо знать про calculation3, order3, bookkeeping
  • «Откуда берётся скидка для groupticket?» — ищется час по grep'у

Что меняет AI

  • Claude Code в агентном режиме: читает файлы, идёт по вызовам, грепает сам
  • Отвечает: «Скидка приходит из PriceModifier::groupDiscount, вызывается из CalcService::buildBreakdown, активируется при passenger_count >= 5. Покрытие тестами — нет»
  • Ссылается на конкретные строки. Можно проверить.
  • Работает и с Vue 3 / TypeScript, не только PHP
Демо в терминале
> Где в vipzal формируется цена для group-ticket?
# Claude читает 7 файлов, отвечает за 12с:
# calculation3/services/CalcService::buildBreakdown()
# → PriceModifier::groupDiscount() при passenger_count ≥ 5.
# Конфиг: modules.calc.groupDiscount в main-local.php
D
Разработчики · Yii2 + Vue 3

PR-review агент и генерация тестов из спеки

PR-Review агент

Делает за нас

  • Читает diff + контекст файлов целиком (не «по 200 строк»)
  • Проверяет: безопасность, краевые случаи, согласованность с соседними модулями
  • Не комментит «надо добавить точку с запятой» — это линтер
  • Пишет ровно то, что обычно пишет тимлид первой проходкой
Генерация тестов

Из чего

  • SPEC.md или acceptance criteria из тикета
  • + существующий код компонента
  • + примеры тестов из соседних файлов (стиль команды)

vipzal-admin уже на Playwright + Vitest. Стек поддерживается — агент пишет в вашем стиле, не «как умеет».

// vipzal-admin/tests/orders.spec.ts — сгенерил Claude из SPEC.md
test('фильтр по дате прилёта показывает только orders type=arrival', async ({ page }) => {
  await page.goto('/admin/orders');
  await page.getByRole('tab', { name: 'Прилёт' }).click();
  const rows = page.locator('[data-test="order-row"]');
  await expect(rows).toHaveCount(12);
  await expect(rows.first()).toContainText('arrival');
});
P
Продакты · vip-zal.ru

Discovery из Slack/тикетов и черновик SPEC

Что больно сейчас

  • 200 сообщений из корпоративного Slack про «надо бы добавить...»
  • 30 тикетов в Tracker про «не работает что-то»
  • Кластеризовать руками — полдня. К следующему планированию полдня нет

Что меняет AI

  • Загрузил пачку сообщений и тикетов — агент кластеризует по темам
  • «5 жалоб на медленный поиск услуги, 3 на ошибку даты, 8 на цены не сходятся»
  • Помогает сделать черновик SPEC: что входит / не входит, риски, открытые вопросы
  • Не подменяет продакта — ускоряет первый проход в 3-5 раз
Конкретный шаблон, который мы используем

SPEC writer = промпт + структура: Goal · Out-of-scope · Open questions · Acceptance · Risks. Продакт даёт freeform, агент возвращает заполненный шаблон. Дальше — только редактирование.

P
Продакты · vip-zal.ru

«Если выпилим X — кого ломаем?»

Самое страшное продактовое решение — что-то удалить. У нас 800k строк PHP, виджеты на партнёрских сайтах, публичный API v3. Просто так выпилить нельзя.

Шаг 1

Назвать кандидат на удаление

«Хотим удалить старый order2-flow»

Шаг 2

Агент находит все вызовы

контроллеры, виджеты, миграции, конфиги, тесты, документация

Шаг 3

Отчёт

«партнёр X использует endpoint, у партнёра Y запросы за последние 30 дней»

Это не «AI принимает решение». Это AI собирает фактуру за 5 минут, чтобы продакт смог принять решение, не дёргая инфру и двух разработчиков.

Q
QA · автотесты

Текстовый сценарий → готовый Playwright-тест

Что больно сейчас

  • Сценарий написан в тикете как «1. зайти 2. нажать»
  • Превратить в стабильный тест — это селекторы, ожидания, mock'и
  • Долго и скучно. Поэтому многие сценарии остаются ручными

Что меняет AI

  • Агент берёт сценарий + DOM нужной страницы (или Storybook)
  • Сразу пишет в стиле существующих тестов — использует data-test атрибуты
  • Добавляет нужные expect на границах
  • QA редактирует, а не пишет с нуля
Что мы делаем уже

vipzal-admin построен правильно — data-test атрибуты везде где надо. Это значит, агент не галлюцинирует селекторы, а берёт реальные. Это огромная разница в качестве сгенерированного теста.

Q
QA · автотесты

Bug triage и регрессионные обзоры PR

Triage входящих багов

Дубликат, regression, новое?

Агент сравнивает свежий тикет с историей в Tracker через тот же индекс, что у аналитиков. Возвращает: «похож на VIP-6920, сейчас Released» или «новый, не находится дубликатов».

Регрессионный обзор PR

Что мог сломать этот diff?

До прогона E2E-сьюта — агент даёт первое мнение: «изменили PriceModifier, прогоните регресс по модулям order3, calc, bookkeeping».

Не заменяет тестов. Уменьшает время «между PR и первой проверкой» с часов до минут.

F
Дизайнеры · UI / прототипы

Figma Make — насмотренность за 10 минут

AI-режим прямо внутри Figma. Описываешь словами — получаешь интерактивный прототип. Под капотом тот же Claude, что у нас в vipzal-chat.

Где сильно

Exploration / lookbook

  • 5 вариантов лендинга за время одного кофе
  • «Как мог бы выглядеть новый чекаут?» — до звонка с партнёром
  • Замена FigJam-вайрфреймов рабочими прототипами
Где средне

Дизайн-ревью

  • Ставим А/B-варианты рядом, обсуждаем
  • Партнёр трогает прототип на своём ноуте
  • Дальше — в Figma как обычно: компоненты, variants
Где НЕ надо

Коммит в прод-код

  • Это НЕ production code
  • Нет наших Tailwind-токенов и Reka UI
  • Vue 3.5 + Pinia — тоже не его профиль
Как мы это используем

Figma Make — инструмент дизайнера для насмотренности и ранних концептов. Оттуда переходим в нормальную Figma с Variables и Auto Layout, и уже её отдаём разработчику через MCP — это следующий слайд.

F
Дизайнеры × разработчики

MCP Figma: макет → код без «на глаз»

Figma Dev Mode + MCP-сервер. Claude Code видит Figma как источник контекста — берёт реальные имена компонентов, токены, размеры — а не угадывает.

01

Дизайнер

Выделяет компонент в Figma, шерит ссылку на selection

02

Claude Code

Через MCP вызывает get_metadataget_design_contextget_screenshot

03

Разработчик

Получает Vue/TS-черновик с нашими классами Tailwind и именами Reka UI

Чем это лучше «дизайнер кинул PNG»

  • Точные spacing/colors из Figma Variables, не «похожий синий»
  • Auto Layout → корректный flex/grid, без ручной интерпретации
  • Variants в Figma → variants в коде с тем же именем
  • Аннотации дизайнера про поведение — тоже в контексте

Главное оружие — Code Connect

Привязываем Figma-компонент к реальному Vue-компоненту в vipzal-admin. После этого MCP отдаёт LLM не «сделай похожее», а «импортни <OrderTable> с такими props».

Это разница между «первым черновиком» и «готовым PR'ом».

F
Дизайнеры + разработчики

Как сделать так, чтобы AI не косячил

Дизайнер · файл

Готовь под агента

  • Auto Layout везде, где responsive
  • Variables для color, spacing, radius, typography
  • Семантичные имена — CardContainer, не Group 5
  • Components + Variants для повторяемого
  • Annotations для поведения, которое не видно по визуалу
Разработчик · промпт

Сужай контекст

  • Указывай конкретный фрейм, не весь файл
  • Дай code-conventions: «Vue 3.5 + TS + Tailwind v4 + Reka UI»
  • Используй Code Connect — главный анти-галлюцинатор
  • Project-level instructions внутри MCP — «как онбординг для джуна»
Чего НЕ делать

Anti-patterns

  • Генерить целый экран в один пас
  • Доверять цветам без Variables — придумает палитру
  • Коммитить без ревью — это всё ещё черновик
  • Figma Make → прод. Это для exploration

Эффект на vipzal-admin: меньше итераций «это другой синий», меньше тикетов «дизайн не совпадает», и первый PR по новому компоненту часто зелёный в первом же ревью. MCP делает get_metadata → get_design_context → get_screenshot сам.

Часть 4 · Корпоративная среда

Что я строю — один gateway, агенты по ролям

Если каждый разработчик настраивает свой Claude как умеет — мы получим 12 разных решений и ноль накопления знаний. Делаем одно общее.

L1

Gateway

Один endpoint, SSO, audit, billing-учёт по командам

L2

Knowledge index

pgvector с Notion + Tracker + кодом + README

L3

Role agents

аналитик · dev · product · qa — разные tools, общий индекс

L4

Surfaces

Claude Code, Slack-бот, веб-консоль, виджет в Tracker

Главное в этой схеме — L2 Knowledge index. Это та же технология, что у нас уже работает в vipzal-chat, только источники и tools другие.

Часть 4 · Корпоративная среда

Documentation indexer: один источник правды

Notion + Yandex.Tracker + GitHub README + наши CLAUDE.md + ADR — всё в один pgvector. Обновление инкрементальное.

Что индексируем

  • Notion-страницы команд (с фильтром по разрешениям)
  • Tracker: title + description + comments
  • README, CLAUDE.md, ADR, SPEC.md из каждого репо
  • Slack-treады из каналов «product», «backend», «frontend»

Что НЕ индексируем

  • Личные DM
  • HR-документы, контракты, финансы
  • Production secrets, env-файлы
  • Любые персональные данные пассажиров
# Похоже на то, что уже есть в vipzal-chat/app/indexer.py
async def reindex():
    async with sources.notion(), sources.tracker(), sources.github():
        async for doc in stream_docs():
            chunks = chunk_with_overlap(doc, max_tokens=512)
            embeddings = await embed(chunks, model="e5-base")
            await db.upsert_chunks(doc.id, chunks, embeddings)
Часть 4 · Корпоративная среда

От фидбека к задаче за 3 шага

Тот самый сценарий, ради которого аналитики запросят AI первыми.

01

Capture

Письмо/Slack/звонок партнёра — как есть. Никакого «оформи правильно»

02

Resolve

Агент ищет в индексе: дубликат? уже сделано? в другом модуле?

03

Draft

Готовый черновик задачи в Tracker с ссылками на контекст. Аналитик доводит и нажимает Submit

Реальная экономия

Сейчас «оформить нормальный тикет» — это 30-60 минут (поиск контекста, ссылок, схожих задач). С агентом — 5-10 минут плюс редактирование. На команде из 5 аналитиков и 10 тикетов в неделю это ~25 часов в неделю.

Часть 4 · Корпоративная среда

Что Claude никогда не увидит

Перед запуском в команду — полный список «не уходит за периметр».

Никогда

  • Production БД vipzal
  • Persdata пассажиров (паспорт, телефон)
  • Платёжная информация
  • .env, ключи, секреты

С опаской

  • Privatne репо (через корп. ключ)
  • Внутренние ADR (доступ по ролям)
  • Контент Slack-каналов (только тех, что разрешены)

Свободно

  • Открытый код (vipzal-admin OSS-бандл)
  • Публичная документация
  • Tracker (с фильтром по permissions)
  • Корпоративный Notion

Anthropic не использует данные через API для обучения по умолчанию — это в DPA. Но это не освобождает нас от санитарии: всё чувствительное — санитизировать на уровне gateway, а не надеяться на другую сторону.

Часть 5 · Будущее

Что меняется в 2026

Контекст

1 млн токенов

Весь репо vipzal с документацией влезает в один промпт. Не надо больше «выбирать релевантные файлы» — модель сама.

Модальность

Скриншоты, PDF, видео

QA скидывает запись бага — агент описывает что увидел. Аналитик скидывает PDF договора — агент извлекает условия в структурированный вид.

Голос

Voice-агенты

Партнёр звонит — агент собирает структурированную заявку, продакт получает уже черновик. Голос → structured data сегодня уже работает.

Не всё это нужно «прямо сейчас». Но стоит закладывать в архитектуру — чтобы не переделывать gateway каждые 3 месяца, когда вышла новая способность.

Часть 5 · Будущее

Куда мы движемся

Уровень 1 · сейчас

AI как помощник

Зовут Claude вручную, когда нужно. Получают ответ, используют.

Уровень 2 · 2026

AI в цикле

Триггеры: новый PR → авто-ревью, новый тикет → авто-классификация.

Уровень 3 · позже

Автономные пайплайны

Регрессии, миграции, обновления зависимостей — без человека. Человек на аппрув.

Уровень 4 · cпекуляция

Self-healing продукт

Сайт сам замечает падение конверсии, открывает черновик задачи с данными.

Сейчас мы ровно на уровне 1. Между уровнями 2 и 3 — ближайшие 18 месяцев работы. Уровень 4 — скорее визия, чем план.

Часть 6 · Live

Спросите Claude прямо сейчас

У этой презентации внутри — тот же Claude, что в vipzal-chat. Он знает наш стек.

Кнопка «? Ask Claude» снизу — работает с любого слайда. Спрашивайте на ходу.

Часть 6 · Live

Как начать пользоваться завтра

Я уже выдаю персональные доступы — подходите после встречи. Дальше — один из трёх путей.

Путь 1 · разработчик

Claude Code

  • Установить claude-code CLI
  • Прописать ANTHROPIC_BASE_URL на корп. gateway
  • Открыть свой проект, спросить «расскажи, что тут»
Путь 2 · аналитик/PM

Веб-консоль gateway

  • Логин по корп. почте
  • Чат с индексом Notion + Tracker
  • Готовые шаблоны: «черновик задачи», «парсинг письма»
Путь 3 · QA

Slack-бот

  • Тегаешь @ai в своём канале
  • «Сгенери тест по этой спеке» — получаешь PR с драфтом
  • Не надо переключать контекст

Вопросы? — нажмите ? или кнопку Ask Claude снизу справа.

P. S.

Самое важное под конец

В 2026 году Claude делает code-review,
Cursor пишет первый черновик,
CI катит миграции сам.

Кот по-прежнему спит на клавиатуре
и иногда жмёт git push --force --no-verify.

Кот — последний компонент продакшна,
который AI не может заменить.

— спасибо, что досмотрели

Открыть на своём телефоне: persona.govori.io · листать дальше можно прямо там, любой слайд — по ссылке #02, #15 и т. д.

Оглавление