Период охватывает массивную работу по 7 репозиториям, 227 коммитов суммарно. Три крупные рабочие сессии в Claude Code.

1. CI/CD пайплайн и деплой smeta-admin (backend + frontend)

— Настроен полный CI/CD: GitHub Actions, deploy-скрипты, systemd-сервисы, nginx-конфиги

— Продакшн-деплой на admin.smeta.net.ru: application-prod.properties, server-setup скрипт, HTTPS

— Исправления деплоя: поддержка SSH-порта, увеличение healthcheck timeout до 60с, LF line endings

— Добавлен CLAUDE.md в оба репозитория

— Технологии: GitHub Actions, systemd, nginx, Spring Boot, React

2. CI/CD пайплайн и деплой smeta-user (backend + frontend)

— Полный CI/CD с нуля: GitHub Actions, deploy.sh, nginx, systemd

— HTTPS через Let’s Encrypt с автообновлением (certbot —nginx)

— Домен smeta-user-test.softlancer.ru

— Оптимизация под сервер 1 CPU / 2 GB RAM (JVM heap 256MB на приложение)

— GitHub Release с версионными архивами для продакшна

— Пересборка тестового сервера после переустановки ОС (nginx, systemd, firewall)

— Технологии: GitHub Actions, Let’s Encrypt, systemd, nginx, sshpass

3. Excel-экспорт смет (smeta-user-backend)

— Реализован экспорт смет в Excel через множество итераций (10+ коммитов)

— Обогащённые DTO с ВМ-ресурсами и корректными ценами

— Все расчётные колонки, абстрактные ресурсы, имена групп + работ

— Только первые НР и СП, строка ФОТ (человеко-часы в колонке 6 «Всего»)

— Улучшена стилизация, подсветка абстрактных ресурсов

— Анализ приложения 3 Приказа 421 для сверки формы экспорта

— Технологии: Apache POI, Spring Boot

4. Выбор материалов и единицы измерения (smeta-user)

— Backend: выбор материала для ВМ-ресурсов (новая сущность, эндпоинты, автоподбор)

— Backend: пересчёт единиц измерения для ВМ

— Frontend: модальное окно MaterialPicker, подсказки с исходными единицами/количеством

— Admin backend: справочник единиц измерения (unit_conversion) с CRUD и сидами

— Admin frontend: UI управления справочником единиц измерения

— Технологии: Spring Boot, React, TypeScript

5. Восстановление пароля (smeta-user)

— Backend: forgot-password/reset-password эндпоинты, 6-значные коды по email

— Настройка SMTP через smtp.mail.ru, verbose логирование

— Frontend: полный UI-флоу (ввод email, код, новый пароль, cooldown повторной отправки)

— Включена регистрация (потом отключена через config.json)

— Технологии: Spring Boot Mail, SMTP, React

6. Переписан XML-импорт с DOM на StAX (smeta-user-backend)

— Файл GESN.xml (80 МБ) вызывал OOM при DOM-парсинге на 350 МБ heap

— Полностью переписан XmlParserService на StAX streaming

— Пакетное сохранение по 500 сущностей за batch

— Память снижена до 256 МБ на приложение

— Технологии: Java StAX API, Spring Data JPA batch insert

7. Обработка количества «П» (из проекта) в FSNB

— Анализ GESN.xml из архива ФСНБ

— Добавлен флаг pr_qnt в ресурсы и абстрактные ресурсы

— Backend: новая колонка, миграция, обработка NULL

— Frontend admin: бейдж «П» для ресурсов с количеством из проекта

— Технологии: Spring Boot, PostgreSQL, React

8. Редактирование ФСНБ и рефакторинг UI

— Admin backend: PATCH-эндпоинт редактирования имени, даты, номера приказа ФСНБ

— Admin frontend: модальное окно редактирования ФСНБ

— Переименование «Сплит Форма» в «Индексы цен» во всех 4 проектах

— Frontend user: переключение вида таблица/грид + 18 Playwright E2E-тестов

9. Миграция softlancer.ru с PayloadCMS на WordPress

— Полная миграция: удалён PayloadCMS (Node.js/Next.js), установлен WordPress

— Кастомная тема softlancer: CPT для услуг/кейсов/лидов

— Шаблоны страниц: главная, услуги, блог, кейсы, о нас, контакты, enterprise, vibe-coding

— AJAX-форма обратной связи с email-уведомлениями

— Перенесено: 31 услуга, 7 статей, 2 кейса

— Настройка MariaDB на отдельном сервере db.softlancer.ru (188.120.233.88)

— SMTP через smtp.mail.ru, SPF/DMARC

— Деплой на прод softlancer.ru (91.107.127.119)

— Технологии: WordPress, PHP 8.1, MariaDB, nginx, PHP-FPM

10. Автопубликация через n8n (smeta-n8n-workflow)

— Развёрнут n8n на n8n.softlancer.ru (docker-compose + Caddy + PostgreSQL)

— Воркфлоу «AI News» (Пн/Ср/Пт 17:00): Tavily Search -> Yandex GPT -> WordPress -> Telegram

— Воркфлоу «Дайджест» (Вс 03:00): git history -> Claude Code -> Yandex GPT -> WordPress -> Telegram

— Генерация изображений через Yandex ART

— Интеграция с Telegram-каналом @softlancer_channel

— RSS-фид для автопубликации в Яндекс.Дзен (yandex:full-text, enclosure)

— Технологии: n8n, Docker, Caddy, PostgreSQL, Tavily API, Yandex GPT, Yandex ART, Telegram Bot API

Сводная статистика по коду:

Проект | Добавлено | Удалено | Коммитов

————————|————|———|———

smeta_admin_backend | 2 390 | 310 | 53

smeta_admin_frontend | 3 930 | 260 | 32

smeta-user-backend | 4 100 | 1 170 | 105

smeta_user_frontend | 1 500*| 400*| 31

softlancer | 1 563 | 0 | 1

softlancer-src | 1 606 | 0 | 2

smeta-n8n-workflow | 711 | 6 | 3

————————|————|———|———

Итого | ~15 800 | ~2 150 | 227

* smeta_user_frontend: реальные изменения кода ~1500/400 строк (raw-цифры 171K/171K из-за удаления node_modules из git)

Оценка трудозатрат:

Задача | ~Часы

—————————————————-|——

CI/CD и деплой smeta-admin (2 репо) | 6

CI/CD и деплой smeta-user (2 репо) + сервер | 10

Excel-экспорт смет | 8

Выбор материалов и единицы измерения (4 репо) | 6

Восстановление пароля (backend + frontend) | 4

Переписывание XML-импорта DOM -> StAX | 3

Обработка количества «П» из проекта | 3

Редактирование ФСНБ + рефакторинг UI + E2E-тесты | 5

Миграция softlancer на WordPress + прод-деплой | 10

Автопубликация n8n + Telegram + Дзен | 8

—————————————————-|——

Итого | ~63 часа