{"repo": "alakazamc/restaurant-ai-manager", "files": {"compose.yaml": {"94e9f89b950f9a6db8bf9b792fb7ab96c0651fc7": {"t": 1786068423.201677, "n": 5820, "h": "6c74ff44b0e68036", "c": "name: restaurant-ai-manager\n\nx-application: &application\n build:\n context: .\n dockerfile: Dockerfile\n image: restaurant-ai-manager-app:t015\n restart: unless-stopped\n secrets:\n - source: database_password\n target: database_password\n depends_on:\n postgres:\n condition: service_healthy\n restart: true\n\nservices:\n postgres:\n image: pgvector/pgvector:0.8.5-pg16-bookworm@sha256:1d533553fefe4f12e5d80c7b80622ba0c382abb5758856f52983d8789179f0fb\n restart: unless-stopped\n environment:\n POSTGRES_DB: ${POSTGRES_DB:-restaurant_ai}\n POSTGRES_USER: ${POSTGRES_USER:-restaurant_ai}\n POSTGRES_PASSWORD_FILE: /run/secrets/database_password\n secrets:\n - source: database_password\n target: database_password\n volumes:\n - postgres_data:/var/lib/postgresql/data\n healthcheck:\n test:\n - CMD-SHELL\n - pg_isready -U \"$${POSTGRES_USER}\" -d \"$${POSTGRES_DB}\"\n interval: 5s\n timeout: 3s\n retries: 12\n start_period: 10s\n stop_grace_period: 30s\n\n api:\n <<: *application\n environment:\n APP_ENV: ${APP_ENV:?APP_ENV is required}\n SERVICE_ROLE: api\n CONFIG_SCHEMA_VERSION: \"1.0.0\"\n DATABASE_URL: >-\n postgresql://${POSTGRES_USER:-restaurant_ai}@postgres:5432/${POSTGRES_DB:-restaurant_ai}\n LOG_LEVEL: ${LOG_LEVEL:-INFO}\n INTERNAL_MODEL_GATEWAY_URL: http://model-gateway:8010\n INTERNAL_INTEGRATION_GATEWAY_URL: http://integration-gateway:8020\n EMBEDDING_BACKEND: ${EMBEDDING_BACKEND:-bge-m3-pgvector}\n OPERATIONS_PERSISTENCE: postgres\n DEFAULT_STORE_ID: ${DEFAULT_STORE_ID:-demo-store}\n DEMO_SEED_DATA: ${DEMO_SEED_DATA:-true}\n depends_on:\n postgres:\n condition: service_healthy\n restart: true\n model-gateway:\n condition: service_started\n integration-gateway:\n condition: service_started\n command:\n - python\n - -m\n - uvicorn\n - app.main:app\n - --host\n - 0.0.0.0\n - --port\n - \"8000\"\n - --no-access-log\n ports:\n - 127.0.0.1:${API_PORT:-8000}:8000\n healthcheck:\n test: [CMD, python, -m, app.api.healthcheck]\n interval: 5s\n timeout: 3s\n retries: 12\n start_period: 10s\n stop_grace_period: 10s\n\n worker:\n <<: *application\n command: [python, -m, app.worker]\n environment:\n APP_ENV: ${APP_ENV:?APP_ENV is required}\n SERVICE_ROLE: worker\n CONFIG_SCHEMA_VERSION: \"1.0.0\"\n DATABASE_URL: >-\n postgresql://${POSTGRES_USER:-restaurant_ai}@postgres:5432/${POSTGRES_DB:-restaurant_ai}\n MODEL_MODE: stub\n MODEL_ID: stub-generation-v1\n EMBEDDING_MODEL_ID: stub-embedding-v1\n MODEL_CONFIG_VERSION: stub-model-config-v1\n KNOWLEDGE_INDEX_VERSION: stub-knowledge-v1\n POLICY_VERSION: policy-v1\n LOG_LEVEL: ${LOG_LEVEL:-INFO}\n WORKER_HEARTBEAT_FILE: /tmp/restaurant-ai-manager-worker.heartbeat\n WORKER_HEARTBEAT_INTERVAL_SECONDS: \"5\"\n WORKER_HEARTBEAT_MAX_AGE_SECONDS: \"20\"\n INTERNAL_OPERATIONS_API_URL: http://api:8000\n AUTOMATIC_TRIGGER_INTERVAL_SECONDS: ${AUTOMATIC_TRIGGER_INTERVAL_SECONDS:-300}\n depends_on:\n postgres:\n condition: service_healthy\n restart: true\n api:\n condition: service_healthy\n restart: true\n healthcheck:\n test: [CMD, python, -m, app.worker.healthcheck]\n interval: 5s\n timeout: 3s\n retries: 12\n start_period: 10s\n stop_grace_period: 10s\n\n model-gateway:\n build:\n context: .\n dockerfile: Dockerfile\n image: restaurant-ai-manager-app:t015\n restart: unless-stopped\n secrets:\n - source: model_api_key\n target: model_api_key\n - source: embedding_api_key\n target: embedding_api_key\n environment:\n MODEL_BASE_URL: ${MODEL_BASE_URL:-https://api.deepseek.com}\n MODEL_ID: ${MODEL_ID:-deepseek-chat}\n EMBEDDING_BASE_URL: ${EMBEDDING_BASE_URL:-https://api.siliconflow.cn/v1}\n EMBEDDING_MODEL_ID: ${EMBEDDING_MODEL_ID:-BAAI/bge-m3}\n RERANK_MODEL_ID: ${RERANK_MODEL_ID:-BAAI/bge-reranker-v2-m3}\n command:\n - python\n - -m\n - uvicorn\n - app.model_gateway.gateway_api:app\n - --host\n - 0.0.0.0\n - --port\n - \"8010\"\n - --no-access-log\n healthcheck:\n test:\n - CMD\n - python\n - -c\n - >-\n import urllib.request;\n urllib.request.urlopen('http://127.0.0.1:8010/health', timeout=2)\n interval: 5s\n timeout: 3s\n retries: 12\n start_period: 5s\n stop_grace_period: 10s\n\n integration-gateway:\n build:\n context: .\n dockerfile: Dockerfile\n image: restaurant-ai-manager-app:t015\n restart: unless-stopped\n secrets:\n - source: ticketmaster_api_key\n target: ticketmaster_api_key\n - source: tavily_api_key\n target: tavily_api_key\n command:\n - python\n - -m\n - uvicorn\n - app.integrations.gateway_api:app\n - --host\n - 0.0.0.0\n - --port\n - \"8020\"\n - --no-access-log\n healthcheck:\n test:\n - CMD\n - python\n - -c\n - >-\n import urllib.request;\n urllib.request.urlopen('http://127.0.0.1:8020/health', timeout=2)\n interval: 5s\n timeout: 3s\n retries: 12\n start_period: 5s\n stop_grace_period: 10s\n\nvolumes:\n postgres_data:\n\nsecrets:\n database_password:\n file: ${DATABASE_PASSWORD_FILE:-.secrets/database_password}\n model_api_key:\n file: ${MODEL_API_KEY_FILE:-.secrets/model_api_key}\n embedding_api_key:\n file: ${EMBEDDING_API_KEY_FILE:-.secrets/embedding_api_key}\n ticketmaster_api_key:\n file: ${TICKETMASTER_API_KEY_FILE:-config/empty_secret}\n tavily_api_key:\n file: ${TAVILY_API_KEY_FILE:-config/empty_secret}\n"}}}}