# 数据库连接:达梦 DM(当前启用;主机不变,端口 5236,用户/库名 DMS) DMS_DATABASE_URL=dm+dmPython://DMS:change-me@127.0.0.1:5236 # 原 MySQL 8连接(保留备查,回切时取消注释并注释上方 DM 链接): # DMS_DATABASE_URL=mysql+pymysql://dms_app:change-me@127.0.0.1:3306/dms?charset=utf8mb4 # 存储根目录:留空(推荐)由启动器自动选择默认位置。 # - 开发模式:backend/dms-storage/ # - 打包模式:dms-server.exe 同级 dms-storage/ # 如需自定义,请填写绝对路径,并取消下面一行注释。 # DMS_STORAGE_ROOT= # 留空时使用内置中文UI字典;部署时可指向外部UTF-8 JSON,修改后需重启 DMS_UI_DICTIONARY_CONFIG_PATH= # 单文件、请求总大小与批量文件数 DMS_MAX_FILE_SIZE=52428800 DMS_MAX_UPLOAD_SIZE=104857600 DMS_BATCH_MAX_FILES=50 # LibreOffice 离线转换配置(DOC/DOCX 转 PDF 预览) DMS_OFFICE_PREVIEW_ENABLED=true DMS_LIBREOFFICE_EXECUTABLE=C:\\Program Files\\LibreOffice\\program\\soffice.exe DMS_LIBREOFFICE_TIMEOUT_SECONDS=60 DMS_LIBREOFFICE_MAX_CONCURRENCY=2 # B2配置真实随机密钥;禁止提交真实密钥 DMS_JWT_SECRET=replace-with-a-random-secret # 访问令牌有效期(秒),缺省 3600(1 小时);保持登录(7 天)不受此项影响 DMS_JWT_EXPIRES_SECONDS=3600 # 页面空闲自动登出(分钟),缺省 5:用户在页面上无鼠标/滚动/键盘等操作持续 # 达到该时长后前端自动退出登录;设为 0 表示关闭该功能 DMS_IDLE_LOGOUT_MINUTES=5 # 登录图片验证码(缺省 false 关闭):开启时登录页显示图片验证码输入,登录请求 # 需携带 captchaId/captchaCode;关闭后登录回归用户名/密码三键请求 DMS_CAPTCHA_ENABLED=false # 超级管理员登录开关(缺省 true 允许):设为 false 后内置 admin 禁止登录(报错 # 与用户名或密码错误完全一致)、用户列表隐藏 admin、创建同名用户报"不能创建该 # 名称的用户",外部无法感知系统中存在该账号 DMS_ALLOW_ADMIN_LOGIN=true # ───────────────────────────────────────────────────────────── # 禁用用户名密码登录(安全管控) # ───────────────────────────────────────────────────────────── # 缺省 false。设为 true 后仅允许单点登录(门户跳转验签、本地 SSO 代理)进入系统: # POST /auth/login 一律 403「用户名密码登录已被禁用」(先于验证码校验与用户查询, # 不消耗验证码、不泄露账号是否存在),登录页隐藏账号密码表单仅显示单点登录提示。 # 注意:开启前请确认门户(DMS_PORTAL_*)或本地 SSO(DMS_SSO_PROXY_ENABLED=true) # 至少一项可用,否则将无人能登录系统(需改回 .env 后重启方可恢复) DMS_PASSWORD_LOGIN_DISABLED=false # 一次一码轮换(安全需求:写操作防重放,缺省 true,当前仅 Java 版实现): # 开启后写操作成功响应经 X-DMS-Access-Token 头返回新授权码,旧码写操作即拒; # false 时登录不落会话代、写操作不比对不轮换。列 session_jti 由 0038/V24 迁移添加 DMS_TOKEN_ROTATION_ENABLED=true # 系统管理页监控信息展示(缺省 false):false 时系统管理页仅显示维护操作与备份管理, # 隐藏系统信息/资源监控/存储用量/运行参数等区块;true 时完整显示 DMS_SYSTEM_MONITOR_ENABLED=false # rsync 可执行文件路径(可选,RSYNC 备份模式用):留空自动探测——先 PATH 上的 # rsync,再发行目录 tools/rsync/ 内置版(Windows 发行包已随包携带 cwRsync) # DMS_RSYNC_EXECUTABLE= # 应用层信封加密 KEK(契约1.21):base64 编码的 32 字节密钥。 # 配置后 original/ 新落盘文件以 AES-256-GCM(KEK/DEK)加密存储,读路径自动解密; # 留空=明文落盘(存量文件始终可读,不回迁加密)。 # 生成示例:python -c "import secrets,base64;print(base64.b64encode(secrets.token_bytes(32)).decode())" # 注意:密钥丢失将导致已加密文件无法读取,请妥善备份;变更密钥前需先用旧密钥回迁解密。 DMS_STORAGE_KEK= # CORS 跨域白名单(逗号分隔 Origin);默认留空=仅同源访问(推荐,前端由本服务托管)。 # 仅开发分域联调时配置,例如 DMS_CORS_ORIGINS=http://localhost:5173 DMS_CORS_ORIGINS= # 仅供显式执行 python -m dms.seed_dev;密码值不得提交 DMS_SEED_ADMIN_PASSWORD= DMS_SEED_USER_PASSWORD= # true会覆盖admin和user两名同名用户的密码并使其旧Token失效,默认必须保持false DMS_SEED_OVERWRITE_PASSWORDS=false # 既有AI配置仍独立使用 INFO_EXTRACTOR_* 环境变量 # ───────────────────────────────────────────────────────────── # 门户跳转按需登录(对接其他系统门户;留空/不配置=功能整体关闭, # 用户名密码登录不受影响)。详见 docs/门户对接指南.md # ───────────────────────────────────────────────────────────── # provider类型:留空=关闭 / mock=本地联调 / http=标准REST配置驱动 / custom=手写适配 DMS_PORTAL_PROVIDER= # 跳转URL中携带token的参数名(默认token) DMS_PORTAL_TOKEN_PARAM=token # ---- 以下仅 provider=http 时需要 ---- # 对端验签接口地址(token怎么传由下面三项决定) DMS_PORTAL_VERIFY_URL= # GET 或 POST DMS_PORTAL_VERIFY_METHOD=POST # token放置位置:header / body / query DMS_PORTAL_VERIFY_TOKEN_IN=header # header方式时的头名与值模板({token}为占位符) DMS_PORTAL_VERIFY_HEADER=Authorization DMS_PORTAL_VERIFY_HEADER_TEMPLATE=Bearer {token} # 验签成功判定:响应JSON中该字段的值等于该值才算通过(支持a.b点路径) DMS_PORTAL_VERIFY_SUCCESS_FIELD=code DMS_PORTAL_VERIFY_SUCCESS_VALUE=0 # 验签响应中用户信息对象所在字段路径(如 data) DMS_PORTAL_VERIFY_USER_FIELD=data # 验签响应不含完整用户信息时,额外的用户信息接口(留空=验签已含) DMS_PORTAL_USERINFO_URL= DMS_PORTAL_USERINFO_UID_PARAM=userId # 用户信息字段映射 local:remote(local固定为externalId/username/realName/orgName) DMS_PORTAL_FIELD_MAP=externalId:userId,username:loginName,realName:realName,orgName:orgName # ---- 新用户落库 ---- # 组织名称匹配不到时的默认组织ID(留空=不挂组织) DMS_PORTAL_DEFAULT_ORG_ID= # 对端HTTP请求超时秒数 DMS_PORTAL_HTTP_TIMEOUT_SECONDS=10