# 数据库连接:达梦 DM(当前启用;主机不变,端口 5236,用户/库名 DMS) # 兼容两种格式:Python 版 dm+dmPython:// 连接串会被自动转换为 jdbc:dm:// 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 # 存储根目录:留空时使用工作目录下 dms-storage/。 # 与 Python 版并行验证共用存储时,显式指向 backend/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 # JWT 密钥(与 Python 版一致时两套后端令牌互通) DMS_JWT_SECRET=replace-with-a-random-secret # 访问令牌有效期(秒),缺省 3600(1 小时);保持登录(7 天)不受此项影响 DMS_JWT_EXPIRES_SECONDS=3600 # 页面空闲自动登出(分钟),缺省 5:用户在页面上无鼠标/滚动/键盘等操作持续 # 达到该时长后前端自动退出登录;设为 0 表示关闭该功能 DMS_IDLE_LOGOUT_MINUTES=5 # 高级检索·提供单位机构级别,缺省 2:提供单位下拉展示机构树第 N 级机构 # (1=一级机构,2=二级机构,依此类推),选中后按该机构及其下级过滤 DMS_SEARCH_ORG_FILTER_LEVEL=2 # 登录图片验证码(缺省 false 关闭,键与 Python 版一致):开启时登录页显示图片 # 验证码输入,登录请求需携带 captchaId/captchaCode;关闭后回归三键请求体 DMS_CAPTCHA_ENABLED=false # 超级管理员登录开关(缺省 true 允许,键与 Python 版一致):设为 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 # 登录界面重置密码审批流(契约1.49) # ───────────────────────────────────────────────────────────── # 登录页(含单点登录的独立密码界面)可自助提交重置密码申请,按用户类型路由 # 审批角色;审批人在通知页待办处理(先到先得),通过后该用户密码清空、 # 回首次登录态(经单点登录进入时重新设置独立密码)。 # 两个键的值均为「角色名」:该角色须存在且启用、且至少有一名活跃挂载用户, # 否则提交申请时报错;首长密码不可再由系统管理员在用户管理中直接重置。 # DMS_RESET_PASSWORD_APPROVER_ROLE_COMMANDER=安全管理员 # DMS_RESET_PASSWORD_APPROVER_ROLE_NORMAL=系统管理员 # 一次一码轮换(安全需求:写操作防重放,缺省 true 开启,当前仅 Java 版实现): # 开启后 POST/PUT/DELETE 写操作成功响应经 X-DMS-Access-Token 头返回轮换出的新 # 授权码,旧码对写操作立即失效(401 SESSION_ROTATED);GET 读请求沿用原码不轮换。 # 设为 false 时登录不落会话代、写操作不比对不轮换,存量会话自然过渡 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 版完全一致,详见 docs/门户对接指南.md) # ───────────────────────────────────────────────────────────── DMS_PORTAL_PROVIDER= DMS_PORTAL_TOKEN_PARAM=token DMS_PORTAL_VERIFY_URL= DMS_PORTAL_VERIFY_METHOD=POST DMS_PORTAL_VERIFY_TOKEN_IN=header DMS_PORTAL_VERIFY_HEADER=Authorization DMS_PORTAL_VERIFY_HEADER_TEMPLATE=Bearer {token} DMS_PORTAL_VERIFY_SUCCESS_FIELD=code DMS_PORTAL_VERIFY_SUCCESS_VALUE=0 DMS_PORTAL_VERIFY_USER_FIELD=data DMS_PORTAL_USERINFO_URL= DMS_PORTAL_USERINFO_UID_PARAM=userId DMS_PORTAL_FIELD_MAP=externalId:userId,username:loginName,realName:realName,orgName:orgName DMS_PORTAL_DEFAULT_ORG_ID= DMS_PORTAL_HTTP_TIMEOUT_SECONDS=10 # ───────────────────────────────────────────────────────────── # 本地单点登录代理(需求2,仅Java版,契约1.25;详见 docs/门户对接指南.md 场景D) # 开关缺省 false;开启后前端未登录时自动探测 proxy-verify,成功进入门户双阶段流程 # ───────────────────────────────────────────────────────────── DMS_SSO_PROXY_ENABLED=false DMS_SSO_PROXY_HOST=127.0.0.1 DMS_SSO_PROXY_PORT=8080 DMS_SSO_USER_SERVICE_HOST=127.0.0.1 DMS_SSO_USER_SERVICE_PORT=8800 DMS_SSO_TIMEOUT_SECONDS=10