Встроенные сервисы

WASH PRO CRM включает две платформы как vendored-копии с отдельными панелями управления. Основной интерфейс для операторов — Dashboard (:80). Платформы доступны администраторам через блок Resources в сайдбаре и по прямым URL.

Сервис Vendored-версия Панель API
Dynamic API Platform v1.5.13 (dynamic-api/backend/package.json) http://localhost:8080 http://localhost:3001
PyOrchestrator (опц.) v0.1.10 (pyorchestrator/CHANGELOG.md) http://localhost:8090 http://localhost:8000

Полная upstream-документация: Dynamic API Platform · PyOrchestrator


Кто что использует

Возможность Operator / Viewer Administrator (Dashboard) Панель :8080 Панель :8090
CRM/SCADA данные ✅ Dashboard ✅ Dashboard
Пользователи и группы RBAC ✅ Dashboard → Система ✅ Users / Groups ✅ Users / Groups
Endpoints, схемы, cron, webhooks 🔗 ссылка Resources
Telegram-боты (несколько) ✅ Dashboard → Telegram (PyOrch) ✅ Scripts (полный редактор)
Python-скрипты, расписания 🔗 ссылка Resources
MongoDB backups CRM ✅ Dashboard → Резервные копии
Аудит-логи ✅ Dashboard → Логи ✅ Audit Logs

Dynamic API Platform

Роль в WASH PRO CRM

  • Единственный backend для CRM: все данные /api/crm/* хранятся в MongoDB через runtime engine.
  • JWT + RBAC для Dashboard и внутренних серvice-аккаунтов (message-processor, backup, pyorch-bridge).
  • init-seed создаёт 11 групп endpoints и 52 CRM-маршрута при первом запуске.

Dashboard проксирует /api/dynamic-api:3001 (nginx в контейнере dashboard).

Подтверждённые возможности платформы (v1.5.13)

Доступны в панели Dynamic API (:8080), если не указано иное:

Категория Возможности
Dynamic API Engine REST endpoints GET/POST/PUT/PATCH/DELETE через UI; маршруты активны сразу после сохранения; JSON-схема; path params; reference + ?populate=; опциональный TTL записей; смена path с миграцией данных; встроенный API tester
Автоматизация Cron (javascript / http / endpoint); исходящие webhooks (HMAC); API keys; MCP server (POST /api/mcp); JavaScript handlers async function handler(req, db); версионирование /api/v1/...
Безопасность JWT + refresh; RBAC (5 системных групп + custom); network access (domains/IP); rate limiting; login lockout; audit logs; Helmet, CORS, CSRF
Admin Panel Dashboard KPI; endpoints & groups; API Schema (ER-диаграмма); Database Explorer; users/groups; audit logs; 4 темы UI; OpenAPI/Swagger; export/import проекта
DevOps (upstream) Standalone Docker, MongoDB replica set, Kubernetes — не используются в стандартном WASH compose, но манифесты есть в dynamic-api/

Что отключено или ограничено в WASH

Функция Статус в WASH
In-app Software Updates (GitHub Releases) UPDATE_EXECUTOR_ENABLED=false — обновление через ./scripts/update-dynamic-api.sh
Standalone MongoDB stack Dynamic API ❌ используется общий wash-mongodb
Прямой доступ операторов к endpoint-builder ❌ только через :8080 (admin)

Обновление Dynamic API в WASH

./scripts/update-dynamic-api.sh
docker compose up -d --build dynamic-api dynamic-api-panel
./scripts/run-init-seed.sh   # при изменениях CRM-схемы

Патчи WASH: patches/dynamic-api-wash.patch. Embedded UI: patches/wash-embedded/.


PyOrchestrator

Роль в WASH PRO CRM

PyOrchestrator опционален. Включается, если в .env:

PYORCHESTRATOR_ENABLED=true

Скрипт ./scripts/start.sh подключает docker-compose.pyorchestrator.yml.

Компонент WASH Назначение
pyorch-backend FastAPI REST + WebSocket
pyorchestrator-panel React Control Plane (:8090)
pyorch-runtime Изолированные Python subprocess (без контейнера на скрипт)
pyorch-scheduler Cron / interval / webhook triggers
pyorch-bridge HTTP-мост CRM ↔ PyOrchestrator для Telegram-ботов
pyorch-postgres, pyorch-redis, pyorch-minio Метаданные, очередь, workspace
pyorch-mcp MCP для AI-агентов (:8010, опционально)
pyorch-prometheus, pyorch-grafana, pyorch-loki, pyorch-promtail Observability (профиль pyorch-observability, выкл. по умолчанию)

Подтверждённые возможности PyOrchestrator (v0.1.10)

Доступны в панели PyOrchestrator (:8090):

Категория Возможности
Scripts CRUD; multi-file workspace (Monaco); группы; тип bot; secrets (AES-GCM); hot reload через Redis
Runs Запуск/остановка; очередь; история; live logs через WebSocket ws://.../ws/runs/{run_id}
Schedules Cron и interval
Webhooks Inbound HTTP POST /hooks/{token}
Backups Create/restore в UI
Dashboard KPI и timeseries в Control Plane
Security JWT; роли Administrator / Developer / Operator / Viewer
MCP 24 tools на :8010/mcp (scripts, runs, schedules, secrets…)
Observability Prometheus + Grafana + Loki (профиль pyorch-observability)

Что не реализовано (не заявляйте как готовое)

Функция Статус
In-app OTA updates в панели :8090 ❌ отключено в WASH (UPDATE_EXECUTOR_ENABLED=false) — ./scripts/update-pyorchestrator.sh
OTA updates (GitHubUpdateProvider) upstream Stub / backlog
Audit logs UI Таблица есть; UI в roadmap
Production multi-runtime scaling Только в upstream docker-compose.prod.yml, не в WASH overlay

Интеграция с Dashboard: Telegram-боты

При включённом PyOrchestrator администратор управляет ботами в Dashboard → Система → Telegram без обязательного входа в панель :8090. Полная документация: Telegram-боты.

Dashboard  →  /api/telegram-bots/*  →  pyorch-bridge  →  PyOrchestrator API
                                                      ↓
                              Dynamic API  GET /api/users/telegram/{id}/auth
Endpoint bridge Действие
GET /health Проверка доступности PyOrchestrator
GET /bots Список WASH Telegram-ботов
POST /bots Создать бота (script_type bot + secrets)
PUT/DELETE /bots/:id Изменить / удалить
POST /bots/:id/start|stop Запуск / остановка
GET /bots/:id/link QR-код и ссылка t.me/...
POST /bots/refresh Синхронизация шаблонов + restart всех ботов

Типы ботов: Управление (полный RBAC), Сервисный (мониторинг + команды постов), Информационный (публичный: новости, цены, занятость, акции из CRM).

Информационный бот (v1.9): контент из Dashboard → Автоматизация → Информация; рассылка подписчикам в личных чатах; изображения одним сообщением (фото + подпись); корректная занятость постов.

Изоляция (v1.1.11+): боты отвечают только в личных сообщениях — каждый пользователь не видит чужих диалогов.

MCP в Dashboard (v1.1.12)

Dashboard → Автоматизация → MCP сервер (/mcp):

  • переключатель Dynamic API / PyOrchestrator;
  • HTTP URL и готовый конфиг для Cursor (без сборки);
  • таблица зарегистрированных инструментов;
  • прокси nginx: /api/mcp, /api/pyorch-mcp/mcp.

Отдельный stdio-сервер для агентов: services/crm-mcp (см. docs/mcp.md).

Доступ сотрудников: поле Telegram user_id в Dashboard → Пользователи + группа RBAC. Viewer — только отчёты; Operator — создание объектов и команды постов; Administrator — полный доступ. Поле admin Telegram IDs в форме бота удалено (с v1.1.0).

Учётные данные bridge → PyOrchestrator: PYORCH_DASHBOARD_EMAIL / PYORCH_DASHBOARD_PASSWORD (по умолчанию admin@pyorchestrator.local / admin).

Обновление PyOrchestrator в WASH

./scripts/update-pyorchestrator.sh
docker compose -f docker-compose.yml -f docker-compose.pyorchestrator.yml up -d --build pyorch-backend pyorchestrator-panel pyorch-bridge

Патчи WASH: patches/pyorchestrator-wash/. Embedded panel: services/pyorchestrator-panel/Dockerfile, VITE_WASH_EMBEDDED=true.


Блок Resources в Dashboard

Внизу сайдбара Dashboard:

Элемент Описание
Dynamic API Ссылка на :8080 + индикатор online/offline (GET /api/health)
PyOrchestrator Ссылка на :8090 + индикатор (GET /api/telegram-bots/health → bridge → PyOrch)
Документация GitHub Pages
GitHub Репозиторий проекта

Учётные данные по умолчанию

Интерфейс Логин Пароль Переменные .env
Dashboard + Dynamic API Panel admin Admin123! ADMIN_LOGIN, ADMIN_PASSWORD
PyOrchestrator Panel admin@pyorchestrator.local admin создаётся при seed PyOrch
Service account (internal) service ServiceInternal123! SERVICE_LOGIN, SERVICE_PASSWORD

Смените все пароли и секреты перед production.