统一单入口 Go 工程与前端依赖目录,增加后台供应商配置、候选审核、计划预算、成交冲正、持仓复盘和站内通知。接入策略版本、Python 回测、可配置 A 股公开行情及 zap 文件轮转日志,补充迁移、契约与验证。
见势 · Veyra App
React Native + Expo + TypeScript,白底、石墨黑与柔紫。源码路由采用 Expo Router,服务端查询使用 TanStack Query,当前账户使用 Zustand。
当前已接通开发登录、原生安全会话恢复/过期/退出、账户查询、创建和切换。五个主导航与提醒入口已建立;候选、计划、成交、持仓明细、通知、偏好与复盘业务尚未开放,页面明确展示实际状态,不展示原型股票或预设收益。
开发运行
在仓库根目录执行 npm --prefix apps/mobile ci,使用 Node 22.18 或更高版本(测试使用 Node 的 TypeScript 支持)。Go 后端初始化完成后运行 go run . -command user-create -role USER 创建 App 的 USER 测试身份,再运行 go run .。管理员身份无法登录 App,登录信息从本地环境配置获取,不打包到客户端。
cp apps/mobile/.env.example apps/mobile/.env
npm --prefix apps/mobile run start
填写 apps/mobile/.env 中 EXPO_PUBLIC_API_URL:
- iOS 模拟器:
http://127.0.0.1:8080。 - Android 默认模拟器:
http://10.0.2.2:8080。 - 真机:开发电脑的内网 IP,例如
http://<开发电脑内网IP>:8080,后端HTTP_ADDR需绑定可访问的监听地址;与数据库地址无关。
Expo 的 i / a 可打开已经安装的 iOS / Android 模拟器,也可用兼容 SDK 的 Expo Go 扫码运行。地址变化后重启 Metro。接口地址留空时会明确提示未配置。正式环境应配置 HTTPS;当前开发密码接口只在 local/test 后端开放。
EXPO_PUBLIC_* 会进入客户端包,只允许公开 API 地址,禁止放入数据库、Redis、模型或行情源密钥。供应商由管理员在后台配置,App 不直接调用供应商。
验证与产物
npm --prefix apps/mobile run typecheck && npm --prefix apps/mobile run test
npm --prefix apps/mobile run build
类型检查与测试命令 检查 TypeScript 与 API/金额边界测试;构建命令 导出 iOS 和 Android Metro/Hermes bundle 到本目录 dist,验证路由和原生依赖可打包。导出包不等于 APK、IPA,也不代表已完成真机或商店验证;后续原生包需通过开发构建或 EAS/本地编译生成。
依赖按 Expo SDK 配套版本选取,原生模块通过 expo install 安装。当前锁定 SDK 55 / React Native 0.83.10 / React 19.2.4。管理端与 App 统一使用 React 19.2.4,分别独立安装依赖。SDK 55 默认建议 React 19.2.0;这里显式固定同 minor 的补丁版本并按 Expo 版本比较配置配置 expo.install.exclude,仅排除 React 的建议版本比较。React Native 0.83.10 的公开 peer 约束是 ^19.2.0;继续执行类型、客户端、双平台 bundle 与依赖重复检查,真机验证仍待完成。App 的 package.json、锁文件和依赖全部位于本目录,Metro 与 Babel 使用本目录的 Expo Router。
会话使用 Expo SecureStore,不会写进 Zustand、URL 或日志。退出撤销服务端会话;网络中断保留原始会话供恢复,401 或到期清理身份与查询缓存。旧会话的迟到响应不会污染新登录用户。切换账户会中断旧查询、清理账户详情缓存;金额使用十进制字符串与整数校验,不做浮点账本计算。