191 行
5.2 KiB
Bash
191 行
5.2 KiB
Bash
## hyb-oa 试运行环境变量示例(单机)
|
||
##
|
||
## 说明:
|
||
## - 统一以 deploy/trialrun/.env 作为 trialrun 部署事实源。
|
||
## - 默认使用 env_file 注入 server / worker / init 容器环境。
|
||
## - 推荐使用无引号值;旧的带引号写法当前仍兼容,但建议后续逐步改成无引号。
|
||
## - 普通字符串、布尔值、数字、cron 都可直接写为无引号值。
|
||
##
|
||
## 使用方式:
|
||
## cp deploy/trialrun/.env.example deploy/trialrun/.env
|
||
## 然后按需修改 deploy/trialrun/.env 中的值(不要提交 .env)
|
||
##
|
||
## 同机公网部署建议:
|
||
## - 官网继续使用 hyinda.com / www.hyinda.com
|
||
## - OA 单独使用 oa.example.com 一类二级域名
|
||
## - 正式公网环境请保持 APP_ORIGIN=https://oa.example.com
|
||
## - 正式公网环境请保持 COOKIE_SECURE=true
|
||
##
|
||
|
||
# ===== 运行模式与基础域名 =====
|
||
NODE_ENV=production
|
||
APP_ORIGIN=https://oa.example.com
|
||
APP_TIMEZONE=Asia/Shanghai
|
||
HOST=0.0.0.0
|
||
PORT=3000
|
||
COOKIE_SECURE=true
|
||
OPENAPI_DOCS_ENABLED=false
|
||
SERVE_CLIENT_DIST=true
|
||
CLIENT_DIST_DIR=../client/dist
|
||
SIGNED_URL_TTL_SECONDS=600
|
||
MAX_UPLOAD_SIZE_BYTES=10485760
|
||
|
||
# ===== 服务端密钥(必须修改) =====
|
||
JWT_SECRET=change_me_in_trialrun
|
||
FIELD_ENCRYPTION_KEY=
|
||
|
||
# ===== 密码 / 登录安全 =====
|
||
PASSWORD_RESET_CODE_TTL_SECONDS=600
|
||
DEV_SHOW_PASSWORD_RESET_CODE=false
|
||
AUTH_LOGIN_FAIL_WINDOW_SECONDS=900
|
||
AUTH_LOGIN_FAIL_MAX_ATTEMPTS=5
|
||
AUTH_LOGIN_LOCK_SECONDS=1800
|
||
RATE_LIMIT_ENABLED=true
|
||
RATE_LIMIT_LOGIN_MAX=10
|
||
RATE_LIMIT_LOGIN_WINDOW=1 minute
|
||
PUBLIC_SECURITY_HARDENING_ENABLED=true
|
||
|
||
# ===== 可观测性 =====
|
||
METRICS_ENABLED=true
|
||
OTEL_TRACES_ENABLED=false
|
||
|
||
# ===== OIDC / SSO(可选) =====
|
||
OIDC_ENABLED=false
|
||
OIDC_ISSUER_URL=
|
||
OIDC_CLIENT_ID=
|
||
OIDC_CLIENT_SECRET=
|
||
OIDC_REDIRECT_URI=https://oa.example.com/api/auth/oidc/callback
|
||
OIDC_SCOPES=openid profile email
|
||
|
||
# ===== 企业微信入口 / OAuth(可选) =====
|
||
WECOM_ENABLED=false
|
||
WECOM_ENTRY_ENABLED=false
|
||
WECOM_CORP_ID=
|
||
WECOM_AGENT_ID=
|
||
WECOM_AGENT_SECRET=
|
||
WECOM_OAUTH_ENABLED=false
|
||
WECOM_REDIRECT_URI=https://oa.example.com/api/auth/wecom/callback
|
||
WECOM_ALLOWED_RETURN_HOSTS=oa.example.com
|
||
WECOM_CHECKIN_SYNC_ENABLED=false
|
||
WECOM_CHECKIN_SECRET=
|
||
IM_NOTIFIER_ENABLED=true
|
||
|
||
# ===== 数据库(Compose 内部连接) =====
|
||
POSTGRES_DB=hyb_oa
|
||
POSTGRES_USER=hyboa_user
|
||
POSTGRES_PASSWORD=hyboa_password
|
||
DATABASE_URL=postgresql://hyboa_user:hyboa_password@db:5432/hyb_oa?schema=public
|
||
# SHADOW_DATABASE_URL=postgresql://hyboa_user:hyboa_password@db:5432/hyb_oa_shadow
|
||
|
||
# ===== 存储与上传 =====
|
||
STORAGE_DIR=/data/storage
|
||
STORAGE_DRIVER=local
|
||
S3_ENDPOINT=http://minio:9000
|
||
S3_REGION=us-east-1
|
||
S3_BUCKET=hyb-oa
|
||
S3_ACCESS_KEY_ID=minioadmin
|
||
S3_SECRET_ACCESS_KEY=minioadmin
|
||
S3_FORCE_PATH_STYLE=true
|
||
MINIO_ROOT_USER=minioadmin
|
||
MINIO_ROOT_PASSWORD=minioadmin
|
||
|
||
# ===== OCR(off | mock | tencent) =====
|
||
OCR_PROVIDER=mock
|
||
OCR_CRON_ENABLED=true
|
||
OCR_MAX_ATTEMPTS=3
|
||
OCR_POLL_CRON=*/5 * * * * *
|
||
OCR_BATCH_SIZE=10
|
||
OCR_LOCK_TTL_SECONDS=300
|
||
OCR_TIMEOUT_MS=5000
|
||
TENCENT_SECRET_ID=
|
||
TENCENT_SECRET_KEY=
|
||
TENCENT_OCR_REGION=ap-beijing
|
||
|
||
# ===== 验真 / 发票 / 节假日 =====
|
||
INVOICE_VERIFICATION_ENABLED=false
|
||
LEAVE_HOLIDAY_CALENDAR_ENABLED=true
|
||
VERIFICATION_PROVIDER=mock
|
||
VERIFICATION_POLL_CRON=* * * * *
|
||
VERIFICATION_MAX_ATTEMPTS=3
|
||
VERIFICATION_RETRY_COOLDOWN_SECONDS=60
|
||
VERIFICATION_TIMEOUT_MS=5000
|
||
INVOICE_ARCHIVE_CRON=30 2 * * *
|
||
INVOICE_ARCHIVE_UNUSED_DAYS=90
|
||
INVOICE_ARCHIVE_BATCH_SIZE=200
|
||
|
||
# ===== 预算 / 费控 =====
|
||
BUDGET_CONTROL_MODE=warn
|
||
BUDGET_PRECHECK_ENABLED=false
|
||
PAYMENT_BATCH_ENABLED=false
|
||
|
||
# ===== 周边集成 / ERP =====
|
||
ERP_SYNC_ENABLED=false
|
||
ERP_SYNC_PROVIDER=mock
|
||
ERP_SYNC_ENDPOINT=
|
||
ERP_SYNC_TIMEOUT_MS=5000
|
||
ERP_SYNC_AUTH_TOKEN=
|
||
ERP_JOURNAL_EXPORT_ENDPOINT=
|
||
ERP_PROCUREMENT_EXPORT_ENDPOINT=
|
||
ERP_ASSET_EXPORT_ENDPOINT=
|
||
ERP_MASTER_DATA_ENDPOINT=
|
||
ERP_PROCUREMENT_TIMEOUT_MS=5000
|
||
ERP_ASSET_TIMEOUT_MS=5000
|
||
ERP_MASTER_DATA_TIMEOUT_MS=5000
|
||
ERP_MASTER_DATA_SYNC_CRON=
|
||
TRAVEL_SYNC_ENABLED=false
|
||
INTEGRATION_OUTBOX_CRON=* * * * *
|
||
INTEGRATION_OUTBOX_BATCH_SIZE=20
|
||
INTEGRATION_OUTBOX_MAX_ATTEMPTS=5
|
||
INTEGRATION_OUTBOX_RETRY_SECONDS=120
|
||
|
||
# ===== 邮件 =====
|
||
EMAIL_ENABLED=false
|
||
EMAIL_FROM=[email protected]
|
||
EMAIL_BASE_URL=https://oa.example.com
|
||
SMTP_HOST=
|
||
SMTP_PORT=587
|
||
SMTP_SECURE=false
|
||
SMTP_USER=
|
||
SMTP_PASS=
|
||
|
||
# ===== 委派 / 作业 =====
|
||
DELEGATION_REVOKE_CRON=0 * * * *
|
||
JOB_DRIVER=pgboss
|
||
JOBS_ENABLED=true
|
||
PG_BOSS_SCHEMA=pgboss
|
||
|
||
# ===== AI(默认关闭) =====
|
||
AI_ASSIST_ENABLED=false
|
||
AI_PROVIDER=mock
|
||
AI_BASE_URL=
|
||
AI_MODEL=
|
||
AI_TIMEOUT_MS=10000
|
||
AI_AUTH_TOKEN=
|
||
|
||
# ===== Trialrun 初始化管理员 =====
|
||
TRIALRUN_ADMIN_EMAIL=[email protected]
|
||
TRIALRUN_ADMIN_PHONE=13800000000
|
||
TRIALRUN_ADMIN_PASSWORD=
|
||
TRIALRUN_ADMIN_EMPLOYEE_NO=T0000
|
||
TRIALRUN_ADMIN_NAME=Trialrun Admin
|
||
TRIALRUN_ADMIN_TITLE=系统管理员
|
||
TRIALRUN_ADMIN_HIRE_DATE=2020-01-01
|
||
|
||
# ===== 功能开关环境闸门(trialrun 推荐) =====
|
||
PORTAL_HOME_ENABLED=true
|
||
GLOBAL_SEARCH_ENABLED=true
|
||
ANNOUNCEMENTS_ENABLED=true
|
||
PRESENCE_BOARD_ENABLED=true
|
||
ATTENDANCE_ENABLED=false
|
||
ATTENDANCE_UNIFIED_ENABLED=true
|
||
WEEKLY_REPORT_ENABLED=true
|
||
EMPLOYEE_LIFECYCLE_ENABLED=true
|
||
TODO_BOARD_ENABLED=true
|
||
WORKFLOW_DEFINITION_ADMIN_ENABLED=false
|
||
CUTOVER_CONSOLE_ENABLED=false
|
||
PROJECT_DOMAIN_ENABLED=true
|
||
PROJECT_LINKING_ENABLED=true
|
||
PROJECT_COMMUNICATION_LOG_ENABLED=true
|
||
PROJECT_CLOSURE_CHECKLIST_ENABLED=true
|
||
CONFIDENTIAL_DOC_REFS_ENABLED=true
|