# Logging LOG_DIR=./logs LOG_LEVEL=DEBUG LOG_FORMAT=color LOG_RETENTION_DAYS=14 # Database (MySQL - reuse Proma database) DATABASE_URL=mysql://user:password@localhost:3306/proma # Or use individual variables: # DATABASE_HOST=localhost # DATABASE_PORT=3306 # DATABASE_USER=root # DATABASE_PASSWORD= # DATABASE_NAME=proma # Database Connection Pool (adjust based on expected concurrency) # DATABASE_POOL_SIZE=10 # 连接池保持的连接数 (default: 10) # DATABASE_MAX_OVERFLOW=20 # 超出 pool_size 后可临时创建的连接数 (default: 20) # DATABASE_POOL_TIMEOUT=30 # 获取连接的超时时间(秒)(default: 30) # DATABASE_POOL_RECYCLE=3600 # 连接回收时间(秒)(default: 3600) # 生产环境建议: POOL_SIZE=20, MAX_OVERFLOW=40 (根据并发用户数调整) # Auth AUTH_SECRET=your-secret-key-here # AI API OPENAI_BASE_URL=https://api.openai.com OPENAI_API_KEY=sk-xxx # Email (Resend) RESEND_API_KEY=re_xxx EMAIL_FROM=noreply@yourdomain.com # Alibaba Cloud OSS OSS_REGION=oss-cn-hangzhou OSS_ACCESS_KEY_ID=xxx OSS_ACCESS_KEY_SECRET=xxx OSS_BUCKET=your-bucket OSS_RELEASES_BUCKET=your-releases-bucket # Separate bucket for app releases (optional) # Google OAuth (optional) GOOGLE_CLIENT_ID=xxx GOOGLE_CLIENT_SECRET=xxx GOOGLE_OAUTH_PROXY_URL=https://your-proxy.workers.dev GOOGLE_OAUTH_PROXY_SECRET= # WeChat Pay (Native Pay) WECHAT_APPID=wx1234567890abcdef WECHAT_MCHID=1234567890 WECHAT_APIV3_KEY=your-32-character-apiv3-key-here WECHAT_CERT_SERIAL_NO=your-certificate-serial-number WECHAT_PRIVATE_KEY_BASE64=base64-encoded-private-key # Stripe STRIPE_SECRET_KEY=sk_test_xxx STRIPE_WEBHOOK_SECRET=whsec_xxx # Stripe Price IDs (create in Stripe Dashboard) STRIPE_PRICE_BASIC=price_xxx_basic_10usd STRIPE_PRICE_STANDARD=price_xxx_standard_20usd STRIPE_PRICE_PREMIUM=price_xxx_premium_40usd # Stripe VIP Coupon ID (10% discount, create in Stripe Dashboard) STRIPE_VIP_COUPON_ID=coupon_xxx_vip_10_percent # OneAPI (for VIP verification) ONE_API_URL=https://your-oneapi-instance.com ONEAPI_ACCESS_TOKEN=your-oneapi-access-token # App URLs (for payment callbacks) WEB_BASE_URL=http://localhost:5173 API_BASE_URL=http://localhost:8000 # External API for credit transfer (optional) ERLICH_API_KEY= ERLICH_API_BASE_URL=https://erlich.fun/api # WeChat Pay (Native Pay) WECHAT_APPID=wxde0ef4e7e4ecfb29 WECHAT_MCHID=1728629424 WECHAT_APIV3_KEY="y2cHMsixfNkLjTLibG6nJrKG2tEjutge" WECHAT_CERT_SERIAL_NO=6DC7F66EE621FADB61C39165587B4CCC58837487 WECHAT_PUBLIC_KEY_BASE64="LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVLRENDQXhDZ0F3SUJBZ0lVYmNmMmJ1WWgrdHRodzVGbFdIdE16RmlEZEljd0RRWUpLb1pJaHZjTkFRRUwKQlFBd1hqRUxNQWtHQTFVRUJoTUNRMDR4RXpBUkJnTlZCQW9UQ2xSbGJuQmhlUzVqYjIweEhUQWJCZ05WQkFzVApGRlJsYm5CaGVTNWpiMjBnUTBFZ1EyVnVkR1Z5TVJzd0dRWURWUVFERXhKVVpXNXdZWGt1WTI5dElGSnZiM1FnClEwRXdIaGNOTWpVd09USTJNVFl6TlRJeldoY05NekF3T1RJMU1UWXpOVEl6V2pDQmdURVRNQkVHQTFVRUF3d0sKTVRjeU9EWXlPVFF5TkRFYk1Ca0dBMVVFQ2d3UzViNnU1TCtoNVpXRzVvaTM1N083NTd1Zk1TMHdLd1lEVlFRTApEQ1RtaUpEcGc3M290S2psajVqbW5Lcm1uYVhucDVIbWlvRG1uSW5wbVpEbGhhemxqN2d4Q3pBSkJnTlZCQVlUCkFrTk9NUkV3RHdZRFZRUUhEQWhUYUdWdVdtaGxiakNDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0MKQVFvQ2dnRUJBTUxBK2V0TnRoREJYczU4b2g4ZFpNTGhsSTh1VE5HU3JoQ1VBNEhqQWE1NVlNSXZXSUtsY3kyNwo0cXd4QlVJakJpdms0NzFsZWVZa0JFeStqUnFPY09WOXpKVXV0QmRUOUZZN0puTFFzZ3AzRm9jdnBDeFc4UCtUCmNhS2YyaG9aZVhRaTJNNDhRK1BLWW5jNi8wWDFvK1hmbFp3TWcySFJOQnFCM2ZrWGtBWWlRME9sVHZ5VENwL2QKWVFFMERiSEEwR21XZmlrSzRLYjJpMnBMSDAxQXpoc3NDaU1oVmVsSjArTCtzUkRvMnE4ck1ycnVSVmdUUlRHZgpHTDB2cDVRczdSYStTN3U5NXhpQWc1VFl3SnNRMEM4K2MwdWM4K2l6aGl2K2ZmUGJTclZlb3owNWxCbjkxVVh0CjE2OFdvZm5FNlhIb0Vqekp1QVVnT1dOSXRVN0ZLcWtDQXdFQUFhT0J1VENCdGpBSkJnTlZIUk1FQWpBQU1Bc0cKQTFVZER3UUVBd0lEK0RDQm13WURWUjBmQklHVE1JR1FNSUdOb0lHS29JR0hob0dFYUhSMGNEb3ZMMlYyWTJFdQphWFJ5ZFhNdVkyOXRMbU51TDNCMVlteHBZeTlwZEhKMWMyTnliRDlEUVQweFFrUTBNakl3UlRVd1JFSkRNRFJDCk1EWkJSRE01TnpVME9UZzBOa013TVVNelJUaEZRa1F5Sm5OblBVaEJRME0wTnpGQ05qVTBNakpGTVRKQ01qZEIKT1VRek0wRTROMEZFTVVORVJqVTVNalpGTVRRd016Y3hNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUJrR3hQQwpFalpZMmoySURRZUNPNUFwYjFKdkwxdTUrOXAyeFg5bmx1djRZRXdKeHhaRm90dXdHVy9FVzRuZ1ZFS201bG9GCnVXMzNKemQrakNyaXdBYlArVEw2cEdQRXZPTE5mWHdjeG5JTTZRV1VKMWF3dUlieDVNdUdDNmVTNFhrK2l6T2MKUE9UOExzSERXTlQ4S1BNdTVQZlNwWDQvMm5vazgrQlluaTRZQmJGZ0JUb1VXVjJXajN2ekVFeFRKNnJaemRJZApGcDJCUFBXMkdJNzJNZXBGZkRiSHdWbFVyUDVOM2tsN3BDODE5cHJ5eERuVzdqMW9YbmxCVm5JMVJKR2xNOWEwCndDeUVVaUFSb2tYRWVyUlNvY0pFR2xGSlNpM3ZuVXFidkl3bU5lR3EwQ0JRM2VibGNFU0ZpWEZrd0ttT2dzSysKRHVtV1NIeitHbXhXZk1sbAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" WECHAT_PRIVATE_KEY_BASE64="LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRREN3UG5yVGJZUXdWN08KZktJZkhXVEM0WlNQTGt6UmtxNFFsQU9CNHdHdWVXRENMMWlDcFhNdHUrS3NNUVZDSXdZcjVPTzlaWG5tSkFSTQp2bzBham5EbGZjeVZMclFYVS9SV095WnkwTElLZHhhSEw2UXNWdkQvazNHaW45b2FHWGwwSXRqT1BFUGp5bUozCk92OUY5YVBsMzVXY0RJTmgwVFFhZ2QzNUY1QUdJa05EcFU3OGt3cWYzV0VCTkEyeHdOQnBsbjRwQ3VDbTlvdHEKU3g5TlFNNGJMQW9qSVZYcFNkUGkvckVRNk5xdkt6SzY3a1ZZRTBVeG54aTlMNmVVTE8wV3ZrdTd2ZWNZZ0lPVQoyTUNiRU5BdlBuTkxuUFBvczRZci9uM3oyMHExWHFNOU9aUVovZFZGN2RldkZxSDV4T2x4NkJJOHliZ0ZJRGxqClNMVk94U3FwQWdNQkFBRUNnZ0VCQUpUMUlMSTIyQUJzeG1UTXN2dDFjZklVczVubjRkMlJnUTB4Q0pXNTJUbG4Kb1BnbFdsOWl5SHU4YngwZ3lWTFNrdy9UbTlUcTNwZUdDTHZpS3U2YThBSzNlMWpIUmZ0cHZVS1BMMU0yQ0ZjMAp5c2hQU2hTWDB2RElCMnhKTTNvdTdkUkVLdXRpOE5Jem82aHFPWUY2NWdjV1Fjbi9VQ1hxNngwekkySTRBWEtPClFGYWRWNXlqQnFFbVVzNlVrNWR6VFBqYW9xd2pSWFZlcC9vbllHNkFFNGNVbkkzWDZHNGx4dVVEcEVtNmZsN28KM1lqN3BtWjNZZmJSL2J4Uis3ck1JcmRkL1JhZjVQcE1lbDdsS0l6Y2pLSzU3WHB4WFpzQ20wWXkyOTE5Z01GUApxYWRmWXhRcGpmQ3RqVU91Y29WaHNJNkQrUkNFVkVZK3QxR0tUejBibmdFQ2dZRUE2WkV6ZGVKSlRxTXVmUlRCCkhnTzFkbnNHNW9tdndvanM0ZXhvMmErRGJvVzA3M2hiN08rNXdWWTMxWnhxQW9hQnNMRG1iZERTS1FwN0wwQ2UKNVA1N2hJZWVLY3pTV3crdmRuWk5wVFpXOHNwWGJYT2VMcTc3MG5qMTNVK1hiSnZkMjVvd2h4ZW1SaFloVmxoQQpmWEhORFYzS2FaNUI2T0dPaW5iSElIM2pXSWtDZ1lFQTFYVjAvaTQ1RnIxbXBTUmxSMlpZakd1UXBaSTdHN1FZClNESmZoc05xNUtEL0ZxYUtRZ1J6TzNiVmRQMGpTeCtWNTQ4Nmp4RmFMRzd5WHJ3SE1iWS9IUVJYUEhUaXBHZVkKOWhsOVh5VUEvVUdSaEtsKzNnRGFqVEtiNys3a3lyL3BZUTlhTGkxWjNnSk1BcGdvZlRFWVI3SHB5dlVFaXFqYwpNRGJ6R1Q4dWVTRUNnWUFxL3ErYVk2MWE3RzhDVjIrMU5ybVF0ZFR2V3lrZmhsVVV3WkFMZ21PUFZNMlp4MjRrCmozeUNPbnpNdFo1T0dMU0c4Z2w0N1pmQ05rdTJ4dzU0Mk4rajVkTVhucnlhUnFqbUJhRUZhSnRZMWlhQjMyYWUKOFZjcHgxcDdBc3U5RW5Ra21KMldRS1E3QXBmZ2JSNXgrU0RsOVAzdHMxUXVxbGF5NW1xQmNLc0pBUUtCZ0I5ZwpHV2MzSWhzT2tlVGFPYXpLQlYvMmU1ZHFyQmVCWEVSWWF5UWkyelpwMTdUYm05emlUSkhFQU5JbVZ5YTJxTkVWCmczVCtCdlFiQnJNWURqS25hQlY2eXR2UERuVTk2UVRiY0VzbzVFRlZmdTh4L3J6aEFUN1ozb1BnNkc1STBTUDgKSHJSRTVEMjJ0cmQyNkJTbXY3dmlFY3hNUVhPa0tHRko0bWVtbXMwaEFvR0FXQVozRHB6cE1NL00yb0JFMEM1RQp6a2p5S09KSTVJalAyRzBORy8wTjI1WUg2bkxlVnFhazBvY21vUXhCL1J6M1hsUjFIdm1tejU2QzZhc3RQN3NHCmVBOEEzTFByV2VkN2QzQXBQR0JGb1JISGI1WXZid3dsaFhsSE5lRFBhVmZ3SVpjOUx6UW8yMVg1ajV0Ykp0RUYKcXo3dVphV09nZ21DcU5RRWk3ZWZaclk9Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K" # Stripe ## 正式 STRIPE_SECRET_KEY=sk_live_your_stripe_secret_key_here # 正式 STRIPE_WEBHOOK_SECRET=whsec_nty83eNk8UfEk9FKG9ouY5PsO3x8Ks66 # Stripe Price IDs (create in Stripe Dashboard) STRIPE_PRICE_BASIC=price_1QrGrjRoXYLj9o55utL9Ib4h STRIPE_PRICE_STANDARD=price_1QrGrjRoXYLj9o55Mz11UHqz STRIPE_PRICE_PREMIUM=price_1QxmxdRoXYLj9o55DyBWsj6n # Stripe VIP Coupon ID (10% discount, create in Stripe Dashboard) STRIPE_VIP_COUPON_ID=7FOX3ACO # OneAPI (for VIP verification) ONE_API_URL=https://openai.weavex.tech ONEAPI_ACCESS_TOKEN=b7JumwuLjcV7QhGdVu8MJCTuTo7Dot9K # App URLs (for payment callbacks) WEB_BASE_URL=https://proma.cool API_BASE_URL=https://api.proma.cool # 豆包的语音配置 DOUBAO_APP_KEY=xxx DOUBAO_ACCESS_KEY=xxx DOUBAO_RESOURCE_ID=xxx DOUBAO_ASR_ENDPOINT=wss://openspeech.bytedance.com/api/v3/sauc/bigmodel HTTP_PROXY_URL=https://http-proxy-proma.zeabur.app # Tavily (Web Search) TAVILY_API_KEY=tvly-xxx # GEMINI_API_KEY=sk-xxx