From 1b2f74e0c0135a68ff31aedcb04fc5b113815530 Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Sat, 27 Jun 2026 16:15:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E7=BD=B2=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/services/services/timer/main.go | 7 +- deploy/.gitignore | 3 + .../confs/{api.yaml => api.yaml.example} | 16 +- .../{gateway.yaml => gateway.yaml.example} | 4 +- deploy/voitrans/confs/home.yaml | 206 ------------------ deploy/voitrans/confs/home.yaml.example | 187 ++++++++++++++++ .../confs/{mcp.yaml => mcp.yaml.example} | 16 +- .../confs/{timer.yaml => timer.yaml.example} | 2 +- deploy/voitrans/env/dev.env.example | 2 + deploy/voitrans/env/japan.env.example | 2 + deploy/voitrans/env/shanghai.env.example | 2 + deploy/voitrans/env/singapore.env.example | 2 + 12 files changed, 222 insertions(+), 227 deletions(-) rename deploy/voitrans/confs/{api.yaml => api.yaml.example} (72%) rename deploy/voitrans/confs/{gateway.yaml => gateway.yaml.example} (79%) delete mode 100644 deploy/voitrans/confs/home.yaml create mode 100644 deploy/voitrans/confs/home.yaml.example rename deploy/voitrans/confs/{mcp.yaml => mcp.yaml.example} (72%) rename deploy/voitrans/confs/{timer.yaml => timer.yaml.example} (94%) diff --git a/apps/services/services/timer/main.go b/apps/services/services/timer/main.go index 7ba7c8fb..e2203bf2 100644 --- a/apps/services/services/timer/main.go +++ b/apps/services/services/timer/main.go @@ -27,9 +27,10 @@ func main() { rpcx.SetConfPath(*conf), rpcx.SetVersion("1.0.0.0"), ) - s.OnInstallComp( //装备组件 - services.NewHttpRouteComp(), - ) + // timer 为定时任务服务,不接收网关 HTTP 路由(模块内无 IUserSession 处理函数), + // 因此不装 NewHttpRouteComp —— 否则 SCompHttpRoute.Init 会把本服务强转为 comm.IService + // 而 *Service 未实现 GetUserSession/PutUserSession,启动即 panic。与 gateway/mcp 一致。 + s.OnInstallComp() //装备组件(无) lego.Run(s, //运行模块 timer.NewModule(), ) diff --git a/deploy/.gitignore b/deploy/.gitignore index 1666f6a3..0dd9b134 100644 --- a/deploy/.gitignore +++ b/deploy/.gitignore @@ -3,6 +3,9 @@ */.env */.env.infra +# 真实服务配置(含密钥 / DSN),勿提交;仓库只保留 confs/*.yaml.example 模板 +*/confs/*.yaml + # 运行时日志 console/log/ voitrans/log/ diff --git a/deploy/voitrans/confs/api.yaml b/deploy/voitrans/confs/api.yaml.example similarity index 72% rename from deploy/voitrans/confs/api.yaml rename to deploy/voitrans/confs/api.yaml.example index 3ae50201..151a87b9 100644 --- a/deploy/voitrans/confs/api.yaml +++ b/deploy/voitrans/confs/api.yaml.example @@ -14,19 +14,19 @@ sys: MaxAgeTime: 7 IsDebug: ${LOG_DEBUG:-false} mysql: #业务库 - MySQLDsn: ${DB_ADMIN_DSN:-root:li13451234@tcp(mysql:3306)/voitrans?charset=utf8mb4&parseTime=True&loc=Local} + MySQLDsn: ${DB_ADMIN_DSN:-} postgres: #公共库 - Dsn: ${DB_DEVICE_DSN:-postgresql://postgres:postgres@127.0.0.1:5432/postgres?sslmode=disable} + Dsn: ${DB_DEVICE_DSN:-} ReadDsn: ${DB_DEVICE_READ_DSN:-} MaxPoolSize: 5 redis: Addr: ["${REDIS_ADDR:-redis:6379}"] - Password: ${REDIS_PASSWORD:-li13451234} + Password: ${REDIS_PASSWORD:-} DB: ${REDIS_DB:-1} KeyPrefix: ${REDIS_KEY_PREFIX:-Voitrans} cos: - SecretID: AKID9F8qNiqlTzIMFwQ9rQxNcgYCdsukNmzA - SecretKey: OYVGo8HEzWpvpfHgtfHfqpcDbnlY7Tdc + SecretID: "" + SecretKey: "" AppId: "1253517901" Region: ap-guangzhou BucketName: "deepsound-1253517901" @@ -39,13 +39,13 @@ sys: EmailType: 1 FromEmail: liwei@yunqiinnovation.com FromName: DeepSound - Password: eNdXWrjSQbdYtwbt + Password: "" modules: api: - TokenKey: "${GATEWAY_TOKEN_KEY:-asd123adqeqwe}" + TokenKey: "${GATEWAY_TOKEN_KEY:-}" AdninAccount: ${API_ADMIN_ACCOUNT:-admin} - AdninPassword: "${API_ADMIN_PASSWORD:-123}" + AdninPassword: "${API_ADMIN_PASSWORD:-}" ConsolePort: 8080 SiteName: "${API_SITE_NAME:-Voitrans}" #后台站点名称(不同环境可区分) CurrencyType: ${API_CURRENCY_TYPE:-0} #0=人民币(元) 1=美元(USD) diff --git a/deploy/voitrans/confs/gateway.yaml b/deploy/voitrans/confs/gateway.yaml.example similarity index 79% rename from deploy/voitrans/confs/gateway.yaml rename to deploy/voitrans/confs/gateway.yaml.example index 526c70f8..519fd5e8 100644 --- a/deploy/voitrans/confs/gateway.yaml +++ b/deploy/voitrans/confs/gateway.yaml.example @@ -18,11 +18,13 @@ sys: modules: gateway: ListenPort: 7100 - TokenKey: "${GATEWAY_TOKEN_KEY:-asd123adqeqwe}" + TokenKey: "${GATEWAY_TOKEN_KEY:-}" + EncryptKey: "${GATEWAY_ENCRYPT_KEY:-}" #v2 加密接口响应 AES key(16/24/32 字节),须与 Flutter ApiCrypto._key 一致;空=不加密 WhiteList: - user_sgin - api_getuser - user_getappconfig + - user_getappconfigv2_v2 - user_getchannelapp - user_verification - public_info diff --git a/deploy/voitrans/confs/home.yaml b/deploy/voitrans/confs/home.yaml deleted file mode 100644 index 9ef1453f..00000000 --- a/deploy/voitrans/confs/home.yaml +++ /dev/null @@ -1,206 +0,0 @@ -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 放入 deploy/voitrans/wordfilter/。无需要时整段删除即可。 - 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:-root:li13451234@tcp(mysql:3306)/voitrans?charset=utf8mb4&parseTime=True&loc=Local} - postgres: #公共库(厂家/产品/设备码/公码等跨 app 共享数据) - Dsn: ${DB_DEVICE_DSN:-postgresql://postgres:postgres@127.0.0.1:5432/postgres?sslmode=disable} - ReadDsn: ${DB_DEVICE_READ_DSN:-} #只读副本,填了就开读写分离;不填=单库 - MaxPoolSize: 5 - redis: - Addr: ["${REDIS_ADDR:-redis:6379}"] - Password: ${REDIS_PASSWORD:-li13451234} - DB: ${REDIS_DB:-1} - KeyPrefix: ${REDIS_KEY_PREFIX:-Voitrans} #key 应用分组前缀 - sms: #短信服务 - AppId: "1400971698" - SecretId: "AKIDmiaJsJr6C8sPkt22xgFdswnTyHNG1c3J" - SecretKey: "BByYxDH9oIafXCmALJ5f4GGQWcaMwPta" - SignName: "深圳市创想云启" - Template1: "2397800" - Template2: "2385564" - google: #需放置 ./smart-bluetooth-447104-2b269474bd72.json - JsonPath: ./smart-bluetooth-447104-2b269474bd72.json - deepseek: - Appkey: sk-3adfd188a3134e718bbf704f525aff17 - email: - EmailType: 1 - FromEmail: liwei@yunqiinnovation.com - FromName: DeepSound - Password: eNdXWrjSQbdYtwbt - 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: b7c9b0e5d2eafc9376152a5bc9cccc0a - wechat_auth: - AppID: wx4b5ec8957ad5e425 - AppSecret: 9ceb39df312b3ba95a229b2aa0d15496 - musicobj: - ApiBaseUrl: https://hw.music.voitrans.net - cos: - SecretID: AKID9F8qNiqlTzIMFwQ9rQxNcgYCdsukNmzA - SecretKey: OYVGo8HEzWpvpfHgtfHfqpcDbnlY7Tdc - AppId: "1253517901" - Region: ap-guangzhou - BucketName: "deepsound-1253517901" - BucketURL: "https://deepsound-1253517901.cos.ap-guangzhou.myqcloud.com" - wechatpay: #微信支付,需放置 ./apiclient_key.pem - AppId: wx4b5ec8957ad5e425 - MchId: "1719983673" - ApiV3Key: "rV7cE1xZ9bN3mK5jH8gT0wQ2sF4dG6yU" - PrivateKeyPath: ./apiclient_key.pem - CertSerialNo: "2D27CEB52B98DDEB1CC65E4D96A041E7408F58D0" - alipay: #支付宝支付 - AppID: "2021005135671159" - PrivateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCCNjHeCrB24HHGBoU3Vj/TxTxveW4pU4fktVSd5ZpACsU1vYO9VsBIiIDSOvIOTlsiXTS09940qc/6sgggyPard423Jxb/v+W9D0ZgKa/iMwdTJ2aTks1CCXyanIl3DSkyJrPfFlm2N/ZbPBvgup20QISQtnde1MRtPCMMyodDvvjkVzRYFfitzNS5fM85Ym7uKpfao32tYem0LKnMe8HUwp1AY41pzYDjzvSzWfYzOuLtvO/GnP3m8EAmGeY9WLkCU5BGNS8UJz6WcCZUqgkuAYoYjt0+qcPGIctU0RYs9KVcK1UGJs22GK6oxNHalbT2TluI8exaSDvNObMQmGJtAgMBAAECggEAAxt//SiMJYodrPgi3bs1MryWQKLJOjtAFvks18fO8pBPPIUVS8NyO0jmqh22ARllm2BWDauMpf0XdYgiIYYqPNVRkHliVyAhP23J5CmahO9q0VUzYXozY8wOKTJrJWgu/39k84H5ChwzyOGaWLabZN3VTA7OsnipZ2H0BC4hJEC1R/mJIybul7WveP1RlnYd5L9EwGqj/k0UQKeBfEltH/FBiiWlnukruxW9TjYxkydOsLB7rRYdnBCnVbdy65gi/XX/fIxVmNiHauzfO3yksktdS54VPmQHnrl0Xc38xThbbxGmMxRXuS1bZQwuxkz1iJsh4K0eKvCKFl5EnVWsgQKBgQD9bzuD7Pp1aMXHxS4REYk85TsT0peGbNFfBfKrDb42oirccELiIhKM6TDl7JGHQA3kY+wN4I8VONJFlxfjZ9neXbhZanLqNr3Z8OEjejJ7cN2+WWERIwGboaAEf5qqKFuk+hUKdoXnhFMwTnFJfUQr0EV9+aUHVKEYBK/2IFHCtQKBgQCDh6JhvPAD0b/RlzTJUnRPB2+ZCM0LZQ3VCUYVsdLrOBh+IMrv74oSDgTJYglJaOINmQKVCcVyeLahII6skOcwJrxzVOnbQowNAITWRd0BzNfqB/Sx11s5Xpomi39Uk8yeRHJmmGDudQguvJrtcQEH6QkdGZz2CSNe41LoN0Rb2QKBgFu76YUFQFtDQ2PeIaCYAl8CcnHoZmSH+vk0Q/RakyFfbbhBAlSsFJ7gwYxYJw0XyG+FI6qaP/BkkugRmtn7e0ccEWB8QYA5tFqw8C1RS/iWkA0YeSQk0a4twKggMDGrThDXXMpewHVe1mXD3wnEx+o8BwtkU7HlljIFcFPcuvuJAoGAMKuxB8+9VPx5qZn1O4YaaeALiKp8DXpgavOajo6VyNqiHZIO5khSZCnx1X9EhnicJYH4NaQ+/wPyOJ9ujCa2ldfPpjHGs47lei41+YAyrubZAs3c2y4goJMEIb0+6dIjRnF3j8VVIQgHdhvujGxjgETYTX9b2KM7BnLCDBHfZskCgYEA9Mz4RMZbmyqsZ1gtkioYmyn1MSaaVu/fMJzVwLyHi0TicXpG67kLM7KRBZq5tdySQUhq7ZVkQ+jwHxyuO9iJsKD5ye1KTgyRhh1URMe6/YLRf5170805XIfSFn0jLmQ6rWwaftcWaDp8OjMR/wJDHe6vJcqttle7IuJ6w481AQ8= - PublicKey: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuLaTAzkBwcfy9Vg6Kj8NSNPQ5IeYyT+UKvOoPYiBw85SU7b8/gc1Lhgvo0DVfhM0MI67qf1GY69l3f6/f8mk6CcnhqC6iY0AcQnXqzQ4RBM/9s8/GCaqOohcv8LvLtbz+RlxIPu4dnTkrgEan7z+XZz7vUgHN7vQOcnPj/stfnxJeOANNLgCOYm/XDJZa8yV7lFux750d5+HE3m1jXXHAPTt0Pp+iHIzUZZkIEPaaz46tvoNi0cUf/+BJyq0DLIeWvTv2HpquVV3ZiiFYyjG3FnxWx+BFz/JCYfnPM31gQBt+EgwO3Oc9Kb5JetWrgmjgeoHwL6JIX3mCapZlJlxlwIDAQAB" - paypal: #沙盒;正式环境换 ClientID/Secret/BaseURL/WebhookID - ClientID: AUjApGHJm31MT101xA6koKAnZBZvo6ZxzRYAyXRXFQjlBYoj2i7Hg33clMIaIqyziFhmY0TX_EN_hgDL - Secret: EKlnsMTODfMFfOsnkfyifDRexw3dPk9Ldzv5b-a3Yu-Gq0cYFF7roQsrSaBv572kW9n_u25lHBDabemq - BaseURL: https://api-m.sandbox.paypal.com - WebhookID: 0PR35225Y36017238 - appleiap: #苹果内购 - AppStoreIssuerID: 96c4b3eb-5e5c-4719-8b07-db9cc4dc1f89 - AppStoreKeyID: VS538D3ZR5 - AppStorePrivateKeyPEM: | - -----BEGIN PRIVATE KEY----- - MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgTadGz/swzKnpENyr - 7JW6aH32ggaFCRKSakkoVPBc0PWgCgYIKoZIzj0DAQehRANCAASafAEhHQegdDNn - TE8bPW50cqrX+cFACKK5ZHoRbIYdp2BE3Ji8NSK7mE9avnLahGhyIfyTeSc7ZLyY - 4WlcCJCm - -----END PRIVATE KEY----- - AppStoreBundleID: com.saitong.voitrans - UseSandbox: true - googleiap: - ServiceAccountJSON: | - { - "type": "service_account", - "project_id": "deepsound-451512", - "private_key_id": "56adf297cf60cfa27cd31c7b35db8678164fd311", - "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCteoHZrBT5F82D\nbbCzDf7jlrtPLag5hZUiA50Ex4HjSQrRMi1z5a/Px6sP4/wMEj5K+huyvkRv1cGN\nFbSSMBo2HMnoQIVKHy0HTZ3g/oJxlHMeJDLz300pAfTAJx8qvauV5KD/Z0wWqrAE\nrdwiU6VZbFIoIb2XfIuB3U0v8FsaLX0+yUG+kuRWi+kKCOOPUNneS+Ppu6NGR+98\nyA94uVzBXkIdUieSpY4/6WznzeKR55UWcjsZ4EVqiZ1xoP0nduUces4Ph8kQkIEw\nX/albSUeX4yfHdKnEmQ+W1y9TfW5PSBKno452vkiI1ZivK6I2LrvCxINe8saCOko\ng8B5lTqzAgMBAAECgf8Om16Mg7frCIfTpaGtACtZqR6ONtgsOKFydKKLGc+dGsJA\nMGsxj+yTIHW4p+t0pvgmArBSXJaDDQrNSCMInefP+/Hn1U4Ofeba73U/Q70NYXKI\n3kqIdyh52bBQRMIiLIDwyME3atCLidO6H1tNT7245kmS3pnC0kgJUe5KU/KtJQPl\nHhO59v3HyBSNW5fBjj9KAoJlgLK7IAtDynupIkFik4Gt2nqI9F9wbmgwAtQx1HhT\n4mbvDEv+k/GmvZLd60lt/kM625HNnuYKm4NYzdTpk1ryERgvCpAwQj84CvWncqom\nb2RBY7SFbE//Twe8Cr7gIKmTWivyDMdp/JiPeIECgYEA2W/fcxTD143TfxEb5402\ne85XYpB8bWew4R7W888HE0BKQbGYQFi4Z3np5ogw9T3VqYd9ct5AeRq2u6ZM82OJ\n0sHxDybTzTDAPx7/ii6cz43zut2bXoEI2YyfguW+FsnVtH6ZM94DlnaUuvClbpHE\n7yWqdicT73yxQ3+T3HNfTiECgYEAzD7SYv3D4vGvgwon9rJ7+kw+KBHYeloXFu5q\n3Y6TnRLpvgxmNxEm/SYD/bRhWbsXONyPvoQiVl0v/BpKxIf4cS5OD2SikmAxfYDP\nSA7CVkrsmWwAqJiMi+yXAlq3+kmTJAjbSj1zkJjhE9BSTfeKIoo5OyLu0XsKbK+t\nyw1WJlMCgYEA2M9Ye6PE8/aTYSxqKqUAIstJDxsLNvwhvxfFNi7E20lLwd2X9vGA\nTo2d0SUTzDXwCq7zQ8qhdyBP/SSBrl8eWmzQNU99+igWSdpa7Co2ai8dTMMT3VPE\nw0gY9aintoli8isaEEHcSffLreuuyWXIfL2OD2o/0pj/GFLp2POhoIECgYEAy8P1\nE0uG7VgfuQUd37IrnAgKjuFW7qIInRkZRpbiz/c5eSBXraKQGkid/LPD18ien1z0\nj6a1tyHbKJF2fGIGy6vdtt+4jX4ogcRLh+Epovu21k14zrr6pPJRqcil+a8DfBTV\n6lgqflz3WFQieKR4jIMIG+Z7CkTNnqcaJRTWGP8CgYB5HpozVNaJDuokXobxx4dG\nTo2wUvC67EW8TtpI/GD6xS6h5n9ZAXr4e08pSnG5M3784N4mDFy83Z8nEpSPISC7\nCy+QEREzTRx6LBRMe79eqo79Y8CuHaZKnubB8xgc87zWEjufXxfe5gZX8hccTFUv\nhnIdLDXB7hgvboB/GzjJ8Q==\n-----END PRIVATE KEY-----\n", - "client_email": "deeapsound@deepsound-451512.iam.gserviceaccount.com", - "client_id": "104070580817776670469", - "auth_uri": "https://accounts.google.com/o/oauth2/auth", - "token_uri": "https://oauth2.googleapis.com/token", - "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", - "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/deeapsound%40deepsound-451512.iam.gserviceaccount.com", - "universe_domain": "googleapis.com" - } - doubao: #allhelp 模块 AI 总结用 - Apikey: "55242c1c-204e-4e2a-ae75-faa846180682" - 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: "sk-4598b2ed68e0484691b90da8c234b0f8" - -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:-asd123adqeqwe}" - CBCKey: gDSiGlKJIGuu84ZNe+j4FQ== - allhelp: - max_summary_process: 5 - echomeet: #会议记录:四套服务商各自的转写/翻译/总结配置 - Debug: ${LOG_DEBUG:-false} - DefaultService: "Auto" - ByteDance: - Callback: "" - Transcribe: - AppID: "8595121680" - Token: "ERAUYbJQBOv6M0ooFnUwo-tTWs08HWZn" - Translate: - AccessKey: "AKLTZjJmODdkODQwN2RjNDcyMWI4NWM2ZWRmNDkxY2RiYzI" - SecretKey: "T0Roa09EZGlNalZpTjJObE5HVmlZMkV3WVRkbVpUTTBORGMzTW1FNFlqYw==" - Region: "cn-beijing" - Summary: - Apikey: "55242c1c-204e-4e2a-ae75-faa846180682" - Model: "doubao-1-5-pro-32k-250115" - Ali: - Callback: "" - Transcribe: - ApiKey: "sk-4598b2ed68e0484691b90da8c234b0f8" - Translate: - AccessKeyId: "LTAI5t9dLKEg8zHLbfZJcJZn" - AccessKeySecret: "8NicfnXpHSeQa6ARvCNzXsNqZe8wr1" - Region: "cn-hangzhou" - Summary: - BaseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1" - Token: "sk-4598b2ed68e0484691b90da8c234b0f8" - Model: "qwen-plus" - Google: #需放置 ./smart-bluetooth-447104-2b269474bd72.json - Transcribe: - JsonPath: ./smart-bluetooth-447104-2b269474bd72.json - Translate: - JsonPath: ./smart-bluetooth-447104-2b269474bd72.json - Summary: - Apikey: "AQ.Ab8RN6Iek4x3Pd5NZcuLrXzrapFor_gAoO9W5H-Fg2p8F2M64g" - Model: "gemini-2.5-flash" - Microsoft: #未配置则该服务商不可用 - Transcribe: - Key: "" - Region: "eastasia" - Translate: - Key: "" - Region: "eastasia" - Endpoint: "https://api.cognitive.microsofttranslator.com" - Summary: - BaseURL: "" - Token: "" - Model: "" - pay: - Debug: ${LOG_DEBUG:-false} - WxAppId: "wx5bbb7be9324f3e2d" - WxAppSecret: "4cfde33bc22b6cc6b1f8b225dd97d255" - WxMchId: "1652202222" - WxPayPayKey: "rV7cE1xZ9bN3mK5jH8gT0wQ2sF4dG6yU" diff --git a/deploy/voitrans/confs/home.yaml.example b/deploy/voitrans/confs/home.yaml.example new file mode 100644 index 00000000..47593b9e --- /dev/null +++ b/deploy/voitrans/confs/home.yaml.example @@ -0,0 +1,187 @@ +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 放入 deploy/voitrans/wordfilter/。无需要时整段删除即可。 + 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: #短信服务 + AppId: "1400971698" + SecretId: "" + SecretKey: "" + 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 + 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 + echomeet: #会议记录:四套服务商各自的转写/翻译/总结配置 + Debug: ${LOG_DEBUG:-false} + DefaultService: "Auto" + ByteDance: + Callback: "" + Transcribe: + AppID: "8595121680" + Token: "" + Translate: + AccessKey: "" + SecretKey: "" + Region: "cn-beijing" + Summary: + Apikey: "" + Model: "doubao-1-5-pro-32k-250115" + Ali: + Callback: "" + Transcribe: + ApiKey: "" + Translate: + AccessKeyId: "" + AccessKeySecret: "" + Region: "cn-hangzhou" + Summary: + BaseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1" + Token: "" + Model: "qwen-plus" + Google: #需放置 ./smart-bluetooth-447104-2b269474bd72.json + Transcribe: + JsonPath: ./smart-bluetooth-447104-2b269474bd72.json + Translate: + JsonPath: ./smart-bluetooth-447104-2b269474bd72.json + Summary: + Apikey: "" + Model: "gemini-2.5-flash" + Microsoft: #未配置则该服务商不可用 + Transcribe: + Key: "" + Region: "eastasia" + Translate: + Key: "" + Region: "eastasia" + Endpoint: "https://api.cognitive.microsofttranslator.com" + Summary: + BaseURL: "" + Token: "" + Model: "" + pay: + Debug: ${LOG_DEBUG:-false} + WxAppId: "wx5bbb7be9324f3e2d" + WxAppSecret: "" + WxMchId: "1652202222" + WxPayPayKey: "" diff --git a/deploy/voitrans/confs/mcp.yaml b/deploy/voitrans/confs/mcp.yaml.example similarity index 72% rename from deploy/voitrans/confs/mcp.yaml rename to deploy/voitrans/confs/mcp.yaml.example index b9f806d6..7c88e3c4 100644 --- a/deploy/voitrans/confs/mcp.yaml +++ b/deploy/voitrans/confs/mcp.yaml.example @@ -14,21 +14,21 @@ sys: MaxAgeTime: 7 IsDebug: ${LOG_DEBUG:-false} mysql: #mcp 仅用业务库读写 allhelp_task / user 表 - MySQLDsn: ${DB_ADMIN_DSN:-root:li13451234@tcp(mysql:3306)/voitrans?charset=utf8mb4&parseTime=True&loc=Local} + MySQLDsn: ${DB_ADMIN_DSN:-} amap: - Appkey: c653e53f94ee88a43cc979a08deae883 + Appkey: "" juhe: - SimpleWeather_ApiKey: efd8f9f391d73d7337344d26ee93d173 - Finance_ApiKey: 50a101c9c5ff7c967598cea4bcc8ebbd - Toutiao_ApiKey: 035a1d052001f6f87358a159e7c44575 + SimpleWeather_ApiKey: "" + Finance_ApiKey: "" + Toutiao_ApiKey: "" spotify: - ClientID: "c111d7aa47ef4fb8a60c705f117200b0" - ClientSecret: "27d9a850f1fe4d749103eec4d5a2a106" + ClientID: "" + ClientSecret: "" RedirectURI: "http://localhost:8080/callback" musicobj: ApiBaseUrl: https://hw.music.ideapsound.com bravesearch: - ApiKey: BSAyKXEKw6ftwPHD5HaTX4Ybr3Bfd6b + ApiKey: "" modules: mcp: diff --git a/deploy/voitrans/confs/timer.yaml b/deploy/voitrans/confs/timer.yaml.example similarity index 94% rename from deploy/voitrans/confs/timer.yaml rename to deploy/voitrans/confs/timer.yaml.example index 14e2b35f..9abd97b2 100644 --- a/deploy/voitrans/confs/timer.yaml +++ b/deploy/voitrans/confs/timer.yaml.example @@ -16,7 +16,7 @@ sys: cron: {} #定时驱动(无额外配置项) redis: #timer 仅用 Redis Addr: ["${REDIS_ADDR:-redis:6379}"] - Password: ${REDIS_PASSWORD:-li13451234} + Password: ${REDIS_PASSWORD:-} DB: ${REDIS_DB:-1} KeyPrefix: ${REDIS_KEY_PREFIX:-Voitrans} diff --git a/deploy/voitrans/env/dev.env.example b/deploy/voitrans/env/dev.env.example index 092fed2a..6cdeedb1 100644 --- a/deploy/voitrans/env/dev.env.example +++ b/deploy/voitrans/env/dev.env.example @@ -30,6 +30,8 @@ ANALYZE_REGION=1 # ── 业务杂项 ── LOG_DEBUG=true GATEWAY_TOKEN_KEY=dev-change-me +# v2 配置接口响应加密 AES key(16/24/32 字节),须与 Flutter ApiCrypto._key 完全一致;留空=不加密 +GATEWAY_ENCRYPT_KEY= API_ADMIN_ACCOUNT=admin API_ADMIN_PASSWORD=123 API_SITE_NAME=Voitrans(开发) diff --git a/deploy/voitrans/env/japan.env.example b/deploy/voitrans/env/japan.env.example index 57593f03..f551f7be 100644 --- a/deploy/voitrans/env/japan.env.example +++ b/deploy/voitrans/env/japan.env.example @@ -23,6 +23,8 @@ ANALYZE_REGION=2 # 区域编码见 pb.Region(海外) LOG_DEBUG=false GATEWAY_TOKEN_KEY=CHANGE_ME +# v2 配置接口响应加密 AES key(16/24/32 字节),须与 Flutter ApiCrypto._key 完全一致;留空=不加密 +GATEWAY_ENCRYPT_KEY= API_ADMIN_ACCOUNT=admin API_ADMIN_PASSWORD=CHANGE_ME API_SITE_NAME=Voitrans diff --git a/deploy/voitrans/env/shanghai.env.example b/deploy/voitrans/env/shanghai.env.example index c6c003f1..e4c62b1c 100644 --- a/deploy/voitrans/env/shanghai.env.example +++ b/deploy/voitrans/env/shanghai.env.example @@ -24,6 +24,8 @@ ANALYZE_REGION=1 # 区域编码见 pb.Region(国内) LOG_DEBUG=false GATEWAY_TOKEN_KEY=CHANGE_ME +# v2 配置接口响应加密 AES key(16/24/32 字节),须与 Flutter ApiCrypto._key 完全一致;留空=不加密 +GATEWAY_ENCRYPT_KEY= API_ADMIN_ACCOUNT=admin API_ADMIN_PASSWORD=CHANGE_ME API_SITE_NAME=Voitrans diff --git a/deploy/voitrans/env/singapore.env.example b/deploy/voitrans/env/singapore.env.example index c615fec9..15f92e5d 100644 --- a/deploy/voitrans/env/singapore.env.example +++ b/deploy/voitrans/env/singapore.env.example @@ -23,6 +23,8 @@ ANALYZE_REGION=2 # 区域编码见 pb.Region(海外) LOG_DEBUG=false GATEWAY_TOKEN_KEY=CHANGE_ME +# v2 配置接口响应加密 AES key(16/24/32 字节),须与 Flutter ApiCrypto._key 完全一致;留空=不加密 +GATEWAY_ENCRYPT_KEY= API_ADMIN_ACCOUNT=admin API_ADMIN_PASSWORD=CHANGE_ME API_SITE_NAME=Voitrans