Major UX improvements across multiple pages

Шахматка:
- Date/period picker dropdown on navigation button (choose start date + days window)
- Cancelled bookings fade out with animation after 1 second

Бронирования:
- Clickable column headers with sort asc/desc (Гость, Заезд, Выезд, Статус, Источник, Сумма)

Страница входа:
- Removed role-based account selector — just email + password
- System auto-detects role/hotel from credentials

Настройки:
- New "Бронирование" section with room assignment strategy (spread/together/sequential/manual)
- Notifications: SMTP email config + SMS provider config (SMSC, SMS.ru, МТС, etc.)

Модули:
- Added Housekeeping and Channel Manager as proper modules
- Channel Manager lists: Booking.com, Airbnb, Яндекс Путешествия, Островок, Суточно.ру, OneTwoTrip
- Housekeeping visible to all roles (including housekeeper) via module status
- Sidebar now uses module status to show/hide Уборка and Каналы

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-11 15:20:05 +03:00
parent 4e615359eb
commit c233590c4b
29 changed files with 2171 additions and 149 deletions

View File

@@ -12,13 +12,26 @@ services:
networks:
- hotelsync-net
# ── API (Node.js — placeholder, будет добавлен позже) ─────────────────────
# api:
# build: ./api
# container_name: hotelsync-api
# env_file: .env
# depends_on: [postgres, redis]
# networks: [hotelsync-net]
# ── API (Node.js + Fastify + PostgreSQL) ──────────────────────────────────
api:
build:
context: ./backend
dockerfile: Dockerfile
container_name: hotelsync-api
restart: unless-stopped
env_file: .env
environment:
NODE_ENV: production
PORT: "3000"
DATABASE_URL: postgresql://${POSTGRES_USER:-hotelsync}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB:-hotelsync}
REDIS_URL: redis://:${REDIS_PASSWORD}@redis:6379
JWT_SECRET: ${JWT_SECRET}
CORS_ORIGINS: "https://app.hotelsync.ru,http://localhost:5173"
depends_on:
- postgres
- redis
networks:
- hotelsync-net
# ── PostgreSQL ─────────────────────────────────────────────────────────────
postgres:
@@ -54,6 +67,7 @@ services:
ports:
- "80:80"
- "443:443"
- "8080:8080"
volumes:
- ./deploy/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./deploy/nginx/conf.d:/etc/nginx/conf.d:ro
@@ -61,6 +75,17 @@ services:
- certbot_certs:/etc/letsencrypt:ro
depends_on:
- frontend
- api
networks:
- hotelsync-net
# ── Adminer (DB Web UI) ────────────────────────────────────────────────────
adminer:
image: adminer:latest
container_name: hotelsync-adminer
restart: unless-stopped
environment:
ADMINER_DEFAULT_SERVER: postgres
networks:
- hotelsync-net