1. 为话术生成服务添加staffName参数,支持生成回复时使用真实员工姓名 2. 优化客户昵称补全逻辑,新增自动创建缺失客户记录功能 3. 重构前端话术推荐组件,调整客户信息展示逻辑 4. 添加完整的docker-compose-server部署配置文件
339 lines
9.3 KiB
YAML
339 lines
9.3 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
|
||
--character-set-server=utf8mb4
|
||
--collation-server=utf8mb4_unicode_ci
|
||
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"
|
||
volumes:
|
||
- ./gateway-application.yml:/app/config/application.yml
|
||
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:
|
||
- SERVER_SERVLET_ENCODING_CHARSET=UTF-8
|
||
- SERVER_SERVLET_ENCODING_ENABLED=true
|
||
- SERVER_SERVLET_ENCODING_FORCE=true
|
||
- MYSQL_HOST=sh-cdb-6fzlwnms.sql.tencentcdb.com
|
||
- MYSQL_USERNAME=assistant_prod
|
||
- MYSQL_PASSWORD=U%$4Tu_C3+4
|
||
- MYSQL_PORT=63912
|
||
- MYSQL_DATABASE=ai_assistant
|
||
- SPRING_DATASOURCE_USERNAME=assistant_prod
|
||
- SPRING_DATASOURCE_PASSWORD=U%$4Tu_C3+4
|
||
- SPRING_DATASOURCE_URL=jdbc:mysql://sh-cdb-6fzlwnms.sql.tencentcdb.com:63912/ai_assistant?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
|
||
- 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:
|
||
- SERVER_SERVLET_ENCODING_CHARSET=UTF-8
|
||
- SERVER_SERVLET_ENCODING_ENABLED=true
|
||
- SERVER_SERVLET_ENCODING_FORCE=true
|
||
- MYSQL_HOST=sh-cdb-6fzlwnms.sql.tencentcdb.com
|
||
- MYSQL_USERNAME=assistant_prod
|
||
- MYSQL_PASSWORD=U%$4Tu_C3+4
|
||
- MYSQL_PORT=63912
|
||
- MYSQL_USERNAME=assistant_prod
|
||
- MYSQL_PASSWORD=U%$4Tu_C3+4
|
||
- REDIS_HOST=redis
|
||
- RABBITMQ_HOST=rabbitmq
|
||
- WECOM_ARCHIVE_SECRET=${WECOM_ARCHIVE_SECRET:-}
|
||
- WECOM_ARCHIVE_CALLBACK_TOKEN=${WECOM_ARCHIVE_CALLBACK_TOKEN:-}
|
||
- WECOM_ARCHIVE_CALLBACK_AESKEY=${WECOM_ARCHIVE_CALLBACK_AESKEY:-}
|
||
- WECOM_ARCHIVE_SDK_PATH=${WECOM_ARCHIVE_SDK_PATH:-/app/sdk}
|
||
- ARCHIVE_REPAIR_ON_STARTUP=true
|
||
- WECOM_AGENT_SECRET=nU1xezyHyonS9rOJ9Kwo3i5OM9iuWc1TrjXf-rOYZx0
|
||
- WECOM_CONTACT_SECRET=zrZkae10k1T7bqrt-jVYjj9LQ4GgMibj-wUMy48OsyY
|
||
volumes:
|
||
- ./keys:/app/keys
|
||
# 如需真实企微SDK,取消注释下行并将Linux .so文件放入 ./sdk/linux/
|
||
- ./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:
|
||
- SERVER_SERVLET_ENCODING_CHARSET=UTF-8
|
||
- SERVER_SERVLET_ENCODING_ENABLED=true
|
||
- SERVER_SERVLET_ENCODING_FORCE=true
|
||
- MYSQL_HOST=sh-cdb-6fzlwnms.sql.tencentcdb.com
|
||
- MYSQL_USERNAME=assistant_prod
|
||
- MYSQL_PASSWORD=U%$4Tu_C3+4
|
||
- MYSQL_PORT=63912
|
||
- 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:
|
||
- SERVER_SERVLET_ENCODING_CHARSET=UTF-8
|
||
- SERVER_SERVLET_ENCODING_ENABLED=true
|
||
- SERVER_SERVLET_ENCODING_FORCE=true
|
||
- MYSQL_HOST=sh-cdb-6fzlwnms.sql.tencentcdb.com
|
||
- MYSQL_USERNAME=assistant_prod
|
||
- MYSQL_PASSWORD=U%$4Tu_C3+4
|
||
- MYSQL_PORT=63912
|
||
- 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:
|
||
- SERVER_SERVLET_ENCODING_CHARSET=UTF-8
|
||
- SERVER_SERVLET_ENCODING_ENABLED=true
|
||
- SERVER_SERVLET_ENCODING_FORCE=true
|
||
- MYSQL_HOST=sh-cdb-6fzlwnms.sql.tencentcdb.com
|
||
- MYSQL_USERNAME=assistant_prod
|
||
- MYSQL_PASSWORD=U%$4Tu_C3+4
|
||
- MYSQL_PORT=63912
|
||
- REDIS_HOST=redis
|
||
- RABBITMQ_HOST=rabbitmq
|
||
- DASHSCOPE_API_KEY=${DASHSCOPE_API_KEY:-}
|
||
- MYSQL_HOST=sh-cdb-6fzlwnms.sql.tencentcdb.com
|
||
- MYSQL_PORT=63912
|
||
- MYSQL_USERNAME=assistant_prod
|
||
- MYSQL_PASSWORD=U%$4Tu_C3+4
|
||
- MYSQL_DATABASE=ai_assistant
|
||
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:
|
||
- SERVER_SERVLET_ENCODING_CHARSET=UTF-8
|
||
- SERVER_SERVLET_ENCODING_ENABLED=true
|
||
- SERVER_SERVLET_ENCODING_FORCE=true
|
||
- REDIS_HOST=redis
|
||
- DASHSCOPE_API_KEY=${DASHSCOPE_API_KEY:-}
|
||
- MYSQL_HOST=sh-cdb-6fzlwnms.sql.tencentcdb.com
|
||
- MYSQL_PORT=63912
|
||
- MYSQL_USERNAME=assistant_prod
|
||
- MYSQL_PASSWORD=U%$4Tu_C3+4
|
||
- MYSQL_DATABASE=ai_assistant
|
||
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:
|
||
- SERVER_SERVLET_ENCODING_CHARSET=UTF-8
|
||
- SERVER_SERVLET_ENCODING_ENABLED=true
|
||
- SERVER_SERVLET_ENCODING_FORCE=true
|
||
- MYSQL_HOST=sh-cdb-6fzlwnms.sql.tencentcdb.com
|
||
- MYSQL_USERNAME=assistant_prod
|
||
- MYSQL_PASSWORD=U%$4Tu_C3+4
|
||
- MYSQL_PORT=63912
|
||
- 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:
|
||
- SERVER_SERVLET_ENCODING_CHARSET=UTF-8
|
||
- SERVER_SERVLET_ENCODING_ENABLED=true
|
||
- SERVER_SERVLET_ENCODING_FORCE=true
|
||
- MYSQL_HOST=sh-cdb-6fzlwnms.sql.tencentcdb.com
|
||
- MYSQL_USERNAME=assistant_prod
|
||
- MYSQL_PASSWORD=U%$4Tu_C3+4
|
||
- MYSQL_PORT=63912
|
||
- 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:
|
||
- "8089: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
|