diff --git a/.gitignore b/.gitignore index 6b4c150..f538abe 100644 --- a/.gitignore +++ b/.gitignore @@ -52,4 +52,5 @@ management/models--opendatalab--PDF-Extract-Kit-1.0 management/models--hantian--layoutreader docker/models management/web/types/auto -node_modules/.cache/logger/umi.log +web/node_modules/.cache/logger/umi.log +management/models--slanet_plus diff --git a/README.md b/README.md index a335513..31b5578 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@
- 版本 + 版本 许可证

🇨🇳 中文 diff --git a/README_EN.md b/README_EN.md index 59db735..32e0bce 100644 --- a/README_EN.md +++ b/README_EN.md @@ -3,7 +3,7 @@

- Version + Version License

🇨🇳 Chinese diff --git a/bulid_order.txt b/bulid_order.txt index a707a11..19216dd 100644 --- a/bulid_order.txt +++ b/bulid_order.txt @@ -1,13 +1,13 @@ docker 镜像相关命令: 前台镜像构建相关: -docker build -t zstar1003/ragflowplus:v0.2.1 . -docker tag zstar1003/ragflowplus:v0.2.1 zstar1003/ragflowplus:v0.2.1 -docker push zstar1003/ragflowplus:v0.2.1 +docker build -t zstar1003/ragflowplus:v0.3.0 . +docker tag zstar1003/ragflowplus:v0.3.0 zstar1003/ragflowplus:v0.3.0 +docker push zstar1003/ragflowplus:v0.3.0 后台镜像构建相关: cd management docker-compose build -docker tag zstar1003/ragflowplus-management-web:v0.2.1 zstar1003/ragflowplus-management-web:v0.2.1 -docker tag zstar1003/ragflowplus-management-server:v0.2.1 zstar1003/ragflowplus-management-server:v0.2.1 -docker push zstar1003/ragflowplus-management-web:v0.2.1 -docker push zstar1003/ragflowplus-management-server:v0.2.1 +docker tag zstar1003/ragflowplus-management-web:v0.3.0 zstar1003/ragflowplus-management-web:v0.3.0 +docker tag zstar1003/ragflowplus-management-server:v0.3.0 zstar1003/ragflowplus-management-server:v0.3.0 +docker push zstar1003/ragflowplus-management-web:v0.3.0 +docker push zstar1003/ragflowplus-management-server:v0.3.0 diff --git a/docker/.env b/docker/.env index eb14412..c29a759 100644 --- a/docker/.env +++ b/docker/.env @@ -50,6 +50,8 @@ MYSQL_PORT=5455 # The hostname where the MinIO service is exposed MINIO_HOST=minio +# minio上传文件时的ip地址,如需公网访问,可修改为公网ip地址 +MINIO_VISIT_HOST=host.docker.internal # The port used to expose the MinIO console interface to the host machine, # allowing EXTERNAL access to the web-based console running inside the Docker container. MINIO_CONSOLE_PORT=9001 @@ -73,10 +75,10 @@ REDIS_PASSWORD=infini_rag_flow SVR_HTTP_PORT=9380 -# 镜像名称变更为zstar1003/ragflowplus:v0.2.1,原始为infiniflow/ragflow:v0.18.0-slim -RAGFLOW_IMAGE=zstar1003/ragflowplus:v0.2.1 -RAGFLOWPLUS_MANAGEMENT_WEB_IMAGE=zstar1003/ragflowplus-management-web:v0.2.1 -RAGFLOWPLUS_MANAGEMENT_SERVER_IMAGE=zstar1003/ragflowplus-management-server:v0.2.1 +# RAGFLOW_IMAGE原始为infiniflow/ragflow:v0.18.0-slim +RAGFLOW_IMAGE=zstar1003/ragflowplus:v0.3.0 +RAGFLOWPLUS_MANAGEMENT_WEB_IMAGE=zstar1003/ragflowplus-management-web:v0.3.0 +RAGFLOWPLUS_MANAGEMENT_SERVER_IMAGE=zstar1003/ragflowplus-management-server:v0.3.0 # The local time zone. TIMEZONE='Asia/Shanghai' diff --git a/management/Dockerfile b/management/Dockerfile index 0088aeb..0126088 100644 --- a/management/Dockerfile +++ b/management/Dockerfile @@ -44,6 +44,7 @@ COPY server /app RUN mkdir -p /root/.cache/huggingface/hub/ COPY models--opendatalab--PDF-Extract-Kit-1.0 /root/.cache/huggingface/hub/models--opendatalab--PDF-Extract-Kit-1.0 COPY models--hantian--layoutreader /root/.cache/huggingface/hub/models--hantian--layoutreader +COPY models--slanet_plus/slanet-plus.onnx /usr/local/lib/python3.10/site-packages/rapid_table/models/ # COPY magic-pdf.json /root/magic-pdf.json # 暴露后端端口 diff --git a/management/docker-compose.yml b/management/docker-compose.yml index bc0dc95..358e826 100644 --- a/management/docker-compose.yml +++ b/management/docker-compose.yml @@ -1,7 +1,7 @@ services: management-frontend: container_name: ragflowplus-management-frontend - image: zstar1003/ragflowplus-management-web:v0.2.1 + image: zstar1003/ragflowplus-management-web:v0.3.0 build: context: . dockerfile: Dockerfile @@ -17,7 +17,7 @@ services: management-backend: container_name: ragflowplus-management-backend - image: zstar1003/ragflowplus-management-server:v0.2.1 + image: zstar1003/ragflowplus-management-server:v0.3.0 build: context: . dockerfile: Dockerfile diff --git a/management/server/database.py b/management/server/database.py index 7eb0cbc..e172720 100644 --- a/management/server/database.py +++ b/management/server/database.py @@ -1,34 +1,45 @@ import mysql.connector import os -from utils import generate_uuid, encrypt_password -from datetime import datetime from minio import Minio from dotenv import load_dotenv -from elasticsearch import Elasticsearch +from elasticsearch import Elasticsearch # 加载环境变量 load_dotenv("../../docker/.env") + # 检测是否在Docker容器中运行 def is_running_in_docker(): # 检查是否存在/.dockerenv文件 - docker_env = os.path.exists('/.dockerenv') + docker_env = os.path.exists("/.dockerenv") # 或者检查cgroup中是否包含docker字符串 try: - with open('/proc/self/cgroup', 'r') as f: - return docker_env or 'docker' in f.read() - except: + with open("/proc/self/cgroup", "r") as f: + return docker_env or "docker" in f.read() + except: # noqa: E722 return docker_env -# 根据运行环境选择合适的主机地址 -DB_HOST = 'host.docker.internal' if is_running_in_docker() else 'localhost' -MINIO_HOST = 'host.docker.internal' if is_running_in_docker() else 'localhost' -ES_HOST = 'es01' if is_running_in_docker() else 'localhost' + +# 根据运行环境选择合适的主机地址和端口 +if is_running_in_docker(): + MYSQL_HOST = "mysql" + MYSQL_PORT = 3306 + MINIO_HOST = os.getenv("MINIO_VISIT_HOST", "host.docker.internal") + MINIO_PORT = 9000 + ES_HOST = "es01" + ES_PORT = 9200 +else: + MYSQL_HOST = "host.docker.internal" + MYSQL_PORT = int(os.getenv("MYSQL_PORT", "5455")) + MINIO_HOST = "host.docker.internal" + MINIO_PORT = int(os.getenv("MINIO_PORT", "9000")) + ES_HOST = "host.docker.internal" + ES_PORT = int(os.getenv("ES_PORT", "9200")) # 数据库连接配置 DB_CONFIG = { - "host": DB_HOST, - "port": int(os.getenv("MYSQL_PORT", "5455")), + "host": MYSQL_HOST, + "port": MYSQL_PORT, "user": "root", "password": os.getenv("MYSQL_PASSWORD", "infini_rag_flow"), "database": "rag_flow", @@ -36,20 +47,21 @@ DB_CONFIG = { # MinIO连接配置 MINIO_CONFIG = { - "endpoint": f"{MINIO_HOST}:{os.getenv('MINIO_PORT', '9000')}", + "endpoint": f"{MINIO_HOST}:{MINIO_PORT}", "access_key": os.getenv("MINIO_USER", "rag_flow"), "secret_key": os.getenv("MINIO_PASSWORD", "infini_rag_flow"), - "secure": False + "secure": False, } # Elasticsearch连接配置 ES_CONFIG = { - "host": f"http://{ES_HOST}:{os.getenv('ES_PORT', '9200')}", + "host": f"http://{ES_HOST}:{ES_PORT}", "user": os.getenv("ELASTIC_USER", "elastic"), "password": os.getenv("ELASTIC_PASSWORD", "infini_rag_flow"), - "use_ssl": os.getenv("ES_USE_SSL", "false").lower() == "true" + "use_ssl": os.getenv("ES_USE_SSL", "false").lower() == "true", } + def get_db_connection(): """创建MySQL数据库连接""" try: @@ -59,43 +71,39 @@ def get_db_connection(): print(f"MySQL连接失败: {str(e)}") raise e + def get_minio_client(): """创建MinIO客户端连接""" try: - minio_client = Minio( - endpoint=MINIO_CONFIG["endpoint"], - access_key=MINIO_CONFIG["access_key"], - secret_key=MINIO_CONFIG["secret_key"], - secure=MINIO_CONFIG["secure"] - ) + minio_client = Minio(endpoint=MINIO_CONFIG["endpoint"], access_key=MINIO_CONFIG["access_key"], secret_key=MINIO_CONFIG["secret_key"], secure=MINIO_CONFIG["secure"]) return minio_client except Exception as e: print(f"MinIO连接失败: {str(e)}") raise e + def get_es_client(): """创建Elasticsearch客户端连接""" try: # 构建连接参数 - es_params = { - "hosts": [ES_CONFIG["host"]] - } - + es_params = {"hosts": [ES_CONFIG["host"]]} + # 如果提供了用户名和密码,添加认证信息 if ES_CONFIG["user"] and ES_CONFIG["password"]: es_params["basic_auth"] = (ES_CONFIG["user"], ES_CONFIG["password"]) - + # 如果需要SSL,添加SSL配置 if ES_CONFIG["use_ssl"]: es_params["use_ssl"] = True es_params["verify_certs"] = False # 在开发环境中可以设置为False,生产环境应该设置为True - + es_client = Elasticsearch(**es_params) return es_client except Exception as e: print(f"Elasticsearch连接失败: {str(e)}") raise e + def test_connections(): """测试数据库和MinIO连接""" try: @@ -107,12 +115,12 @@ def test_connections(): cursor.close() db_conn.close() print("MySQL连接测试成功") - + # 测试MinIO连接 minio_client = get_minio_client() buckets = minio_client.list_buckets() print(f"MinIO连接测试成功,共有 {len(buckets)} 个存储桶") - + # 测试Elasticsearch连接 try: es_client = get_es_client() @@ -120,12 +128,13 @@ def test_connections(): print(f"Elasticsearch连接测试成功,版本: {es_info.get('version', {}).get('number', '未知')}") except Exception as e: print(f"Elasticsearch连接测试失败: {str(e)}") - + return True except Exception as e: print(f"连接测试失败: {str(e)}") return False + if __name__ == "__main__": # 如果直接运行此文件,则测试连接 - test_connections() \ No newline at end of file + test_connections() diff --git a/management/server/requirements.txt b/management/server/requirements.txt index 6833f2b..eecd52b 100644 --- a/management/server/requirements.txt +++ b/management/server/requirements.txt @@ -12,4 +12,15 @@ elasticsearch==8.12.0 minio==7.2.4 strenum==0.4.15 peewee==3.17.1 -pytz==2020.5 \ No newline at end of file +pytz==2020.5 +bs4==0.0.2 +opencv-python==4.10.0.84 +ultralytics==8.3.102 +doclayout-yolo==0.0.3 +ftfy==6.3.1 +dill==0.4.0 +shapely==2.1.0 +pyclipper==1.3.0.post6 +omegaconf==2.3.0 +rapid-table==1.0.3 +openai==1.70.0 \ No newline at end of file diff --git a/web/src/pages/chat/index.tsx b/web/src/pages/chat/index.tsx index a81dc35..8e2af93 100644 --- a/web/src/pages/chat/index.tsx +++ b/web/src/pages/chat/index.tsx @@ -429,7 +429,10 @@ const Chat = () => { step={1} defaultValue={fontSize} style={{ width: '80%' }} - onChange={(value) => setFontSize(value)} + onChange={(value) => { + setFontSize(value); + localStorage.setItem('chatFontSize', value.toString()); + }} />