1 мин на чтение

МВП за два дня: конструктор запросов к SPARK без команды

Появилась идея внутреннего сервиса: дать аналитикам и продукту интерфейс, где запрос к SPARK собирается из блоков, а не из сырого SQL в Jupyter. Полноценной команды не было — я один, плюс доступ к корпоративным LLM.

Зачем

Раньше типовой путь выглядел так: описать задачу инженеру данных, дождаться скрипта, прогнать на кластере, поправить фильтры. Для частых срезов по одним и тем же таблицам это дорого по календарю. Нужен был МВП: сохранённые шаблоны, визуальные фильтры, отдача в API, чтобы фронт или другой сервис мог дернуть готовый запрос.

Что использовал

  • Cursor — навигация по репозиторию, рефакторинг, быстрые правки по диффу.
  • Claude Code — каркас модулей, Pydantic-схемы, заготовки тестов.
  • Внутренние LLM-агенты — политики компании, без утечки данных наружу.

За два рабочих дня агенты накидали:

  • FastAPI-бэкенд с CRUD по сохранённым запросам и метаданным таблиц;
  • черновой Swagger / OpenAPI;
  • простую модель «таблица → колонки → фильтры → превью SQL».

Прототип UI собирал в v0: drag-and-drop блоки, превью JSON и кнопка «Run Query». Это не прод, но на демо заказчику хватило, чтобы обсудить сценарии без макетов в Figma.

Где ушло реальное время

Код появлялся быстро. Около 80% усилий ушло не на генерацию, а на:

Область Что пришлось делать руками
Тестирование Граничные типы колонок, пустые фильтры, таймауты к SPARK
Архитектура Разделить слой «сборка SQL» и «исполнение», убрать дубли в сервисах
Безопасность Роли, лимиты на таблицы, запрет произвольных подзапросов, аудит

Модель охотно добавляла «удобные» эндпоинты без проверки прав. Один такой метод с доступом к произвольной таблице я вырезал уже на ревью с коллегой из безопасности.

Итог

AI ускоряет старт: каркас, бойлерплейт, документация. Инженер всё равно нужен — за контракт API, за то, что уйдёт в прод, и за то, что агент не увидит в промпте. МВП за два дня — правда. Путь до «можно отдавать смежникам без присмотра» — отдельная история, измеряется неделями.

Подключить реальный пул к SPARK, вынести сборку SQL в отдельный модуль с юнит-тестами на строки, согласовать SLA с платформой данных. UI из v0 — только референс; в прод пойдёт внутренний React, если МВП одобрят.

Метки:

Дата изменения: