Skip to content

Отчёт по задачам проекта Partizap (backend)

Период: 23 января — 10 марта 2026 Общий объём: ~46 000 строк кода, 340+ файлов, 115+ коммитов Инструменты: PHP 8.3, Slim 4, Doctrine, PostgreSQL 16, Redis 7, Centrifugo, S3 (Selectel), Claude Code

Оценка «Без AI» — сколько часов заняла бы задача при полностью ручной разработке. Оценка «С Claude Code» — сколько часов ушло фактически с учётом ускорения от AI-ассистента.


Этап 1: Инфраструктура — настройка серверов

#ЗадачаБез AIС Claude Code
1.1Настройка VPS: ОС, пользователи, SSH-ключи, фаервол4 ч3 ч
1.2Установка и настройка PostgreSQL 16 (dev: partizap_dev, prod: partizap_prod, PgBouncer на prod)4 ч2.5 ч
1.3Установка и настройка Redis 7 (Primary-Replica с Sentinel, разделение по БД 0–3, dev/prod с префиксами)4 ч2.5 ч
1.4Установка PHP 8.3 + PHP-FPM (два пула: partizap-dev, partizap-prod)3 ч2 ч
1.5Настройка Nginx: виртуальные хосты dev.partizap.ru / partizap.ru, SSL, HTTP Basic Auth4 ч2.5 ч
1.6Настройка S3-хранилища Selectel (два бакета: partizap-dev, partizap-prod, приватный + публичный)3 ч2 ч
1.7Настройка GitLab (self-hosted): репозиторий, SSH-доступ, токены3 ч2 ч
1.8Установка и настройка YouTrack (трекер задач)3 ч2 ч
1.9Настройка DNS-записей для всех доменов и поддоменов (dev, prod, gitlab, youtrack)2 ч1.5 ч
1.10Выпуск и установка SSL-сертификатов (Let's Encrypt) для всех доменов2 ч1.5 ч
1.11Регистрация и настройка облачного Sentry (проекты dev/prod, DSN, алерты)2 ч1.5 ч
1.12Настройка почтового сервиса (SMTP)2 ч1.5 ч
1.13Документирование инфраструктуры (dev-prod-infrastructure.md)3 ч1 ч
Итого по этапу39 ч25.5 ч

Этап 2: Основа backend (5–6 февраля)

#ЗадачаБез AIС Claude Code
2.1Скелет Slim 4 + PHP-DI + Doctrine + health check4 ч1.5 ч
2.2Полная реализация backend: все сущности, auth (сессии), Store/Vendor/Admin endpoint'ы, сидер16 ч5 ч
2.3Выравнивание схемы и сущностей по MVP-спецификации6 ч2 ч
2.4Исправления: MailerService, body parsing, route args, session handling, миграции4 ч1.5 ч
Итого по этапу30 ч10 ч

Этап 3: Безопасность и бизнес-логика (7 февраля)

#ЗадачаБез AIС Claude Code
3.1Security hardening: CSRF middleware, CSP, rate limiting, admin CRUD, background jobs8 ч3 ч
3.2Криптографические токены сброса пароля (вместо verification codes)2 ч0.5 ч
3.3Сортировка и мультиполевая курсорная пагинация товаров4 ч1.5 ч
3.4M:N категории и совместимость товаров (product_categories, product_compatibility)3 ч1 ч
3.5Избранное: добавление, удаление, список2 ч0.5 ч
3.6Переработка пайплайна загрузки изображений (синхронная обработка, dual S3 bucket, 6 вариантов)6 ч2 ч
3.7Stampede-protected кэширование справочных данных3 ч1 ч
3.8Исправления: DQL CAST, CSRF session binding, CSP3 ч1 ч
Итого по этапу31 ч10.5 ч

Этап 4: Диагностика и мониторинг (6–8 февраля)

#ЗадачаБез AIС Claude Code
4.1Диагностическая панель: Service Health, Database, Routes, Endpoint Tester8 ч3 ч
4.26 дополнительных табов: Marketplace, Security, Search, Cache, Audit, Architecture6 ч2 ч
4.3Интеграция Sentry SDK с Monolog2 ч0.5 ч
4.4Мониторинг: log viewer, error tracking, performance, Sentry API4 ч1.5 ч
4.5PHPUnit таб со структурированными результатами2 ч0.5 ч
4.6Исправления и доработки диагностики (PHPUnit FPM, NaN, toggle, /api prefix)3 ч1 ч
Итого по этапу25 ч8.5 ч

Этап 5: Деплой и CI/CD (7, 16 февраля)

#ЗадачаБез AIС Claude Code
5.1Nginx-конфиг и smoke-test скрипт для dev-деплоя3 ч1.5 ч
5.2Маршрутизация /api/* → PHP-FPM, / → Nuxt (подготовка к фронту)2 ч1 ч
5.3GitLab CI/CD pipeline + deploy script4 ч1.5 ч
5.4Исправления CI: shell executor, PHPStan tmpDir, .env, deploy script3 ч1.5 ч
5.5Рефакторинг структуры каталогов (flatten development/)1 ч0.5 ч
5.6Удаление .env из git, fix deploy stash1 ч0.5 ч
Итого по этапу14 ч6.5 ч

Этап 6: Изображения и сидирование (8–10 февраля)

#ЗадачаБез AIС Claude Code
6.1Исправление коллизий URL вариантов изображений в S32 ч0.5 ч
6.2Добавление массива images в ответы Store/Vendor/Favorites3 ч1 ч
6.3Команда seed-products с реальными изображениями и гео-данными Москвы4 ч1.5 ч
6.4Интеграция Wikimedia Commons API для изображений по категориям2 ч1 ч
6.5Исправление avatar URL (S3StorageService + CDN) + миграция2 ч0.5 ч
Итого по этапу13 ч4.5 ч

Этап 7: Чат (11–13 февраля)

#ЗадачаБез AIС Claude Code
7.1Real-time чат: сущности, actions, Centrifugo интеграция12 ч4 ч
7.2Centrifugo Docker setup + nginx WebSocket proxy3 ч1.5 ч
7.3Online presence middleware + миниатюры изображений в чате3 ч1 ч
7.4Улучшения чата: product images, delivered status, system messages, read boundaries, disconnect proxy6 ч2 ч
7.5Centrifugo health check + admin UI + nginx proxy2 ч1 ч
7.6Мультигородская гео-фильтрация товаров и поиска3 ч1 ч
7.7Исправление: Centrifugo connect proxy блокируется CSRF1 ч0.5 ч
7.8Nginx: поддержка Nuxt frontend proxy + bypass basic auth для SSR2 ч1 ч
Итого по этапу32 ч12 ч

Этап 8: Автомобильная иерархия (14–15 февраля)

#ЗадачаБез AIС Claude Code
8.14-й уровень иерархии: car_modifications (сущность, миграция, endpoints)4 ч1.5 ч
8.2Команда импорта seed-данных для 4-уровневой иерархии авто3 ч1 ч
8.3Durable online presence (persist last_seen_at в БД)2 ч0.5 ч
8.4Исправления: modification_id в совместимости, категории в деталях товара2 ч0.5 ч
8.5Атрибутные категории (оригинал/неоригинал) + рефакторинг steering2 ч0.5 ч
8.6Поддержка множественных OEM номеров при создании/обновлении товара2 ч0.5 ч
Итого по этапу15 ч4.5 ч

Этап 9: Документация для фронтенда (7–16 февраля)

#ЗадачаБез AIС Claude Code
9.1Проектирование архитектуры фронтенда (FSD, Nuxt 4, tech stack)8 ч3 ч
9.2Frontend API reference: все endpoints, форматы, CSRF, пагинация, коды ошибок4 ч1.5 ч
9.3Гайд по реализации auth-страниц в Nuxt3 ч1 ч
9.4Frontend CI/CD: GitLab pipeline, PM2, deploy, nginx proxy2 ч0.5 ч
9.5Гайд по чату для фронтенда: REST API, Centrifugo, Zod-схемы, i18n4 ч1.5 ч
9.6Гайд по автомобильной иерархии: YMMM cascade, composable pattern3 ч1 ч
9.7Документация ответов auth-эндпоинтов с русскими текстами2 ч0.5 ч
9.8Документ по интеграции справочных данных (TecDoc, OEM, кросс-ссылки)3 ч1 ч
Итого по этапу29 ч10 ч

Этап 10: Доработки (16, 22–23 февраля)

#ЗадачаБез AIС Claude Code
10.1«Remember me» в авторизации2 ч0.5 ч
10.2Исправление сброса пароля (не сохранялся в БД)1 ч0.5 ч
10.3Исправление ссылок в email (prefix /auth/)1 ч0.5 ч
10.4Валидация циклических ссылок в категориях1 ч0.5 ч
10.5Фильтрация товаров по категории с потомками (recursive CTE)2 ч0.5 ч
10.6Водяной знак «Partizap» на изображениях товаров3 ч1 ч
Итого по этапу10 ч3.5 ч

Этап 11: Телефоны, фильтры и асинхронные изображения (23, 25 февраля)

#ЗадачаБез AIС Claude Code
11.1Аудит полей: region_id и account_type в Actions, чеклист реализации в CLAUDE.md2 ч0.5 ч
11.2Реорганизация категорий по структуре Avito (миграция + сброс кэша)3 ч1 ч
11.3Мультителефон: таблица user_phones, сущность, CRUD-эндпоинты, интеграция в профиль и товары, документация, диагностика8 ч2.5 ч
11.4Фильтры is_available/condition в листинге и поиске + модерационные email3 ч1 ч
11.5Эндпоинт похожих товаров (/store/products/{id}/similar)2 ч0.5 ч
11.6Исправление TTL кода верификации (15 мин → 24 ч)1 ч0.5 ч
11.7Рефакторинг констант блокировки логина (magic numbers → named constants)1 ч0.5 ч
11.8Асинхронная обработка изображений через Redis-очередь (Symfony Messenger)4 ч1.5 ч
11.9Документирование новых эндпоинтов, фильтров и async-обработки изображений2 ч0.5 ч
Итого по этапу26 ч8.5 ч

Этап 12: Поиск по сообщениям чата (26 февраля)

#ЗадачаБез AIС Claude Code
12.1Дизайн фичи: brainstorming + design doc (in-chat + global search, UX, FSD-структура)3 ч1 ч
12.2Имплементация плана с полным кодом для backend и frontend2 ч0.5 ч
12.3Backend: repository methods (searchInConversation, searchAll), 2 Action класса, роуты4 ч1 ч
12.4Обновление API reference + readiness status + task report2 ч0.5 ч
Итого по этапу11 ч3 ч

Этап 13: Code review и рефакторинг (1–2 марта)

#ЗадачаБез AIС Claude Code
13.1Полный code review backend: анализ 14 проблем, план исправлений4 ч1 ч
13.2Рефакторинг DI-контейнера: замена 21 use($settings)$c->get('settings'), включение компиляции3 ч0.5 ч
13.3Нормализация ответов User: добавление business_profile в MeAction и UpdateUserAction2 ч0.5 ч
13.44 новых enum (MessageType, ReportStatus, PaymentStatus, PaymentType) + интеграция в сущности и callers4 ч1 ч
13.5Усиление rate limiting (IP-based вместо email-based), транзакционное удаление товаров, JsonResponder в RemoveFavoriteAction3 ч0.5 ч
13.6Документация: отчёт по code review, полная секция Admin Endpoints в API reference4 ч1 ч
Итого по этапу20 ч4.5 ч

Этап 14: Тестирование (2 марта)

#ЗадачаБез AIС Claude Code
14.120 unit-тестов для 4 enum (backed values, from, tryFrom, case count)2 ч0.5 ч
14.242 unit-теста для сущностей Message, Report, Payment (конструкторы, сеттеры, enum-переходы, toArray)6 ч1 ч
14.330 feature-тестов для 7 action-классов (MeAction, UpdateUserAction, DeleteProductAction, ApproveProduct, RejectProduct, RemoveFavorite, SendMessage)8 ч1.5 ч
14.48 unit-тестов для сервисов AdminAuditLogger и SystemMessageService3 ч0.5 ч
14.5Исправления: снятие final с 3 сервисов для мокирования, reflection для entity ID в тестах1 ч0.5 ч
14.6Инвентарь тестов в диагностической панели (PHPUnit таб)2 ч0.5 ч
Итого по этапу22 ч4.5 ч

Этап 15: Продакшн-деплой и сидирование (2 марта)

#ЗадачаБез AIС Claude Code
15.1MR develop → main, merge, deploy production1 ч0.5 ч
15.2Перенос справочных данных dev → prod: 9 таблиц (42 500+ записей), обход FK-ограничений categories3 ч0.5 ч
15.3Сброс Redis-кэша production, верификация API-эндпоинтов на partizap.ru1 ч0.5 ч
15.4Обновление CLAUDE.md: деплой, кэширование, сидирование, тестирование2 ч0.5 ч
Итого по этапу7 ч2 ч

Сводная таблица

ЭтапОписаниеБез AIС Claude CodeЭкономия
1Настройка серверов dev + prod39 ч25.5 ч35%
2Основа backend30 ч10 ч67%
3Безопасность и бизнес-логика31 ч10.5 ч66%
4Диагностика и мониторинг25 ч8.5 ч66%
5Деплой и CI/CD14 ч6.5 ч54%
6Изображения и сидирование13 ч4.5 ч65%
7Чат (Centrifugo)32 ч12 ч63%
8Автомобильная иерархия15 ч4.5 ч70%
9Документация для фронтенда29 ч10 ч66%
10Доработки10 ч3.5 ч65%
11Телефоны, фильтры и async-изображения26 ч8.5 ч67%
12Поиск по сообщениям чата11 ч3 ч73%
13Code review и рефакторинг20 ч4.5 ч78%
14Тестирование (100 новых тестов)22 ч4.5 ч80%
15Продакшн-деплой и сидирование7 ч2 ч71%
16Миграция на два VPS20 ч8 ч60%
17Диагностика и инфра-фиксы6 ч2 ч67%
ИТОГО350 ч128 ч63%

Этап 16: Миграция на два VPS (9–10 марта)

#ЗадачаБез AIС Claude Code
16.1Планирование миграции: ресурсный анализ, план two-VPS архитектуры, прогноз роста по DAU3 ч1 ч
16.2Миграция серверов: настройка VPS 2 (DevOps), NAT-gateway через VPS 1, nginx reverse proxy, SSL для dev/gitlab/track субдоменов6 ч3 ч
16.3Обновление CLAUDE.md для two-VPS архитектуры (project root + server)2 ч0.5 ч
16.4Исправление phpredis 6.x brPop (возврат [] вместо false на таймауте) и удаление двойного префикса ключей2 ч0.5 ч
16.5Обновление deploy script для two-VPS (prod → SSH на VPS 1, dev → локально на VPS 2)2 ч1 ч
16.6Миграция фронтенда с PM2 на Docker контейнеры, обновление CI/CD документации3 ч1 ч
16.7Обновление документации: frontend-ci-cd.md (Docker), migration notes в отчётах2 ч1 ч
Итого по этапу20 ч8 ч

Этап 17: Диагностика и инфра-фиксы (10 марта)

#ЗадачаБез AIС Claude Code
17.1Диагностика пайплайна загрузки изображений: анализ логов воркера, проверка S3, Redis-очереди, GD, водяного знака2 ч0.5 ч
17.2Выявление причины «бесконечного processing» — анализ фронтенд-кода (отсутствие polling статуса image, потеря контекста draft при reload)2 ч0.5 ч
17.3Исправление персистентного роутинга netplan (перенос routes с верхнего уровня внутрь eth1, удаление дублирования)1 ч0.5 ч
17.4Проверка работоспособности всех сервисов после перезагрузки VPS 21 ч0.5 ч
Итого по этапу6 ч2 ч

Примечания к оценке

  • «Без AI» — экспертная оценка трудозатрат для middle/senior PHP-разработчика, включая исследование, реализацию, тестирование и отладку.
  • «С Claude Code» — оценка фактических трудозатрат с учётом того, что AI-ассистент генерировал код, документацию, конфиги и тесты, а разработчик формулировал задачи, ревьюил результат и выполнял ручные операции на серверах.
  • Инфраструктурные задачи (этап 1) имеют наименьшую экономию (~37%), так как требуют ручного взаимодействия с серверами, SSH, установки пакетов и верификации.
  • Генерация кода и документации (этапы 2–4, 8–9) дают высокую экономию (65–70%), так как Claude Code эффективно генерирует объёмный, но структурированный контент.
  • Тестирование и code review (этапы 13–14) показали наибольшую экономию (78–80%), так как AI эффективно генерирует повторяющиеся тестовые шаблоны и системно анализирует кодовую базу на предмет проблем.