You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
168 lines
7.0 KiB
168 lines
7.0 KiB
tag: "${CLUSTER_TAG:-voitrans-a11}" #服务集群标签,按 .env 的 CLUSTER_TAG 隔离不同部署
|
|
type: "home"
|
|
version: 1.0
|
|
exte: #RPCX 相关配置
|
|
Port: 7002
|
|
Addr: 127.0.0.1:7002
|
|
ETCDServers: ["${ETCD_SERVERS:-etcd:2379}"]
|
|
UpdateInterval: 5
|
|
|
|
sys:
|
|
log:
|
|
FileName: "./log/home.log"
|
|
Loglevel: 5
|
|
MaxAgeTime: 7
|
|
IsDebug: ${LOG_DEBUG:-false}
|
|
nats: #统计快照管道(推送到 console 统计消费端);连不上不阻断业务
|
|
URL: "${NATS_URL:-nats://nats:4222}"
|
|
Name: "home"
|
|
MaxReconnects: -1
|
|
ReconnectWait: 2
|
|
# 敏感词过滤:默认【全部注释掉 = 不加载任何词库】。
|
|
# ⚠️ 这些 txt 不在 git 里,要用就得自己放到部署目录的 wordfilter/ 下(会随工作目录挂进容器 /app)。
|
|
# 列表里只要有一个文件在服务器上不存在,home 就会 `panic: init sys.wordfilter err: no found file:...`
|
|
# → entrypoint 杀掉整个容器 → 无限重启;而表象常常是 api 报「Table 'xxx.userdevice' doesn't exist」
|
|
# (建表由 home 里的 user 模块负责,home 起不来自然没表)。2026-08-18 部署 ym 时踩过这个坑。
|
|
wordfilter:
|
|
WorldFile:
|
|
# - ./wordfilter/暴恐词库.txt
|
|
# - ./wordfilter/补充词库.txt
|
|
# - ./wordfilter/反动词库.txt
|
|
# - ./wordfilter/非法网址.txt
|
|
# - ./wordfilter/广告类型.txt
|
|
# - ./wordfilter/老版本词库.txt
|
|
# - ./wordfilter/零时-Tencent.txt
|
|
# - ./wordfilter/民生词库.txt
|
|
# - ./wordfilter/色情词库.txt
|
|
# - ./wordfilter/色情类型.txt
|
|
# - ./wordfilter/涉枪涉爆.txt
|
|
# - ./wordfilter/贪腐词库.txt
|
|
# - ./wordfilter/网易前端过滤敏感词库.txt
|
|
# - ./wordfilter/新思想启蒙.txt
|
|
# - ./wordfilter/政治类型.txt
|
|
# - ./wordfilter/COVID-19词库.txt
|
|
# - ./wordfilter/GFW补充词库.txt
|
|
mysql: #业务库(用户/设备/统计/任务等 per-app 业务数据)
|
|
MySQLDsn: ${DB_ADMIN_DSN:-}
|
|
postgres: #公共库(厂家/产品/设备码/公码等跨 app 共享数据)
|
|
Dsn: ${DB_DEVICE_DSN:-}
|
|
ReadDsn: ${DB_DEVICE_READ_DSN:-} #只读副本,填了就开读写分离;不填=单库
|
|
MaxPoolSize: 5
|
|
redis:
|
|
Addr: ["${REDIS_ADDR:-redis:6379}"]
|
|
Password: ${REDIS_PASSWORD:-}
|
|
DB: ${REDIS_DB:-1}
|
|
KeyPrefix: ${REDIS_KEY_PREFIX:-Voitrans} #key 应用分组前缀
|
|
sms: #短信服务(服务商 tencent | aliyun,留空按 tencent;也可在 console 后台「业务功能配置」里改,改完热生效)
|
|
Provider: "tencent"
|
|
#腾讯云
|
|
AppId: "1400971698"
|
|
SecretId: ""
|
|
SecretKey: ""
|
|
#阿里云(Provider=aliyun 时用;RegionId 留空默认 cn-hangzhou,TemplateParamName 留空默认 code)
|
|
AccessKeyId: ""
|
|
AccessKeySecret: ""
|
|
RegionId: ""
|
|
TemplateParamName: ""
|
|
#两家共用:签名与模板须按所选服务商填(腾讯 TemplateId / 阿里 TemplateCode)
|
|
SignName: "深圳市创想云启"
|
|
Template1: "2397800"
|
|
Template2: "2385564"
|
|
google: #需放置 ./smart-bluetooth-447104-2b269474bd72.json
|
|
JsonPath: ./smart-bluetooth-447104-2b269474bd72.json
|
|
deepseek:
|
|
Appkey: ""
|
|
email:
|
|
EmailType: 1
|
|
FromEmail: liwei@yunqiinnovation.com
|
|
FromName: DeepSound
|
|
Password: ""
|
|
firebase_auth: #需放置对应 json
|
|
ApiKeyFile: ./deepsound-e0e3d-firebase-adminsdk-fbsvc-269043a0f8.json
|
|
google_auth: #需放置对应 json
|
|
ApiKeyFile: ./deepsound-e0e3d-firebase-adminsdk-fbsvc-269043a0f8.json
|
|
facebook_auth:
|
|
AppID: "3829022037361855"
|
|
AppSecret: ""
|
|
wechat_auth:
|
|
AppID: wx4b5ec8957ad5e425
|
|
AppSecret: ""
|
|
musicobj:
|
|
ApiBaseUrl: https://hw.music.voitrans.net
|
|
cos:
|
|
SecretID: ""
|
|
SecretKey: ""
|
|
AppId: "1253517901"
|
|
Region: ap-guangzhou
|
|
BucketName: "deepsound-1253517901"
|
|
BucketURL: "https://deepsound-1253517901.cos.ap-guangzhou.myqcloud.com"
|
|
wechatpay: #微信支付,需放置 ./apiclient_key.pem
|
|
# 键名必须与 comm.ModuleCatalog 里 wechatpay 的 Key 逐字符一致(AppID/MchID,结尾大写 ID),
|
|
# 否则 seedModuleRows 的 sec[f.Key] 查不到,这两个字段永远不入库、后台显示为空。
|
|
AppID: wx4b5ec8957ad5e425
|
|
MchID: "1719983673"
|
|
ApiV3Key: ""
|
|
PrivateKeyPath: ./apiclient_key.pem
|
|
CertSerialNo: "2D27CEB52B98DDEB1CC65E4D96A041E7408F58D0"
|
|
alipay: #支付宝支付
|
|
AppID: "2021005135671159"
|
|
PrivateKey: ""
|
|
PublicKey: ""
|
|
paypal: #沙盒;正式环境换 ClientID/Secret/BaseURL/WebhookID
|
|
ClientID: ""
|
|
Secret: ""
|
|
BaseURL: https://api-m.sandbox.paypal.com
|
|
WebhookID: ""
|
|
appleiap: #苹果内购
|
|
AppStoreIssuerID: ""
|
|
AppStoreKeyID: ""
|
|
AppStorePrivateKeyPEM: ""
|
|
AppStoreBundleID: com.saitong.voitrans
|
|
UseSandbox: true
|
|
googleiap:
|
|
ServiceAccountJSON: ""
|
|
doubao: #allhelp 模块 AI 总结用
|
|
Apikey: ""
|
|
Model: "doubao-1-5-pro-32k-250115"
|
|
ipinfo: #需放置 confs/ip2region_v4.xdb 与 v6.xdb
|
|
V4XdbPath: "./confs/ip2region_v4.xdb"
|
|
V6XdbPath: "./confs/ip2region_v6.xdb"
|
|
CachePolicy: "vindex"
|
|
Searchers: 10
|
|
ali_filetrans:
|
|
ApiKey: ""
|
|
|
|
modules:
|
|
analyze: #平台统计模块(推送快照到 console)
|
|
AppName: "${ANALYZE_APP_NAME:-voitrans-a11}" #须与 console 注册表中的应用名完全一致,否则不落库
|
|
Region: ${ANALYZE_REGION:-1} #本部署所属区域,取值见 pb.Region
|
|
SyncInterval: 600
|
|
Subject: "stats.event" #须与 console 端 Stat.Subject 一致
|
|
Timezone: "Asia/Shanghai"
|
|
user:
|
|
Debug: ${LOG_DEBUG:-false}
|
|
AvatarUrl: "https://api.ideapsound.com/avatar/"
|
|
TokenKey: "${GATEWAY_TOKEN_KEY:-}"
|
|
CBCKey: ""
|
|
allhelp:
|
|
max_summary_process: 5
|
|
memory: #记忆中心(拾忆):闹钟/待办/灵感/花销统一存储 + 周报月报
|
|
Debug: ${LOG_DEBUG:-false}
|
|
max_report_process: 3 #报告生成 worker 数
|
|
report_min_items: 3 #上周期至少这么多条记录才生成报告(当前唯一的成本闸门)
|
|
# ⚠️ cron 走的是容器时区,恒为 Asia/Shanghai(Dockerfile 与本 compose 都设了 TZ),
|
|
# 对所有区域所有用户都是北京时间。海外用户的「上周」边界会偏,详见记忆中心设计文档 §5.3。
|
|
report_cron_week: "0 30 0 ? * MON" #每周一 00:30 生成上周报告
|
|
report_cron_month: "0 30 0 1 * ?" #每月 1 号 00:30 生成上月报告
|
|
report_stale_sec: 900 #报告卡在待生成/生成中超过这么久,由 memory_getreport 补偿重新入队
|
|
meeting_extract: true #会议纪要生成后自动抽取待办(失败只记日志,不影响纪要)
|
|
echomeet: #会议记录:识别/翻译/总结服务不再走 yaml——全部由后台「会议记录服务」编排
|
|
# (console 共享库 echomeet_orch + 服务池 svc_config)配置,运行时直读 + NATS 热重载。
|
|
# 部署身份与解密密钥由 .env 注入:ANALYZE_APP_NAME / ANALYZE_REGION / FIELD_ENCRYPT_KEY。
|
|
Debug: ${LOG_DEBUG:-false}
|
|
pay:
|
|
Debug: ${LOG_DEBUG:-false}
|
|
WxAppId: "wx5bbb7be9324f3e2d"
|
|
WxAppSecret: ""
|
|
WxMchId: "1652202222"
|
|
WxPayPayKey: ""
|
|
|