feat: WeChat Pay integration, translation quota management, login UX fixes

- WeChat Pay APIv3 integration (JSAPI + Native) with cert-based auth
- TranslationQuota model + admin management UI (配额 tab)
- Alibaba MT provider now checks quota before translation
- Fix: admin tabs scrollable on mobile, remove header-card
- Fix: profile/login navigation - logout stays on profile, login returns to profile
- Fix: login form now visible by default (no extra click to show)
- Fix: home page translate link uses navigateTo (was switchTab to non-tabBar page)
- Add .coverage and apiclient_key.pem to gitignore
This commit is contained in:
TradeMate Dev
2026-05-20 18:30:12 +08:00
parent a60aac4638
commit c397740748
22 changed files with 828 additions and 35 deletions
+11 -1
View File
@@ -55,10 +55,20 @@ class Settings(BaseSettings):
WHATSAPP_PHONE_NUMBER_ID: Optional[str] = None
WHATSAPP_WEBHOOK_VERIFY_TOKEN: Optional[str] = None
ALIBABA_ACCESS_KEY_ID: Optional[str] = None
ALIBABA_ACCESS_KEY_SECRET: Optional[str] = None
WECHAT_APP_ID: Optional[str] = None
WECHAT_APP_SECRET: Optional[str] = None
WECHAT_PUSH_TEMPLATE_ID: Optional[str] = None
WECHAT_PAY_MCH_ID: Optional[str] = None
WECHAT_PAY_API_KEY: Optional[str] = None
WECHAT_PAY_SERIAL_NO: Optional[str] = None
WECHAT_PAY_CERT_DIR: str = "./certs"
WECHAT_PAY_NOTIFY_URL: str = "https://example.com/api/v1/payment/notify"
WECHAT_PAY_API_BASE: str = "https://api.mch.weixin.qq.com"
EXCHANGE_RATE_API_KEY: Optional[str] = None
UPLOAD_DIR: str = "./uploads"
@@ -71,7 +81,7 @@ class Settings(BaseSettings):
DEBUG: bool = True
AI_ROUTING: dict = {
"translate": {"primary": "opencode_go", "fallback": ["sensenova", "openai", "local"]},
"translate": {"primary": "alibaba-mt", "fallback": ["opencode_go", "sensenova", "openai", "local"]},
"reply": {"primary": "opencode_go", "fallback": ["sensenova", "anthropic", "local"]},
"marketing": {"primary": "opencode_go", "fallback": ["sensenova", "openai", "local"]},
"extract": {"primary": "opencode_go", "fallback": ["sensenova", "openai"]},