diff --git a/flutter_app/lib/camera/model_catalog_section.dart b/flutter_app/lib/camera/model_catalog_section.dart index 463fc7a..1d1fb56 100644 --- a/flutter_app/lib/camera/model_catalog_section.dart +++ b/flutter_app/lib/camera/model_catalog_section.dart @@ -6,7 +6,7 @@ import '../models/model_manager.dart'; String _variantLabel(String v) => v == kVariantN ? '高性能' : '高精度'; /// 设置弹层「模型清单」区块:顶部「识别档位」分段控件(高性能/高精度,默认 -/// 高精度,持久化本地)选择**目标档位**——只记录偏好,不直接切换运行中的 +/// 高性能,持久化本地)选择**目标档位**——只记录偏好,不直接切换运行中的 /// 模型,决定卡片主按钮面向哪一档(2026-09-11 回归单按钮制:卡内不再同列 /// 两档按钮)。多物种综合识别 App 端下线(2026-09-11):目录中 combined 条目 /// 直接忽略、不展示,服务端/管理端综合训练功能保持不变。下方 2 列封面网格, diff --git a/flutter_app/lib/config/app_config.dart b/flutter_app/lib/config/app_config.dart index 0db8903..fa3cd98 100644 --- a/flutter_app/lib/config/app_config.dart +++ b/flutter_app/lib/config/app_config.dart @@ -3,17 +3,17 @@ class AppConfig { /// 后端服务器地址(订单创建/授权查询/套餐价格) /// 默认指向线上域名;本地联调构建时用 --dart-define=API_BASE_URL=http://127.0.0.1:8080 覆盖 static const String apiBaseUrl = String.fromEnvironment('API_BASE_URL', - defaultValue: 'http://observer.redpowerfuture.com'); + defaultValue: 'https://animal-spot.icu'); /// 微信开放平台 AppID(需在微信开放平台注册包名+签名) static const String wechatAppId = 'wx0000000000000000'; static const String wechatUniversalLink = - 'https://YOUR_DOMAIN.com/wechat/'; + 'https://animal-spot.icu/wechat/'; /// 支付宝开放平台 AppID static const String alipayAppId = '2020000000000000'; static const String alipayUniversalLink = - 'https://YOUR_DOMAIN.com/alipay/'; + 'https://animal-spot.icu/alipay/'; /// iOS URL Scheme(微信/支付宝拉起回调,需与 Info.plist 一致) static const String wechatUrlScheme = 'wx0000000000000000'; diff --git a/flutter_app/lib/models/model_manager.dart b/flutter_app/lib/models/model_manager.dart index a571b97..4d1598f 100644 --- a/flutter_app/lib/models/model_manager.dart +++ b/flutter_app/lib/models/model_manager.dart @@ -134,7 +134,8 @@ class ModelManager extends ChangeNotifier { final Map _progress = {}; final Map _errors = {}; final Set _cancelRequested = {}; - String _mode = kVariantS; + // 默认高性能(n):未持久化偏好时的新装默认档(2026-09-11 用户定案) + String _mode = kVariantN; bool _modeLoaded = false; bool _ready = false; bool _refreshing = false; diff --git a/flutter_app/pubspec.yaml b/flutter_app/pubspec.yaml index d594794..a7c60fa 100644 --- a/flutter_app/pubspec.yaml +++ b/flutter_app/pubspec.yaml @@ -2,7 +2,7 @@ name: observer description: "视野 - 动物实时识别 (环颈雉鸡/生境), YOLOv8 + 充值付费" publish_to: 'none' -version: 1.0.39+44 +version: 1.0.40+45 environment: sdk: ^3.12.2 @@ -44,7 +44,7 @@ fluwx: tobias: url_scheme: alipay0000000000 ios: - universal_link: https://YOUR_DOMAIN.com/alipay/ + universal_link: https://animal-spot.icu/alipay/ # camera_android_camerax 屏蔽:Android 相机走自写 CameraChannel,不需要 CameraX; # 插件注册即初始化 CameraX,无相机环境(模拟器)下回调线程直接 diff --git a/server/common/config_env.go b/server/common/config_env.go new file mode 100644 index 0000000..bcc0f47 --- /dev/null +++ b/server/common/config_env.go @@ -0,0 +1,35 @@ +package common + +import ( + "os" + + "github.com/gogf/gf/v2/os/gcfg" + + "github.com/gogf/gf/v2/frame/g" +) + +// init 数据库配置的环境变量覆盖(同一份 config.yml 线上线下通用,不用改文件切环境): +// Docker 部署由 docker-compose 注入 DB_HOST/DB_NAME 指向容器网络内的 postgres; +// 本地开发不注入,走 config.yml 默认值(127.0.0.1/animal_spot)。 +// Set 是纯内存覆盖(不落盘),且必须发生在任何 g.DB() 调用(含 dao 包 init 建表)之前—— +// common 包先于依赖它的 dao 包初始化,天然满足时序。 +func init() { + overrides := [][2]string{ + {"DB_HOST", "database.default.host"}, + {"DB_NAME", "database.default.name"}, + {"DB_PORT", "database.default.port"}, + {"DB_USER", "database.default.user"}, + {"DB_PASS", "database.default.pass"}, + } + adapter, ok := g.Cfg().GetAdapter().(*gcfg.AdapterFile) + if !ok { + panic("数据库环境变量覆盖失败:默认配置适配器不是文件适配器") + } + for _, kv := range overrides { + if v := os.Getenv(kv[0]); v != "" { + if err := adapter.Set(kv[1], v); err != nil { + panic("环境变量覆盖配置失败 " + kv[0] + ": " + err.Error()) + } + } + } +} diff --git a/server/config.yml b/server/config.yml index cb7b9c9..e2b4cfb 100644 --- a/server/config.yml +++ b/server/config.yml @@ -8,7 +8,10 @@ server: database: default: type: pgsql - # PostgreSQL 连接(本机 Docker pg16 容器;分字段写法规避密码特殊字符的 URL 转义问题) + # PostgreSQL 连接(分字段写法规避密码特殊字符的 URL 转义问题)。 + # 下面是本地开发默认值;服务器部署由 docker-compose 只注入 DB_HOST=postgres(容器名直连), + # 库名等其余项两边一致直接用这里的默认值。见 common/config_env.go(支持 DB_HOST/DB_NAME/ + # DB_PORT/DB_USER/DB_PASS 五项,按需注入)。 host: "127.0.0.1" port: "5432" user: "259278618@qq.com" @@ -180,11 +183,11 @@ payment: apiV3Key: "" # APIv3 密钥 serialNo: "" # 商户证书序列号 privateKey: "" # 商户 API 私钥文件路径(PEM) - notifyUrl: "" # 回调地址,如 https://api.example.com/api/v1/payment/wechat/notify + notifyUrl: "" # 回调地址,如 https://animal-spot.icu/api/v1/payment/wechat/notify alipay: # 支付宝 APP 支付,未配置时接口返回「支付未配置」 appid: "" # 开放平台 AppID privateKey: "" # 应用私钥文件路径(PEM) alipayPublicKey: "" # 支付宝公钥文件路径(PEM) sellerId: "" # 收款方 PID(回调校验 app_id/seller_id 用) - notifyUrl: "" # 回调地址,如 https://api.example.com/api/v1/payment/alipay/notify + notifyUrl: "" # 回调地址,如 https://animal-spot.icu/api/v1/payment/alipay/notify diff --git a/server/docker-compose.yml b/server/docker-compose.yml index 74a81b7..4d60160 100644 --- a/server/docker-compose.yml +++ b/server/docker-compose.yml @@ -20,5 +20,8 @@ services: - /workspace:/app/workspace environment: TZ: Asia/Shanghai + # 数据库 host 覆盖(同一份 config.yml:线上注入容器名连 postgres,本地不注入走默认值 127.0.0.1; + # 库名等其余项两边一致直接用配置默认值。机制见 common/config_env.go) + DB_HOST: postgres networks: - redfuture-net diff --git a/server/h5/index.html b/server/h5/index.html index e5c9ff0..6627e5f 100644 --- a/server/h5/index.html +++ b/server/h5/index.html @@ -82,7 +82,7 @@
视野
动物实时识别
Android 版
- + @@ -107,7 +107,7 @@ - observer.redpowerfuture.com + animal-spot.icu