| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- #!/usr/bin/env bash
- # =============================================================================
- # 清鉴(zsjz-ai)后端环境变量
- #
- # ai-server 的 application*.yaml 里配置项都写成 ${ENV_NAME:默认值},
- # 本文件把这些变量显式列出来,方便在 Linux 上统一下发/逐项修改。
- # 一个变量都不设置时,后端行为与本文件里的取值一致(即 yaml 中的默认值)。
- #
- # 服务端口(8980)、context-path(/js/a)、应用名(ai-server)固定在
- # application.yaml 里,不参与参数化,因此不在本文件中。
- #
- # 用法(任选其一):
- # 1) 启动前导入当前 shell:
- # set -a; source deploy/env.sh; set +a
- # java -jar ai-server.jar
- # 2) systemd 单元:
- # EnvironmentFile=/opt/zsjz-ai/deploy/env.sh
- #
- # 用法(任选其一):
- # 1) 启动前导入当前 shell:
- # set -a; source deploy/env.sh; set +a
- # java -jar ai-server.jar
- # 2) systemd 单元:
- # EnvironmentFile=/opt/zsjz-ai/deploy/env.sh
- #
- # 注意:
- # · 文件内含数据库口令,部署时请 chmod 600,并按实际环境修改地址与口令。
- # · 下面各项默认值取自 application-dev.yaml(当前开发环境);
- # 【按环境修改】标注的项,生产部署务必逐项确认。
- # · 生效 profile 由 Spring 原生的 SPRING_PROFILES_ACTIVE 控制,默认 dev;
- # 生产可取消下面这行的注释。
- # · sa-token、mybatis-plus 不参与参数化,不在此文件范围。
- # =============================================================================
- # SPRING_PROFILES_ACTIVE="pro"
- # ---------------------------------------------------------------------------
- # 跨域(桌面客户端用 file:// 加载前端,必须允许跨域)
- # ---------------------------------------------------------------------------
- APP_CORS_ENABLED="true"
- APP_CORS_ALLOWED_ORIGIN_PATTERNS="*"
- # ---------------------------------------------------------------------------
- # Spring 基础
- # ---------------------------------------------------------------------------
- SPRING_TASK_SCHEDULING_POOL_SIZE="4"
- SPRING_HTTP_CODECS_MAX_IN_MEMORY_SIZE="10MB"
- SPRING_SERVLET_MULTIPART_MAX_FILE_SIZE="200MB"
- SPRING_SERVLET_MULTIPART_MAX_REQUEST_SIZE="500MB"
- # ---------------------------------------------------------------------------
- # PostgreSQL(平台库,必须装 pgvector 扩展)
- # 【按环境修改】dev 默认 192.168.0.106,pro 默认 localhost
- # ---------------------------------------------------------------------------
- SPRING_DATASOURCE_DYNAMIC_PRIMARY="master"
- SPRING_DATASOURCE_DYNAMIC_STRICT="true"
- SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_URL="jdbc:postgresql://192.168.0.106:5432/zsjz-ai"
- SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_USERNAME="postgres"
- SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_PASSWORD="postgres"
- SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_DRIVER_CLASS_NAME="org.postgresql.Driver"
- # ---------------------------------------------------------------------------
- # Redis(sa-token 登录态硬依赖,不可用则登录相关接口全部异常)
- # 【按环境修改】
- # ---------------------------------------------------------------------------
- SPRING_DATA_REDIS_HOST="192.168.0.106"
- SPRING_DATA_REDIS_PORT="6379"
- # ---------------------------------------------------------------------------
- # Elasticsearch(全文检索,索引 zsjz_search)
- # 【按环境修改】需要鉴权时再打开下面两行
- # ---------------------------------------------------------------------------
- SPRING_ELASTICSEARCH_URIS="http://192.168.0.106:9200"
- SPRING_ELASTICSEARCH_CONNECTION_TIMEOUT="5s"
- SPRING_ELASTICSEARCH_SOCKET_TIMEOUT="60s"
- # SPRING_ELASTICSEARCH_USERNAME=""
- # SPRING_ELASTICSEARCH_PASSWORD=""
- # ---------------------------------------------------------------------------
- # 本地文件存储
- # 【按环境修改】root-path 相对 JVM 工作目录(须为仓库/部署根目录);
- # base-url 必须与 SERVER_PORT、SERVER_SERVLET_CONTEXT_PATH 一致
- # ---------------------------------------------------------------------------
- STORAGE_LOCAL_ROOT_PATH="./data/files"
- STORAGE_LOCAL_BASE_URL="http://localhost:8980/js/a"
- # ---------------------------------------------------------------------------
- # Neo4j(可选,仅图谱能力需要)
- # ---------------------------------------------------------------------------
- NEO4J_URI="bolt://localhost:7687"
- NEO4J_USERNAME="neo4j"
- NEO4J_PASSWORD="neo4j123"
- # ---------------------------------------------------------------------------
- # Agent 表结构语义检索(RAG)
- # ---------------------------------------------------------------------------
- ETL_RAG_ENABLED="true"
- ETL_RAG_TOP_K="5"
- ETL_RAG_SCORE_THRESHOLD="0.3"
- # ---------------------------------------------------------------------------
- # zsjz.insight(AI 研判 / 会话)
- # ---------------------------------------------------------------------------
- ZSJZ_INSIGHT_MAX_SESSIONS_PER_CASE="500"
- ZSJZ_INSIGHT_RETENTION_DAYS="0"
- ZSJZ_INSIGHT_MESSAGE_PAGE_SIZE="20"
- ZSJZ_INSIGHT_MESSAGE_PAGE_SIZE_MAX="100"
- ZSJZ_INSIGHT_SESSION_LOCK_TIMEOUT_MS="3000"
- ZSJZ_INSIGHT_DEFAULT_TOP_N="100"
- ZSJZ_INSIGHT_MAX_TOP_N="200"
- # ---------------------------------------------------------------------------
- # zsjz.duckdb(案件库资源预算与兜底回收)
- # 【按环境修改】max-open-cases 按机器内存/CPU 调整
- # ---------------------------------------------------------------------------
- ZSJZ_DUCKDB_MAX_OPEN_CASES="8"
- ZSJZ_DUCKDB_MEMORY_RATIO="0.6"
- ZSJZ_DUCKDB_THREADS_PER_INSTANCE="4"
- ZSJZ_DUCKDB_REAPER_INITIAL_DELAY_MS="60000"
- ZSJZ_DUCKDB_REAPER_INTERVAL_MS="300000"
- # ---------------------------------------------------------------------------
- # zsjz.file-ai(非表格文件 AI 识别调度)
- # ---------------------------------------------------------------------------
- ZSJZ_FILE_AI_MAX_CONCURRENT="3"
- ZSJZ_FILE_AI_MAX_PENDING="200"
- ZSJZ_FILE_AI_TIMEOUT_SECONDS="120"
- # ---------------------------------------------------------------------------
- # zsjz.embedding(向量模型)
- # 【按环境修改】model-path 指向部署机上的模型目录(含 tokenizer.json 与
- # onnx/model.onnx)。dev 的 yaml 里是 Windows 绝对路径,
- # Linux 上必须改成实际路径,例如 /opt/zsjz-ai/bge-m3。
- # ---------------------------------------------------------------------------
- ZSJZ_EMBEDDING_ENABLED="true"
- ZSJZ_EMBEDDING_MODEL_PATH="/opt/zsjz-ai/bge-m3"
- ZSJZ_EMBEDDING_DIMENSIONS="1024"
- ZSJZ_EMBEDDING_MAX_SEQ_LEN="8192"
- ZSJZ_EMBEDDING_BATCH_SIZE="8"
- ZSJZ_EMBEDDING_INTRA_OP_THREADS="0"
- ZSJZ_EMBEDDING_OPT_LEVEL="BASIC_OPT"
- ZSJZ_EMBEDDING_EAGER_LOAD="false"
- # ---------------------------------------------------------------------------
- # zsjz.ai-clean(AI 清洗与模板向量索引)
- # ---------------------------------------------------------------------------
- ZSJZ_AI_CLEAN_BATCH_TOKEN_BUDGET="0"
- ZSJZ_AI_CLEAN_STALE_MINUTES="30"
- ZSJZ_AI_CLEAN_VECTOR_ENABLED="true"
- ZSJZ_AI_CLEAN_VECTOR_AUTO_INDEX_ON_TEMPLATE_CHANGE="true"
- ZSJZ_AI_CLEAN_VECTOR_AUTO_REBUILD_ON_STARTUP="true"
- ZSJZ_AI_CLEAN_VECTOR_TOP_K="12"
- ZSJZ_AI_CLEAN_VECTOR_SCORE_THRESHOLD="0.30"
- ZSJZ_AI_CLEAN_VECTOR_MAX_DOCUMENTS_PER_REBUILD="5000"
- # ---------------------------------------------------------------------------
- # zsjz.chat-attachment(对话附件解析与 RAG)
- # ---------------------------------------------------------------------------
- ZSJZ_CHAT_ATTACHMENT_MAX_DOC_MB="50"
- ZSJZ_CHAT_ATTACHMENT_MAX_SHEET_MB="200"
- ZSJZ_CHAT_ATTACHMENT_INLINE_MAX_CHARS="30000"
- ZSJZ_CHAT_ATTACHMENT_INLINE_MAX_ROWS="200"
- ZSJZ_CHAT_ATTACHMENT_CHUNK_SIZE="1000"
- ZSJZ_CHAT_ATTACHMENT_CHUNK_OVERLAP="100"
- ZSJZ_CHAT_ATTACHMENT_MAX_CHUNKS="500"
- ZSJZ_CHAT_ATTACHMENT_TOP_K="8"
- # ---------------------------------------------------------------------------
- # zsjz.auth(登录安全)
- # 「账号正在使用」判定窗口(分钟):窗口内有活跃会话时,再次登录需确认后顶号
- # ---------------------------------------------------------------------------
- ZSJZ_AUTH_IN_USE_WINDOW_MINUTES="30"
|