This commit adds multiple major features and improvements: 1. Adds Milvus vector database configuration and client integration 2. Implements daily summary query API for customer chat records 3. Adds customer statistics calibration functions, including single and full recalculation 4. Optimizes session list merging logic to handle bidirectional session IDs 5. Adds new mapper methods for customer message statistics query 6. Fixes message statistics update logic to avoid duplicate counting 7. Adds daily scheduled task to reset customer daily message count 8. Adds frontend page for viewing customer daily summaries
274 lines
6.5 KiB
YAML
274 lines
6.5 KiB
YAML
version: '3.8'
|
||
|
||
services:
|
||
# ---------------------- 基础设施 ----------------------
|
||
mysql:
|
||
image: mysql:5.7
|
||
container_name: ai-assistant-mysql
|
||
restart: always
|
||
environment:
|
||
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root}
|
||
MYSQL_DATABASE: ${MYSQL_DATABASE:-ai_assistant}
|
||
MYSQL_CHARACTER_SET_SERVER: utf8mb4
|
||
MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci
|
||
ports:
|
||
- "3306:3306"
|
||
volumes:
|
||
- mysql_data:/var/lib/mysql
|
||
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
|
||
command: --default-authentication-plugin=mysql_native_password
|
||
healthcheck:
|
||
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-p${MYSQL_ROOT_PASSWORD:-root}"]
|
||
interval: 10s
|
||
timeout: 5s
|
||
retries: 5
|
||
start_period: 30s
|
||
networks:
|
||
- ai-assistant-network
|
||
|
||
redis:
|
||
image: redis:6-alpine
|
||
container_name: ai-assistant-redis
|
||
restart: always
|
||
ports:
|
||
- "6379:6379"
|
||
volumes:
|
||
- redis_data:/data
|
||
healthcheck:
|
||
test: ["CMD", "redis-cli", "ping"]
|
||
interval: 10s
|
||
timeout: 5s
|
||
retries: 5
|
||
networks:
|
||
- ai-assistant-network
|
||
|
||
rabbitmq:
|
||
image: rabbitmq:3-management-alpine
|
||
container_name: ai-assistant-rabbitmq
|
||
restart: always
|
||
ports:
|
||
- "5672:5672"
|
||
- "15672:15672"
|
||
environment:
|
||
RABBITMQ_DEFAULT_USER: ${RABBITMQ_DEFAULT_USER:-admin}
|
||
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_DEFAULT_PASS:-admin}
|
||
volumes:
|
||
- rabbitmq_data:/var/lib/rabbitmq
|
||
healthcheck:
|
||
test: ["CMD", "rabbitmq-diagnostics", "ping"]
|
||
interval: 10s
|
||
timeout: 5s
|
||
retries: 5
|
||
networks:
|
||
- ai-assistant-network
|
||
|
||
# ---------------------- 后端服务 ----------------------
|
||
gateway:
|
||
build: ./backend/gateway
|
||
container_name: ai-assistant-gateway
|
||
restart: always
|
||
ports:
|
||
- "8080:8080"
|
||
depends_on:
|
||
- auth-service
|
||
- archive-service
|
||
- conversation-service
|
||
- intent-service
|
||
- recommend-service
|
||
- generation-service
|
||
- kb-admin-service
|
||
- analytics-service
|
||
networks:
|
||
- ai-assistant-network
|
||
|
||
auth-service:
|
||
build: ./backend/auth-service
|
||
container_name: ai-assistant-auth
|
||
restart: always
|
||
ports:
|
||
- "8081:8081"
|
||
environment:
|
||
- MYSQL_HOST=mysql
|
||
- REDIS_HOST=redis
|
||
- JWT_SECRET=${JWT_SECRET:-your-256-bit-secret-key-here-at-least-32-characters}
|
||
depends_on:
|
||
- mysql
|
||
- redis
|
||
networks:
|
||
- ai-assistant-network
|
||
|
||
archive-service:
|
||
build: ./backend/archive-service
|
||
container_name: ai-assistant-archive
|
||
restart: always
|
||
ports:
|
||
- "8082:8082"
|
||
environment:
|
||
- MYSQL_HOST=mysql
|
||
- REDIS_HOST=redis
|
||
- RABBITMQ_HOST=rabbitmq
|
||
- WECOM_ARCHIVE_SECRET=${WECOM_ARCHIVE_SECRET:-}
|
||
- WECOM_ARCHIVE_RSA_KEY=${WECOM_ARCHIVE_RSA_KEY:-}
|
||
- WECOM_ARCHIVE_CALLBACK_TOKEN=${WECOM_ARCHIVE_CALLBACK_TOKEN:-}
|
||
- WECOM_ARCHIVE_SDK_PATH=${WECOM_ARCHIVE_SDK_PATH:-/app/sdk}
|
||
- MILVUS_HOST=${MILVUS_HOST:-8.159.132.53}
|
||
- MILVUS_PORT=${MILVUS_PORT:-19530}
|
||
- MILVUS_USERNAME=${MILVUS_USERNAME:-root}
|
||
- MILVUS_PASSWORD=${MILVUS_PASSWORD:-Milvus}
|
||
- MILVUS_COLLECTION=${MILVUS_COLLECTION:-message_summary}
|
||
# 如需真实企微SDK,取消注释下行并将Linux .so文件放入 ./sdk/linux/
|
||
# volumes:
|
||
# - ./sdk/linux:/app/sdk
|
||
depends_on:
|
||
- mysql
|
||
- redis
|
||
- rabbitmq
|
||
networks:
|
||
- ai-assistant-network
|
||
|
||
conversation-service:
|
||
build: ./backend/conversation-service
|
||
container_name: ai-assistant-conversation
|
||
restart: always
|
||
ports:
|
||
- "8083:8083"
|
||
environment:
|
||
- MYSQL_HOST=mysql
|
||
- REDIS_HOST=redis
|
||
- RABBITMQ_HOST=rabbitmq
|
||
depends_on:
|
||
- mysql
|
||
- redis
|
||
- rabbitmq
|
||
networks:
|
||
- ai-assistant-network
|
||
|
||
intent-service:
|
||
build: ./backend/intent-service
|
||
container_name: ai-assistant-intent
|
||
restart: always
|
||
ports:
|
||
- "8084:8084"
|
||
environment:
|
||
- MYSQL_HOST=mysql
|
||
- REDIS_HOST=redis
|
||
- RABBITMQ_HOST=rabbitmq
|
||
depends_on:
|
||
- mysql
|
||
- redis
|
||
- rabbitmq
|
||
networks:
|
||
- ai-assistant-network
|
||
|
||
recommend-service:
|
||
build: ./backend/recommendation-service
|
||
container_name: ai-assistant-recommend
|
||
restart: always
|
||
ports:
|
||
- "8085:8085"
|
||
environment:
|
||
- MYSQL_HOST=mysql
|
||
- REDIS_HOST=redis
|
||
- RABBITMQ_HOST=rabbitmq
|
||
- DASHSCOPE_API_KEY=${DASHSCOPE_API_KEY:-}
|
||
depends_on:
|
||
- mysql
|
||
- redis
|
||
- rabbitmq
|
||
networks:
|
||
- ai-assistant-network
|
||
|
||
generation-service:
|
||
build: ./backend/generation-service
|
||
container_name: ai-assistant-generation
|
||
restart: always
|
||
ports:
|
||
- "8086:8086"
|
||
environment:
|
||
- REDIS_HOST=redis
|
||
- DASHSCOPE_API_KEY=${DASHSCOPE_API_KEY:-}
|
||
depends_on:
|
||
- redis
|
||
networks:
|
||
- ai-assistant-network
|
||
|
||
kb-admin-service:
|
||
build: ./backend/kb-admin-service
|
||
container_name: ai-assistant-kbadmin
|
||
restart: always
|
||
ports:
|
||
- "8087:8087"
|
||
environment:
|
||
- MYSQL_HOST=mysql
|
||
- REDIS_HOST=redis
|
||
depends_on:
|
||
- mysql
|
||
- redis
|
||
networks:
|
||
- ai-assistant-network
|
||
|
||
analytics-service:
|
||
build: ./backend/analytics-service
|
||
container_name: ai-assistant-analytics
|
||
restart: always
|
||
ports:
|
||
- "8088:8088"
|
||
environment:
|
||
- MYSQL_HOST=mysql
|
||
- REDIS_HOST=redis
|
||
depends_on:
|
||
- mysql
|
||
- redis
|
||
networks:
|
||
- ai-assistant-network
|
||
|
||
# ---------------------- 前端服务 ----------------------
|
||
admin:
|
||
build: ./frontend/admin
|
||
container_name: ai-assistant-admin
|
||
restart: always
|
||
ports:
|
||
- "5174:80"
|
||
depends_on:
|
||
- gateway
|
||
networks:
|
||
- ai-assistant-network
|
||
|
||
sidebar:
|
||
build: ./frontend/sidebar
|
||
container_name: ai-assistant-sidebar
|
||
restart: always
|
||
ports:
|
||
- "5173:80"
|
||
depends_on:
|
||
- gateway
|
||
networks:
|
||
- ai-assistant-network
|
||
|
||
# ---------------------- 统一入口 Nginx ----------------------
|
||
nginx:
|
||
image: nginx:alpine
|
||
container_name: ai-assistant-nginx
|
||
restart: always
|
||
ports:
|
||
- "80:80"
|
||
volumes:
|
||
- ./nginx.conf:/etc/nginx/conf.d/default.conf
|
||
depends_on:
|
||
- gateway
|
||
- admin
|
||
- sidebar
|
||
networks:
|
||
- ai-assistant-network
|
||
|
||
# ---------------------- 数据卷 ----------------------
|
||
volumes:
|
||
mysql_data:
|
||
redis_data:
|
||
rabbitmq_data:
|
||
|
||
# ---------------------- 网络 ----------------------
|
||
networks:
|
||
ai-assistant-network:
|
||
driver: bridge
|