diff --git a/.env b/.env new file mode 100644 index 0000000..47f882a --- /dev/null +++ b/.env @@ -0,0 +1,11 @@ +MIGRATIONS_DIR=migrations +DB_HOST=cxd.whcxd.cn +DB_PORT=16159 +DB_USER=erp_pgsql +DB_PASSWORD=erp_2025 +DB_NAME=junhong_cmp_test +DB_SSLMODE=disable +GOOGLE_GEMINI_BASE_URL="http://45.155.220.179:8317" # 根据实际填写你服务器的ip地址或者域名 +GEMINI_API_KEY="sk-VoNbvr6aGpjvZX64rvhrwowrZrCgtGuX9oxykIy8F1DBg" +GOOGLE_GENAI_USE_GCA="true" +GEMINI_MODEL="gemini-3-pro-preview" # 如果你有gemini3权限可以填: gemini-3-pro-preview \ No newline at end of file diff --git a/.env.local b/.env.local new file mode 100644 index 0000000..064d11b --- /dev/null +++ b/.env.local @@ -0,0 +1,93 @@ +# ============================================================================ +# 君鸿卡管系统 - 本地开发环境变量 +# 生成时间: 2026-01-30 17:45:14 +# ============================================================================ +# 使用方法: +# source .env.local && go run cmd/api/main.go +# 或者: +# ./scripts/run-local.sh +# ============================================================================ + +# ---------------------------------------------------------------------------- +# 数据库配置(必填) +# ---------------------------------------------------------------------------- +export JUNHONG_DATABASE_HOST="cxd.whcxd.cn" +export JUNHONG_DATABASE_PORT="16159" +export JUNHONG_DATABASE_USER="erp_pgsql" +export JUNHONG_DATABASE_PASSWORD="erp_2025" +export JUNHONG_DATABASE_DBNAME="junhong_cmp_test" +export JUNHONG_DATABASE_SSLMODE="disable" + +# ---------------------------------------------------------------------------- +# Redis 配置(必填) +# ---------------------------------------------------------------------------- +export JUNHONG_REDIS_ADDRESS="cxd.whcxd.cn" +export JUNHONG_REDIS_PORT="16299" +export JUNHONG_REDIS_PASSWORD="cpNbWtAaqgo1YJmbMp3h" +export JUNHONG_REDIS_DB="6" + +# ---------------------------------------------------------------------------- +# JWT 配置(必填) +# ---------------------------------------------------------------------------- +export JUNHONG_JWT_SECRET_KEY="dev-secret-key-for-testing-only-32chars!" + +# ---------------------------------------------------------------------------- +# 客户端配置(可选) +# ---------------------------------------------------------------------------- +# 是否强制 C 端用户绑定手机号(true: 强制,false: 不强制) +export JUNHONG_CLIENT_REQUIRE_PHONE_BINDING="true" + +# ---------------------------------------------------------------------------- +# 服务器配置 +# ---------------------------------------------------------------------------- +export JUNHONG_SERVER_ADDRESS=":3000" + +# ---------------------------------------------------------------------------- +# 日志配置 +# ---------------------------------------------------------------------------- +export JUNHONG_LOGGING_LEVEL="debug" +export JUNHONG_LOGGING_DEVELOPMENT="true" +export JUNHONG_LOGGING_APP_LOG_FILENAME="logs/app.log" +export JUNHONG_LOGGING_ACCESS_LOG_FILENAME="logs/access.log" + +# ---------------------------------------------------------------------------- +# Gateway 服务配置 +# ---------------------------------------------------------------------------- +export JUNHONG_GATEWAY_BASE_URL="https://open.whjhft.com/openapi" +export JUNHONG_GATEWAY_APP_ID="LfjL0WjUqpwkItQ0" +export JUNHONG_GATEWAY_APP_SECRET="K0DYuWzbRE6zg5bX" +export JUNHONG_GATEWAY_TIMEOUT="30" + +# ---------------------------------------------------------------------------- +# 对象存储配置 +# ---------------------------------------------------------------------------- +export JUNHONG_STORAGE_PROVIDER="s3" +export JUNHONG_STORAGE_S3_ENDPOINT="http://obs-helf.cucloud.cn" +export JUNHONG_STORAGE_S3_REGION="cn-langfang-2" +export JUNHONG_STORAGE_S3_BUCKET="cmp" +export JUNHONG_STORAGE_S3_ACCESS_KEY_ID="598F558CF6FF46E79D1CFC607852378C9523" +export JUNHONG_STORAGE_S3_SECRET_ACCESS_KEY="8393425DCB2F48F1914FF39DCBC6C7B17325" +export JUNHONG_STORAGE_S3_USE_SSL="false" +export JUNHONG_STORAGE_S3_PATH_STYLE="true" + +# ---------------------------------------------------------------------------- +# 迁移工具兼容配置(用于 scripts/migrate.sh) +# ---------------------------------------------------------------------------- +export MIGRATIONS_DIR="migrations" +export DB_HOST="cxd.whcxd.cn" +export DB_PORT="16159" +export DB_USER="erp_pgsql" +export DB_PASSWORD="erp_2025" +export DB_NAME="junhong_cmp_test" +export DB_SSLMODE="disable" + + +# ---------------------------------------------------------------------------- +# 短信服务配置 +# ---------------------------------------------------------------------------- +export JUNHONG_SMS_GATEWAY_URL="https://gateway.sms.whjhft.com:8443" +export JUNHONG_SMS_USERNAME="JH0001" +export JUNHONG_SMS_PASSWORD="wwR8E4qnL6F0" +export JUNHONG_SMS_SIGNATURE="【JHFTIOT】" + +JUNHONG_QUEUE_CONCURRENCY=1000 diff --git a/.env.prod b/.env.prod new file mode 100644 index 0000000..3db1e25 --- /dev/null +++ b/.env.prod @@ -0,0 +1,236 @@ +# ========================================================================== +# 君鸿卡管系统 - 本地开发环境变量 +# 生成时间: 2026-05-07 11:56:19 +# 配置依据: pkg/config/defaults/config.yaml + pkg/config/loader.go +# ========================================================================== +# 使用方法: +# source .env.prod && go run cmd/api/main.go +# 或者: +# ./scripts/run-local.sh +# +# 说明: +# - 未注释的 是本地启动常用或必填配置。 +# - 注释掉的 是当前有默认值、按需启用或当前主流程未使用的配置。 +# - 取消注释前请先阅读上方说明,避免覆盖嵌入配置默认值。 +# ========================================================================== + +# ---------------------------------------------------------------------------- +# 数据库配置(必填) +# ---------------------------------------------------------------------------- +# 数据库主机地址;应用启动必填。 +export JUNHONG_DATABASE_HOST=cxd.whcxd.cn +# 数据库端口;默认 5432。 +export JUNHONG_DATABASE_PORT=16159 +# 数据库用户名;应用启动必填。 +export JUNHONG_DATABASE_USER=junhong_cmp +# 数据库密码;应用启动必填,敏感信息请勿提交。 +export JUNHONG_DATABASE_PASSWORD=CtCom1zBzPQbpVNf3rCNxH +# 数据库名称;应用启动必填。 +export JUNHONG_DATABASE_DBNAME=junhong_cmp_prod +# 数据库 SSL 模式;本地通常使用 disable。 +export JUNHONG_DATABASE_SSLMODE=disable + +# ---------------------------------------------------------------------------- +# Redis 配置(必填) +# ---------------------------------------------------------------------------- +# Redis 主机地址;应用启动必填。 +export JUNHONG_REDIS_ADDRESS=192.168.1.22 +# Redis 端口;默认 6379。 +export JUNHONG_REDIS_PORT=6379 +# Redis 密码;无密码时留空。 +export JUNHONG_REDIS_PASSWORD=Bm500vXEyLg0RUzw7YcyPjbRifhz +# Redis 数据库编号;默认 0。 +export JUNHONG_REDIS_DB=0 + +# ---------------------------------------------------------------------------- +# JWT 配置(必填) +# ---------------------------------------------------------------------------- +# JWT 签名密钥;必须至少 32 字符,生产环境必须单独生成。 +export JUNHONG_JWT_SECRET_KEY=a0xzpGhR3zB54JAiEJtoKnjwgAGMLmRw +# C 端 JWT Token 有效期;默认 24h,通常无需覆盖。 +export JUNHONG_JWT_TOKEN_DURATION=24h +# B 端访问令牌 TTL;默认 24h。 +export JUNHONG_JWT_ACCESS_TOKEN_TTL=24h +# B 端刷新令牌 TTL;默认 168h。 +export JUNHONG_JWT_REFRESH_TOKEN_TTL=168h + +# ---------------------------------------------------------------------------- +# 服务器配置 +# ---------------------------------------------------------------------------- +# 服务监听地址;本地默认 :3000。 +export JUNHONG_SERVER_ADDRESS=:3527 +# 读取请求超时时间;默认 30s,通常无需覆盖。 +export JUNHONG_SERVER_READ_TIMEOUT=30s +# 写响应超时时间;默认 30s,通常无需覆盖。 +export JUNHONG_SERVER_WRITE_TIMEOUT=30s +# 优雅关闭超时时间;默认 30s。 +export JUNHONG_SERVER_SHUTDOWN_TIMEOUT=30s +# Fiber 预分叉模式;本地和 macOS 开发环境通常不要启用。 +# JUNHONG_SERVER_PREFORK=false + +# ---------------------------------------------------------------------------- +# 日志配置 +# ---------------------------------------------------------------------------- +# 日志级别;可选 debug/info/warn/error。 +export JUNHONG_LOGGING_LEVEL=debug +# 本地开发模式日志;生产环境应使用 false。 +export JUNHONG_LOGGING_DEVELOPMENT=true +# 应用日志文件路径;本地写入项目 logs 目录。 +export JUNHONG_LOGGING_APP_LOG_FILENAME=logs/app.log +# 访问日志文件路径;本地写入项目 logs 目录。 +export JUNHONG_LOGGING_ACCESS_LOG_FILENAME=logs/access.log +# 应用日志单文件最大大小(MB);默认 100。 +export JUNHONG_LOGGING_APP_LOG_MAX_SIZE=100 +# 应用日志最多保留的旧文件数;默认 3。 +export JUNHONG_LOGGING_APP_LOG_MAX_BACKUPS=15 +# 应用日志最多保留天数;默认 7。 +export JUNHONG_LOGGING_APP_LOG_MAX_AGE=14 +# 是否压缩应用日志轮转文件;默认 true。 +export JUNHONG_LOGGING_APP_LOG_COMPRESS=true +# 访问日志单文件最大大小(MB);默认 100。 +export JUNHONG_LOGGING_ACCESS_LOG_MAX_SIZE=100 +# 访问日志最多保留的旧文件数;默认 3。 +export JUNHONG_LOGGING_ACCESS_LOG_MAX_BACKUPS=15 +# 访问日志最多保留天数;默认 7。 +export JUNHONG_LOGGING_ACCESS_LOG_MAX_AGE=14 +# 是否压缩访问日志轮转文件;默认 true。 +export JUNHONG_LOGGING_ACCESS_LOG_COMPRESS=true + +# ---------------------------------------------------------------------------- +# 客户端配置 +# ---------------------------------------------------------------------------- +# 是否强制 C 端用户绑定手机号;当前默认 true。 +export JUNHONG_CLIENT_REQUIRE_PHONE_BINDING=true + +# ---------------------------------------------------------------------------- +# 数据库连接池配置(可选) +# ---------------------------------------------------------------------------- +# 数据库最大打开连接数;默认 25,本地通常不用改。 +export JUNHONG_DATABASE_MAX_OPEN_CONNS=25 +# 数据库最大空闲连接数;默认 10。 +export JUNHONG_DATABASE_MAX_IDLE_CONNS=10 +# 数据库连接最大生命周期;默认 5m。 +export JUNHONG_DATABASE_CONN_MAX_LIFETIME=5m + +# ---------------------------------------------------------------------------- +# Redis 连接池配置(可选) +# ---------------------------------------------------------------------------- +# Redis 连接池大小;默认 10。 +export JUNHONG_REDIS_POOL_SIZE=20 +# Redis 最小空闲连接数;默认 5。 +export JUNHONG_REDIS_MIN_IDLE_CONNS=5 +# Redis 建连超时;默认 5s。 +export JUNHONG_REDIS_DIAL_TIMEOUT=5s +# Redis 读取超时;默认 3s。 +export JUNHONG_REDIS_READ_TIMEOUT=3s +# Redis 写入超时;默认 3s。 +export JUNHONG_REDIS_WRITE_TIMEOUT=3s + +# ---------------------------------------------------------------------------- +# 任务队列配置(可选) +# ---------------------------------------------------------------------------- +# Worker 并发数;默认 10。 +# JUNHONG_QUEUE_CONCURRENCY=10 +# 任务最大重试次数;默认 5。 +# JUNHONG_QUEUE_RETRY_MAX=5 +# 单个任务超时时间;默认 10m。 +# JUNHONG_QUEUE_TIMEOUT=10m +# 队列权重 critical/default/low 当前由嵌入配置 queue.queues 管理,未绑定为环境变量。 + +# ---------------------------------------------------------------------------- +# 限流中间件配置(可选) +# ---------------------------------------------------------------------------- +# 是否启用全局限流;默认关闭。 +# JUNHONG_MIDDLEWARE_ENABLE_RATE_LIMITER=false +# 限流窗口内最大请求数;默认 100。 +# JUNHONG_MIDDLEWARE_RATE_LIMITER_MAX=100 +# 限流时间窗口;默认 1m。 +# JUNHONG_MIDDLEWARE_RATE_LIMITER_EXPIRATION=1m +# 限流存储后端;可选 memory 或 redis。 +# JUNHONG_MIDDLEWARE_RATE_LIMITER_STORAGE=memory + +# ---------------------------------------------------------------------------- +# 轮询配置(可选) +# ---------------------------------------------------------------------------- +# 是否输出轮询详细日志;默认 false,排查上游数据时再开启。 +export JUNHONG_POLLING_VERBOSE_LOG=true +# 是否启用 C 端实名自动触发;默认 true。 +# JUNHONG_POLLING_AUTO_TRIGGER_ENABLE_AUTO_TRIGGER=true +# 自动触发使用的系统用户 ID;生产建议改成专用平台账号。 +export JUNHONG_POLLING_AUTO_TRIGGER_AUTO_TRIGGER_SYSTEM_USER_ID=1 + +# ---------------------------------------------------------------------------- +# Worker 运行配置(可选) +# ---------------------------------------------------------------------------- +# Worker 角色;单实例默认 all,多实例可用 leader/consumer。 +# JUNHONG_WORKER_ROLE=all +# Worker 实例名称;多实例部署时用于区分日志。 +# JUNHONG_WORKER_INSTANCE_NAME='' + +# ---------------------------------------------------------------------------- +# Gateway 服务配置 +# ---------------------------------------------------------------------------- +# Gateway API 基础 URL;已按本次输入覆盖嵌入默认值。 +export JUNHONG_GATEWAY_BASE_URL=https://open.whjhft.com/openapi +# Gateway 应用 ID;敏感信息请勿提交。 +export JUNHONG_GATEWAY_APP_ID=LfjL0WjUqpwkItQ0 +# Gateway 应用密钥;敏感信息请勿提交。 +export JUNHONG_GATEWAY_APP_SECRET=K0DYuWzbRE6zg5bX +# Gateway 请求超时时间(秒);有效范围 5-300。 +export JUNHONG_GATEWAY_TIMEOUT=30 + +# ---------------------------------------------------------------------------- +# 短信服务配置(可选) +# ---------------------------------------------------------------------------- +# 短信服务未配置时系统会跳过短信客户端初始化;需要短信验证码时再取消注释。 +# 短信网关地址;设置后 username/password/signature 也必须填写。 +export JUNHONG_SMS_GATEWAY_URL='https://gateway.sms.whjhft.com:8443' +# 短信账号用户名。 +export JUNHONG_SMS_USERNAME='JH0001' +# 短信账号密码;敏感信息请勿提交。 +export JUNHONG_SMS_PASSWORD='wwR8E4qnL6F0' +# 短信签名,例如【君鸿】。 +export JUNHONG_SMS_SIGNATURE='【JHFTIOT】' +# 短信请求超时时间;默认 10s。 +export JUNHONG_SMS_TIMEOUT=10s + +# ---------------------------------------------------------------------------- +# 对象存储配置(可选) +# ---------------------------------------------------------------------------- +# 对象存储提供商;当前仅支持 s3 兼容服务。 +export JUNHONG_STORAGE_PROVIDER=s3 +# 临时文件目录;用于导入导出等临时文件。 +export JUNHONG_STORAGE_TEMP_DIR=/tmp/junhong-storage +# S3 端点;配置后会初始化对象存储服务。 +export JUNHONG_STORAGE_S3_ENDPOINT=https://obs-helf.cucloud.cn +# S3 区域。 +export JUNHONG_STORAGE_S3_REGION=cn-langfang-2 +# S3 存储桶名称。 +export JUNHONG_STORAGE_S3_BUCKET=cmp +# S3 Access Key ID;敏感信息请勿提交。 +export JUNHONG_STORAGE_S3_ACCESS_KEY_ID=598F558CF6FF46E79D1CFC607852378C9523 +# S3 Secret Access Key;敏感信息请勿提交。 +export JUNHONG_STORAGE_S3_SECRET_ACCESS_KEY=8393425DCB2F48F1914FF39DCBC6C7B17325 +# 是否使用 SSL;本地兼容服务常用 false。 +export JUNHONG_STORAGE_S3_USE_SSL=false +# 是否使用路径风格;兼容 S3 服务通常使用 true。 +export JUNHONG_STORAGE_S3_PATH_STYLE=true +# 预签名上传 URL 有效期;默认 15m。 +export JUNHONG_STORAGE_PRESIGN_UPLOAD_EXPIRES=15m +# 预签名下载 URL 有效期;默认 24h。 +export JUNHONG_STORAGE_PRESIGN_DOWNLOAD_EXPIRES=24h + +# ---------------------------------------------------------------------------- +# 默认超级管理员配置(可选) +# ---------------------------------------------------------------------------- +# 不配置时会使用 pkg/constants 中的默认超管账号;生产环境建议在首次启动前覆盖。 +# 默认超级管理员用户名;留空则使用代码内置默认值 admin。 +export JUNHONG_DEFAULT_ADMIN_USERNAME='admin' +# 默认超级管理员密码;留空则使用代码内置默认值 Admin@123456。 +export JUNHONG_DEFAULT_ADMIN_PASSWORD='Admin@123456' +# 默认超级管理员手机号;留空则使用代码内置默认值 13800000000。 +# JUNHONG_DEFAULT_ADMIN_PHONE='' + +export JUNHONG_MIDDLEWARE_CORS_ENABLED=true +export JUNHONG_MIDDLEWARE_CORS_ALLOW_ORIGINS=https://cmp-admin.xm-iot.cn,https://cmp-agent.xm-iot.cn,https://cmp-c.xm-iot.cn +export JUNHONG_MIDDLEWARE_CORS_ALLOW_CREDENTIALS=true