MONETNIK.ru

Claude/PHP developer (Symfony, e-commerce)

Коротко

Удалённая разработка сервиса публикации коллекционных лотов (монеты, банкноты, значки) на Ozon, Wildberries, Яндекс Маркет и Монетник — e-commerce проект на стыке PHP/Symfony и очередей RabbitMQ, уже дающий реальную выручку. Весь код пишет агент Claude Code, разработчик ставит задачи, проектирует решения и ревьюит дифф, а не пишет код руками — это обязательное условие работы. Нужен опытный PHP/Symfony-разработчик (5-10 лет) с глубоким знанием PostgreSQL, очередей и идемпотентности, пишущий документацию и коммиты на русском языке.

# PHP-разработчик (Symfony, e-commerce), код пишет Claude
На полностью удалённую постоянную работу ищем опытного 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 ИИ модель обработки фото.
•ИИ-шлюзы: DIT.ai, 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, Monetnik.ru. У каждой площадки свои карточки, фото и остатки.
•Хранилище для миллионов фото: отдельный 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ч в неделю;
•Бизнес постоянно развивается: ассортимент, новые товарные категории и новые каналы продаж регулярно добавляются;
•Стабильный рост: и в пандемию и в последние годы мы выросли по прибыли, платим вовремя все зарплаты, премии, вкладываемся в обучение и развитие команды;
•Оплата необходимых онлайн-сервисов для работы;
•Корпоративные подарки от компании на годовщину работы.

Хватит откликаться.
Получите рекомендацию.

$10 стартовых кредитов

Всего 60 секунд, полностью на автопилоте — AI-агенты Eraldt читают ваше резюме, определяют подходящие роли, находят живые вакансии и людей, которые могут вас порекомендовать, пишут им личные письма и добиваются рекомендации.

Это не отклик на вакансию: резюме не уходит в компанию, а рекомендацию именно по этой роли мы не обещаем.

Посмотрите, кто ещё получает интервью на автопилоте