Нестыковки деплоя
Статус на 2026-04-22 22:00
- ✅ Customer Service задеплоен (:3014, customer_db создана, добавлен в compose/nginx/deploy-all SKILL, контейнер healthy). Конфликт портов разрулён переносом на 3014.
- ✅ nginx fallback services[] — обновлён под 10 живых контейнеров.
- ⏸ pos-bff — оставлен в compose по решению пользователя (замороженные договорённости с PayKeeper, но пока продолжаем).
- ⏳ Остальные 🟡 нестыковки ниже — не исправлены.
Сверка трёх слоёв: код микросервисов ↔ erp-infrastructure/docker-compose.yml + nginx ↔ состояние на VPS ↔ маппинг в .claude/skills/deploy-all/SKILL.md.
Легенда:
- 🔴 блокер (что-то не работает или скоро сломается)
- 🟡 рассинхрон (нужно привести в порядок, но не критично сейчас)
- ⚪ устаревшая запись
✅ Customer Service отсутствует везде — РЕШЕНО
| Слой | Было | Стало |
|---|---|---|
| Код | port: ${PORT:3013} (конфликт) | port: ${PORT:3014} ✅ |
| docker-compose.yml | блок отсутствовал | добавлен (3014:3014) ✅ |
| envs/ на VPS | нет | customer-service.env создан ✅ |
| БД | customer_db не было | создана в postgres ✅ |
deploy-all SKILL mapping | нет строки | добавлена ✅ |
docker compose ps | контейнера нет | erp-customer-service Up healthy ✅ |
По пути пофикшены 3 pre-existing баги компиляции: лишний } в PiiAnonymizer.java, неверный пакет импорта JsonRawValue, package-private loadActiveInFranchise в CustomerGroupService.
Nginx proxy_pass для /api/customers/ не добавлен — admin-bff ходит через внутреннюю сеть. Если понадобится прямой публичный доступ — добавим.
⏸ pos-bff деплоится, но репо заморожен — ОСТАВЛЕНО
Сознательное решение пользователя: POS-касса «заморожена на уровне договорённостей с PayKeeper», но пока продолжаем делать. Убирать pos-bff из compose/nginx — по команде.
✅ nginx default fallback устарел — РЕШЕНО
services[] в / response обновлён до 10 текущих сервисов (8 бэкендов + 2 BFF). Ручная синхронизация — при добавлении сервисов нужно править здесь же.
🟡 Не все бэкенд-сервисы проксированы через nginx наружу
Nginx имеет proxy_pass для:
/api/users/→ user-service ✅/api/stores/→ store-service ✅/api/v1/admin/→ admin-bff ✅/admin/+/assets/→ admin-bff (web) ✅/pos/→ pos-bff ✅/s3/→ MinIO ✅
Снаружи НЕ доступны: auth-service, catalog-service, order-service, warehouse-service, aggregator-service (и несозданный customer-service).
Это может быть by design (BFF-паттерн — только админ-BFF наружу, бэкенды через внутреннюю сеть). Но тогда:
/api/users/и/api/stores/— нелогично: остальные бэкенды так же должны быть скрыты.- Возможно это остаток старого времени, когда BFF ещё не было.
🟡 admin-bff не имеет проброса порта
admin-bff:
container_name: erp-admin-bff
# нет секции `ports:`Контейнер слушает 3020/tcp только внутри docker-сети. Наружу попадает только через nginx (proxy_pass http://erp-admin-bff:3020). Это корректно для продакшена, но локально отладить без ports: "3020:3020" нельзя.
🟡 auth-service: docs vs реальность
- ADR-001 (принят): «локальный JWT-фильтр вместо Auth Service на этапе MVP»
- Overview:
status: in_progress - Фактически:
erp-auth-serviceзадеплоен иhealthy, в коде реализованы/login,/pin-login,/refresh,/logout,/forgot-password,/reset-password,/me,/internal/auth/validate - То есть Auth Service существует и работает, ADR-001 описывает другой слой (fallback JWT-валидация в каждом микросервисе, независимо от Auth Service)
Нужно либо уточнить Overview что Auth Service «задеплоен и используется для логина», либо обновить ADR-001 что текущая архитектура — Auth Service + локальный fallback-фильтр одновременно.
🟡 Пробелы в deploy-all SKILL.md
Маппинг в .claude/skills/deploy-all/SKILL.md содержит 9 сервисов: auth/user/store/catalog/order/warehouse/aggregator/admin-bff/pos-bff.
Не упоминает:
customer-service(нужно добавить когда появится в compose)- Будущие
paykeeper-adapter,loyalty-service,finance-service,notification-service,report-service,integration-service,payment-service(планируются, не срочно)
🟡 application.yml: параметризация порта
Конвенция: server.port: ${PORT:NNNN} — порт через env. У customer-service defаult=3013, у aggregator=3013 (проверить у остальных).
Если два сервиса имеют один default, при подъёме локально без env переменных — будет конфликт. В compose env-файл переопределяет.
⚪ Planned сервисы в Repositories.md, которых нет в коде
07-Tasks/Repositories.md перечисляет будущие сервисы (Payment :3006, Loyalty :3007, Finance :3009, Notification :3010, Report :3011, Integration :3012). Они не в compose и не в коде — это нормально (пока planned).
Не в списке Repositories.md, но упомянут в Deep research бэклога PK — апрель 2026:
paykeeper-adapter(новый сервис, ACL-слой для интеграции с PayKeeper). Репо пока нет.
Сводная таблица: что должно быть на VPS vs фактически
| Ожидается | Факт | Delta |
|---|---|---|
| erp-postgres | ✅ Up 11d healthy | — |
| erp-redis | ✅ Up 11d healthy | — |
| erp-kafka | ✅ Up 42m healthy | рестарт 42 мин назад |
| erp-minio | ✅ Up 11d healthy | — |
| erp-nginx | ✅ Up 11d healthy | — |
| erp-auth-service | ✅ Up 5h healthy | — |
| erp-user-service | ✅ Up 5h healthy | — |
| erp-store-service | ✅ Up 5h healthy | — |
| erp-catalog-service | ✅ Up 5h healthy | — |
| erp-order-service | ✅ Up 5h healthy | — |
| erp-warehouse-service | ✅ Up 5h healthy | — |
| erp-aggregator-service | ✅ Up 2d healthy | давно не передеплаивали |
| erp-admin-bff | ✅ Up 1h healthy | последний рестайл-деплой |
| erp-pos-bff | ✅ Up 5h healthy | всё ещё живой, хотя POS frozen |
| erp-customer-service | ✅ Up healthy (только что) | 127.0.0.1:3014, Kafka consumer order.completed активен |
Customer Service — деплой сделан 2026-04-22
Выполнено в одном проходе:
- ✅
application.yml:port: ${PORT:3014}— коммит в erp-customer-service - ✅
customer_dbсоздана в postgres на VPS - ✅
envs/customer-service.envсоздан - ✅ Блок
customer-service:добавлен вdocker-compose.yml - ✅ Строка добавлена в
.claude/skills/deploy-all/SKILL.md - ✅ Репо склонирован на VPS (HTTPS с токеном)
- ✅ 3 compile-fix в customer-service (PiiAnonymizer, JsonRawValue, loadActiveInFranchise)
- ✅ Docker build + up → контейнер healthy