All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m27s
- 每卡 Redis 采集队列(默认 N=3、跨天清空、回退容差 1 MB),攒满且不下降才写最后一个点 - 测试环境全量切换日快照计量,下线灰度名单、切换水位与卡表基线扣费;全部卡置待建起点 - 读数区分没给值与 0;有套餐的卡读数 0 也写快照与日用量 0 行;重置日比较基准为 0 照常防旧值 - 新增采集记录(按月分区保留 90 天)、人工冲正流水与后台接口、采集告警 - 扣减按采集时刻有效套餐查找,只对生效中套餐做状态迁移,查不到套餐按成功跳过 - 换货新卡(新设备下的卡)打待建起点;采集间隔上限只校验启用中的轮询配置 Change: add-card-traffic-queue-and-observed-deduction Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
175 lines
5.3 KiB
YAML
175 lines
5.3 KiB
YAML
# 默认配置文件(嵌入二进制)
|
||
# 敏感配置和必填配置为空,必须通过环境变量设置
|
||
# 环境变量格式:JUNHONG_{SECTION}_{KEY}
|
||
|
||
server:
|
||
address: ":3000"
|
||
read_timeout: "30s"
|
||
write_timeout: "30s"
|
||
shutdown_timeout: "30s"
|
||
prefork: false
|
||
|
||
# 数据库配置(必填项需通过环境变量设置)
|
||
database:
|
||
host: "" # 必填:JUNHONG_DATABASE_HOST
|
||
port: 5432
|
||
user: "" # 必填:JUNHONG_DATABASE_USER
|
||
password: "" # 必填:JUNHONG_DATABASE_PASSWORD(敏感)
|
||
dbname: "" # 必填:JUNHONG_DATABASE_DBNAME
|
||
sslmode: "disable"
|
||
max_open_conns: 25
|
||
max_idle_conns: 10
|
||
conn_max_lifetime: "5m"
|
||
|
||
# Redis 配置(必填项需通过环境变量设置)
|
||
redis:
|
||
address: "" # 必填:JUNHONG_REDIS_ADDRESS
|
||
port: 6379
|
||
password: "" # 可选:JUNHONG_REDIS_PASSWORD(敏感)
|
||
db: 0
|
||
pool_size: 10
|
||
min_idle_conns: 5
|
||
dial_timeout: "5s"
|
||
read_timeout: "3s"
|
||
write_timeout: "3s"
|
||
|
||
# 对象存储配置
|
||
storage:
|
||
provider: "s3"
|
||
temp_dir: "/tmp/junhong-storage"
|
||
s3:
|
||
endpoint: "" # 可选:JUNHONG_STORAGE_S3_ENDPOINT
|
||
region: "" # 可选:JUNHONG_STORAGE_S3_REGION
|
||
bucket: "" # 可选:JUNHONG_STORAGE_S3_BUCKET
|
||
access_key_id: "" # 可选:JUNHONG_STORAGE_S3_ACCESS_KEY_ID(敏感)
|
||
secret_access_key: "" # 可选:JUNHONG_STORAGE_S3_SECRET_ACCESS_KEY(敏感)
|
||
use_ssl: false
|
||
path_style: true
|
||
presign:
|
||
upload_expires: "15m"
|
||
download_expires: "24h"
|
||
|
||
# 日志配置
|
||
logging:
|
||
level: "info"
|
||
development: false
|
||
app_log:
|
||
filename: "/app/logs/app.log"
|
||
max_size: 100
|
||
max_backups: 3
|
||
max_age: 7
|
||
compress: true
|
||
access_log:
|
||
filename: "/app/logs/access.log"
|
||
max_size: 100
|
||
max_backups: 3
|
||
max_age: 7
|
||
compress: true
|
||
retention_log:
|
||
filename: "logs/audit-retention.log"
|
||
max_size: 100
|
||
max_backups: 3
|
||
max_age: 7
|
||
compress: true
|
||
|
||
# 任务队列配置
|
||
queue:
|
||
concurrency: 10
|
||
queues:
|
||
critical: 6
|
||
default: 3
|
||
low: 1
|
||
retry_max: 5
|
||
timeout: "10m"
|
||
|
||
# JWT 配置(必填项需通过环境变量设置)
|
||
jwt:
|
||
secret_key: "" # 必填:JUNHONG_JWT_SECRET_KEY(敏感)
|
||
token_duration: "24h"
|
||
access_token_ttl: "24h"
|
||
refresh_token_ttl: "168h"
|
||
|
||
# 中间件配置
|
||
middleware:
|
||
enable_rate_limiter: false
|
||
rate_limiter:
|
||
max: 100
|
||
expiration: "1m"
|
||
storage: "memory"
|
||
cors:
|
||
enabled: true
|
||
allow_origins: "*"
|
||
allow_methods: "GET,POST,PUT,PATCH,DELETE,OPTIONS"
|
||
allow_headers: "Origin,Content-Type,Accept,Authorization,X-Requested-With,X-Request-ID"
|
||
expose_headers: "Content-Length,X-Request-ID"
|
||
allow_credentials: false
|
||
max_age: 86400
|
||
|
||
# 客户端配置
|
||
client:
|
||
require_phone_binding: true # 是否要求个人客户绑定手机号
|
||
|
||
# 短信服务配置
|
||
sms:
|
||
gateway_url: "" # 可选:JUNHONG_SMS_GATEWAY_URL
|
||
username: "" # 可选:JUNHONG_SMS_USERNAME
|
||
password: "" # 可选:JUNHONG_SMS_PASSWORD(敏感)
|
||
signature: "" # 可选:JUNHONG_SMS_SIGNATURE
|
||
timeout: "10s"
|
||
|
||
# 默认超级管理员配置(可选)
|
||
default_admin:
|
||
username: ""
|
||
password: ""
|
||
phone: ""
|
||
|
||
# Gateway 服务配置
|
||
gateway:
|
||
base_url: "https://lplan.whjhft.com/openapi"
|
||
app_id: "60bgt1X8i7AvXqkd"
|
||
app_secret: "BZeQttaZQt0i73moF"
|
||
timeout: 60
|
||
|
||
# 轮询配置
|
||
polling:
|
||
verbose_log: false # 是否开启详细日志(环境变量:JUNHONG_POLLING_VERBOSE_LOG)
|
||
# 按运营商账户调度(调度模式在受控系统配置 polling.scheduler.mode 切换)
|
||
carrier:
|
||
nsqd_address: "" # nsqd TCP 地址,如 nsqd:4150(环境变量:JUNHONG_POLLING_CARRIER_NSQD_ADDRESS)
|
||
nsqlookupd_addresses: "" # nsqlookupd HTTP 地址,逗号分隔(环境变量:JUNHONG_POLLING_CARRIER_NSQLOOKUPD_ADDRESSES)
|
||
msg_timeout: 90s # NSQ 消息超时,须大于续期间隔
|
||
max_attempts: 3 # NSQ 允许投递次数(含首次)
|
||
lease: 300s # 处理中标记 TTL,须大于 msg_timeout × max_attempts
|
||
renew_interval: 30s # 租约续期间隔
|
||
dispatch_interval: 1s # 分发间隔
|
||
shutdown_grace: 30s # 优雅退出宽限期
|
||
default_inflight_limit: 20 # 未配置账户的执行上限(跨实例)
|
||
default_card_max_in_flight: 20 # 未配置账户的每进程 max_in_flight
|
||
subscriber_processes: 1 # 订阅卡任务的 Worker 进程数(校验执行上限用)
|
||
|
||
# 轮询自动触发配置
|
||
polling_auto_trigger:
|
||
enable_auto_trigger: true
|
||
auto_trigger_system_user_id: 1 # 暂用 SuperAdmin,生产环境建议创建专用平台账号并更新此值
|
||
|
||
# Worker 运行配置
|
||
worker:
|
||
role: "all"
|
||
instance_name: ""
|
||
polling_total_max_concurrency: 100
|
||
# 日留存只读演练验收通过前必须保持关闭
|
||
audit_retention_cleanup_enabled: false
|
||
# 审计归档、Integration 归档与日留存默认关闭,低峰期按单日推进
|
||
audit_archive_tasks_enabled: false
|
||
|
||
# 审批新旧入口切换配置
|
||
approval:
|
||
legacy_refund_manual_enabled: true
|
||
legacy_offline_recharge_pay_enabled: true
|
||
|
||
|
||
# 企业微信 Adapter 配置
|
||
wecom:
|
||
base_url: "https://qyapi.weixin.qq.com"
|
||
timeout: "10s"
|