Claude/PHP developer (Symfony, e-commerce) — Россия, Москва
200 000–300 000 ₽
ОткликнутьсяЛокация: Россия, Москва
Формат: Удалённая работа
Занятость: Полная занятость
Грейд: Senior
На полностью удалённую постоянную работу ищем опытного PHP-разработчика.
Задача: развитие сервиса публикации коллекционных лотов в Ozon, Wildberries, Яндекс Маркет и Монетник. Код пишет Claude, а вы решаете, каким ему быть.
В двух словах
Проект забирает коллекционные лоты (монеты, банкноты, значки) из источников и публикует их на Ozon, Wildberries, Яндекс Маркете и Монетнике. Один лот становится карточками на нескольких площадках сразу, и все они должны жить синхронно. Лот продали в источнике — остаток везде уходит в ноль. Лот подешевел — меняется цена. Пришёл заказ — его нужно собрать, отгрузить и провести по деньгам.
Ошибка здесь стоит дорого и видна не сразу. Площадка может ответить «импорт прошёл успешно» и отклонить карточку в личном кабинете. За запрещённый товар магазин получает штраф или блокировку, поэтому есть стоп-лист который работает по принципу fail-closed: всё, что система не может распознать, не публикуется.
Проект начался в мае 2026 года. Он уже работает в бою: публикует карточки, отправляет остатки и цены, принимает заказы и возвраты, а у продавцов есть свой кабинет. То есть проект уже даёт реальную выручку и прибыль.
Главное условие: код пишется только через Claude
Весь код проекта пишет Claude Code, агент Anthropic. Ручного кода в IDE нет, и это осознанное решение, а не эксперимент.
Что это значит на практике:
• Вы ставите задачу, проектируете решение и проверяете результат. Агент пишет код, тесты, миграции и документацию. Вы читаете дифф, находите, где агент ошибся, и не пропускаете ошибку дальше.
• Стандарт команды — это файлы правил в репозитории (CLAUDE.md). Если агент повторяет одну и ту же ошибку, правим правило, а не только код. Каждое правило записано с датой и причиной.
• Без зелёного гейта коммита нет. Перед каждым коммитом проходят PHPStan, PHP_CodeSniffer и PHPUnit. Перед релизом крупной фичи по диффу ветки проходит отдельный агент-ревьюер, и его замечания закрываются до сквоша.
• Писать код руками вы не будете. Если это для вас главное удовольствие в профессии, эта вакансия вам, скорее всего, не подойдёт. А если интереснее проектировать, ревьюить и сразу выпускать результат, она как раз для вас.
Опыт работы с Claude Code или другим агентом на реальном проекте — большой плюс. Готовность работать только так — обязательное условие.
Объём данных: сейчас
Лотов в базе~38 000, опубликованных карточек~35 500
Фото~139 000 файлов, 32 ГБ
Ограничения внешних систем здесь важнее железа. API источника отдаёт список лотов целиком, без пагинации, а детали лота — по одному запросу в секунду. Поэтому полная синхронизация деталей 20 000 лотов идёт около 5,5 часа и почти не укладывается в собственный период. Задачи такого рода решаются расписанием, лимитерами и идемпотентностью, а не покупкой сервера помощнее.
Объём данных: куда растём
• Лоты: прирост ускоряется. В августе добавилось 7 800 лотов, в сентябре 11 900, в октябре 17 200.
• Фото: от 300 тысяч до 1 миллиона. Сейчас их 139 тысяч, и каждый месяц прибавляется 55–65 тысяч. В темпе октября 300 тысяч будет через три месяца, миллион — примерно через год. Под фото на сервере 200 ГБ, а миллион кадров займёт около 230 ГБ, поэтому на очереди отдельный поддомен. Платные ИИ-шлюзы на таком объёме невыгодны на два порядка, поэтому кадры уже обрабатывает наш собственный ML-сервис.
• Площадки: Ozon, Wildberries, Яндекс Маркет, Монетник. У каждой свой API и свои правила карточки. У одной из площадок нет ни списка товаров, ни пакетных методов, поэтому идемпотентность и восстановление после потерянного ответа целиком на нашей стороне.
Стек
Бэкенд
• PHP 8.5: асимметричная видимость private(set), array_find / array_any, final readonly сервисы, типизированные константы.
• Symfony 8.0: Messenger, Scheduler, RateLimiter, Lock, Security, HttpClient, ObjectMapper, Serializer, Validator.
• Doctrine ORM 3.6 и Migrations, все запросы строятся через QueryBuilder.
• PostgreSQL 18: ltree для дерева категорий, jsonb для payload карточек, журнал изменений на триггерах.
• RabbitMQ 4 (очередь на каждый обработчик) и Redis 8.
• OpenAPI-контракт выгружается из кода (NelmioApiDoc), фронтенд генерирует по нему клиент. Два API: админка и кабинет продавца.
• dompdf (лист подбора), poppler (PDF-этикетки Ozon превращаются в картинку для телефона).
Фронтенд (отдельный репозиторий):
Vue 3, Quasar 2, TypeScript, Vite, pnpm, клиент генерирует orval, моки — MSW, графики — echarts. Две SPA: админка и кабинет продавца.
Вокруг
• image-processor: свой ML-сервис на FastAPI и onnxruntime, server side ИИ модель обработки фото.
• ИИ-шлюзы: , OpenAI, Gemini — разбор названий и обработка кадра.
• Внешние API: API площадок (Ozon Seller API и другие).
• Инфраструктура: Docker Compose для dev и prod, Caddy со строгим CSP, GitLab CI (сборка и деплой), рецепты just.
Качество
• PHPStan, PHP_CodeSniffer, PHP CS Fixer.
• PHPUnit: наборы Unit и Integration, интеграционные тесты идут на настоящем PostgreSQL.
• Тестов больше, чем кода: ~61 тыс. строк в src/ и ~67 тыс. в tests/.
Что уже ждёт в бэклоге
• Публикация товаров в новые площадки: Wildberries, Yandex Market, . У каждой площадки свои карточки, фото и остатки.
• Хранилище для миллионов фото: отдельный static-поддомен.
• Импорт заказов realFBS через СДЭК: отгрузка, этикетка, акт, ПВЗ.
• Модерация карточек Ozon после импорта и ежедневная сверка «наши строки ↔ товары Ozon».
• Финансы: начисления, прибыль заказа, отчёты.
• ИИ-разбор лота одним вызовом: название, модель, описание.
• Перевод оставшегося кода на новую раскладку слоёв.
Кого ищем
Обязательно
• Уверенно знаете PHP 8 и Symfony, работали с Doctrine. Можете прочитать дифф агента и аргументированно его отклонить.
• Знаете PostgreSQL: индексы, планы запросов, jsonb, транзакции.
• Понимаете очереди: идемпотентность, повторы, порядок сообщений, память долгоживущих воркеров.
• Готовы работать через Claude Code.
• Точно пишете по-русски: правила, документация и коммиты на русском.
Будет плюсом
• Работали с API маркетплейсов (Ozon, Wildberries, Яндекс Маркет), FBS / realFBS.
• Работали с Claude Code или другим агентом на живом проекте.
• Знаете Docker, GitLab CI, Caddy или nginx.
• Писали на Vue 3 / TypeScript, чтобы читать фронтенд.
Чего не будет
• Десятилетнего легаси. Проекту полгода, PHP 8.5 и Symfony 8 с первого дня.
• Митингов ради митингов: решения и их причины записаны в репозитории.
Преимущества работы у нас:
• Удалённая работа (при желании с вашей стороны возможна работа в офисе г. Москва, м. Дмитровская);
• Есть отлаженный gitflow с CI и автотестами;
• Можно начать с еженедельной оплаты;
• Свободный график работы, но не менее 40ч в неделю;
• Бизнес постоянно развивается: ассортимент, новые товарные категории и новые каналы продаж регулярно добавляются;
• Стабильный рост: и в пандемию и в последние годы мы выросли по прибыли, платим вовремя все зарплаты, премии, вкладываемся в обучение и развитие команды;
• Оплата необходимых онлайн-сервисов для работы;
• Корпоративные подарки от компании на годовщину работы.