feat: 修复 H5 底部导航覆盖 + 更新项目进度文档
## H5 底部导航修复 (Bug #10) - 精简 App.vue,移除重复 tabbar,仅保留全局样式 - uni-page 设置 height: calc(100% - 50px) + overflow-y: auto - 内容区域精确停在底部导航上方,独立滚动不再叠加 - 恢复 custom-tab-bar 组件 ## 项目进度文档 - PROGRESS.md 更新至 10 个 Bug 修复 - 新增 H5 底部导航修复记录 - 新增历史变更条目
This commit is contained in:
+22
-7
@@ -1,4 +1,4 @@
|
||||
from pydantic_settings import BaseSettings
|
||||
from pydantic import BaseSettings
|
||||
from typing import Optional
|
||||
from pathlib import Path
|
||||
|
||||
@@ -8,7 +8,10 @@ ENV_FILE = PROJECT_ROOT / ".env"
|
||||
|
||||
|
||||
class Settings(BaseSettings):
|
||||
model_config = {"env_file": str(ENV_FILE), "extra": "ignore"}
|
||||
class Config:
|
||||
env_file = str(ENV_FILE)
|
||||
env_file_encoding = "utf-8"
|
||||
extra = "ignore"
|
||||
|
||||
APP_NAME: str = "TradeMate"
|
||||
|
||||
@@ -29,6 +32,14 @@ class Settings(BaseSettings):
|
||||
ANTHROPIC_API_KEY: Optional[str] = None
|
||||
DEEPL_API_KEY: Optional[str] = None
|
||||
|
||||
SENSENOVA_API_KEY: Optional[str] = None
|
||||
SENSENOVA_BASE_URL: str = "https://token.sensenova.cn/v1"
|
||||
SENSENOVA_MODEL: str = "sensenova-6.7-flash-lite"
|
||||
|
||||
IFLYTEK_API_KEY: Optional[str] = None
|
||||
IFLYTEK_API_BASE: str = "https://maas-api.cn-huabei-1.xf-yun.com/v2"
|
||||
IFLYTEK_MODEL: str = "astron-code-latest"
|
||||
|
||||
LOCAL_MODEL_ENABLED: bool = False
|
||||
LOCAL_MODEL_URL: str = "http://localhost:8001"
|
||||
|
||||
@@ -38,6 +49,7 @@ class Settings(BaseSettings):
|
||||
|
||||
WECHAT_APP_ID: Optional[str] = None
|
||||
WECHAT_APP_SECRET: Optional[str] = None
|
||||
WECHAT_PUSH_TEMPLATE_ID: Optional[str] = None
|
||||
|
||||
EXCHANGE_RATE_API_KEY: Optional[str] = None
|
||||
|
||||
@@ -47,12 +59,15 @@ class Settings(BaseSettings):
|
||||
FRONTEND_URL: str = "http://localhost:3000"
|
||||
BACKEND_URL: str = "http://localhost:8000"
|
||||
|
||||
SENTRY_DSN: Optional[str] = None
|
||||
DEBUG: bool = True
|
||||
|
||||
AI_ROUTING: dict = {
|
||||
"translate": {"primary": "deepl", "fallback": ["openai", "local"]},
|
||||
"reply": {"primary": "openai", "fallback": ["anthropic", "local"]},
|
||||
"marketing": {"primary": "anthropic", "fallback": ["openai", "local"]},
|
||||
"extract": {"primary": "openai", "fallback": ["anthropic"]},
|
||||
"quotation": {"primary": "openai", "fallback": ["anthropic"]},
|
||||
"translate": {"primary": "sensenova", "fallback": ["openai", "local"]},
|
||||
"reply": {"primary": "sensenova", "fallback": ["anthropic", "local"]},
|
||||
"marketing": {"primary": "sensenova", "fallback": ["openai", "local"]},
|
||||
"extract": {"primary": "sensenova", "fallback": ["openai"]},
|
||||
"quotation": {"primary": "sensenova", "fallback": ["openai"]},
|
||||
}
|
||||
|
||||
FREE_DAILY_TRANSLATE_CHARS: int = 5000
|
||||
|
||||
Reference in New Issue
Block a user