Files
mivanchenko a27ee59125
Test backoffice (smb-crm) / test (push) Has been cancelled
Owner notification webhook: Telegram re-point (#23)
Flask fires a fire-and-forget internal webhook (owner_notify.py, mirroring
mailer.py's background-thread queue) on booking create/cancel/reschedule,
carrying the same {booking, business_name, notify_channel} shape the old
EA-driven "Build booking row" node produced, plus an event field so the
Telegram message can say what actually happened. n8n/booking-sync.json gets
a new webhook + IF node feeding the existing Telegram node directly, so it
no longer needs EA's API to build the notification payload; channel routing
(only telegram sends for now) lives in that IF node.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-04 12:09:39 +02:00

48 lines
1.2 KiB
YAML

services:
smb-db:
image: postgres:16-alpine
container_name: smb-db
restart: unless-stopped
environment:
POSTGRES_DB: smbcrm
POSTGRES_USER: smbcrm
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- smb-db-data:/var/lib/postgresql/data
- ./db/init.sql:/docker-entrypoint-initdb.d/init.sql:ro
networks: [smb-net]
healthcheck:
test: ["CMD-SHELL", "pg_isready -U smbcrm -d smbcrm"]
interval: 10s
timeout: 5s
retries: 5
smb-crm:
build: ./app
container_name: smb-crm
restart: unless-stopped
environment:
DATABASE_URL: postgresql://smbcrm:${DB_PASSWORD}@smb-db:5432/smbcrm
CRM_API_TOKEN: ${CRM_API_TOKEN}
BOOKING_TOKEN_SECRET: ${BOOKING_TOKEN_SECRET}
SESSION_SECRET_KEY: ${SESSION_SECRET_KEY}
SMTP_HOST: ${SMTP_HOST}
SMTP_PORT: ${SMTP_PORT}
SMTP_USERNAME: ${SMTP_USERNAME}
SMTP_PASSWORD: ${SMTP_PASSWORD}
MAIL_FALLBACK_FROM: ${MAIL_FALLBACK_FROM}
PUBLIC_BASE_URL: ${PUBLIC_BASE_URL}
OWNER_NOTIFY_WEBHOOK_URL: ${OWNER_NOTIFY_WEBHOOK_URL}
depends_on:
smb-db:
condition: service_healthy
networks: [smb-net, proxy]
volumes:
smb-db-data:
networks:
smb-net:
proxy:
external: true