Files
tongxunruanjian/docs/acceptance/b225-network-fix.md
T
2026-08-20 16:21:58 +08:00

100 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# B-225 双端验收包无法联网
分支:`agent/agent/a4ad7eed`(基于问题基线 `18d890ae7fdf66fa4df67360469f0f143641666a`
施工依据:B-148 第13阶段返工;对照旧包 `v1.0.6-internal-test`、故障预发布 `v3.8.3-internal-acceptance`、本卡新源码与新产物。
本卡只修客户端/构建配置并重打候选包,不改现网服务、不覆盖 Gitea 预发布 tag、不把构建成功当成真机联网通过。
**结论:Windows 根因是 Vite 未注入 `VITE_*`,登录打到 `undefined`Android 根因是默认 host 为官方占位域名,且回退端口 10008/10009 已关闭。候选包产物级已写入公司内网地址。真机登录未测。**
## 根因(产物对照,不是猜)
公司内网现况(构建机只读探测 `192.168.200.11`):10001 / 10002 / 10010 / 17880 开;官方 chat 默认口 10008 / 10009 关。账号服务 `POST /api/login` 有业务响应。
| 对照项 | 旧可用包 `v1.0.6-internal-test` | 故障预发布 `v3.8.3-internal-acceptance` | 本卡源码 + 候选包 |
|---|---|---|---|
| Windows 登录 | asar 字面量 `http://192.168.200.11:10010/api/login` | asar 为 `` `${{}.VITE_ACCOUNT_URL}/api/login` ``Vite 空对象) | asar 字面量 `http://192.168.200.11:10010` 等四条地址 |
| Windows IM / LiveKit | `:10002` / `:10001` / `:17880` 字面量 | 同样未注入 | 同上,四条均字面量 |
| Android `libapp.so` | 仅公司地址 | 公司地址 + `your-server-ip or your-domain` + `:10008` | 公司四条地址;`your-server-ip` / `:10008` / `:10009` 为 0 |
Windows 直接原因:仓库根 `.gitignore` 忽略 `.env`B-213 打包时没有 `.env` / `.env.production``vite build` 把 `import.meta.env.VITE_*` 编成空对象属性。
Android 直接原因:`Config._host` 不是 IP,启动默认走 HTTPS 假域名;`HttpUtil.init()` 在 `CompanyBootstrap` 之前拍死 `dio.baseUrl``ApiService.setBaseUrl` 曾只写 host 不带 `http://` 和端口;`Urls` 的 `static final` 第一次读取会冻结错误 URL;官方 chat 口已关,公司账号口是 10010。
## 最小修复
| 端 | 改动 | 作用 |
|---|---|---|
| PC | 新增 `pc-client/.env.production`(可入库) | `vite build` 默认 production 能注入内网地址 |
| PC | 新增 `pc-client/src/config/endpoints.ts`,登录/目录/RTC/IM 改走兜底常量 | 即使漏加载 env,也不会变成 `undefined` |
| Android | `Config._host = 192.168.200.11`auth/chatToken 回退 10008/10009 → 10010 | 默认不再走假域名和已关闭端口 |
| Android | `HttpUtil.setBaseUrl`bootstrap 写入完整 `AppEndpoints.apiAddr` | 启动后 Dio / ApiService 指向 `http://192.168.200.11:10002` |
| Android | `Urls` 改为 getter | DataSp 写入后 URL 会跟着更新 |
未改:`account-service/`、docker、端口、现网数据、`mobile/` 旧工程。
## 提交与回退
从新到旧回退:先本验收记录,再联网修复。
| 主题 | SHA | 文件 |
|---|---|---|
| 本验收记录 | 本文件当次提交 | `docs/acceptance/b225-network-fix.md` |
| 联网修复 | `bbc4dce0b61b44447f84732d841b8a66e3a2f4be` | `pc-client/.env.production`、`pc-client/src/config/endpoints.ts`、PC 调用点、Android Config/Urls/HttpUtil/bootstrap |
回退示例(新到旧):
```
git revert <本验收提交>
git revert bbc4dce0b61b44447f84732d841b8a66e3a2f4be
```
用户侧继续用旧包 `v1.0.6-internal-test`。不要回退到故障预发布 `v3.8.3-internal-acceptance`。
代码侧也可把分支重置回 `18d890ae7fdf66fa4df67360469f0f143641666a`。回退不影响现网服务与已发布旧包。
## 环境
- Flutter 3.24.5 / Dart 3.5.4`C:\devtools\flutter_3.24.5`
- Temurin JDK 17.0.20
- Android SDKplatform-tools、platforms;android-34、build-tools;34.0.0
- Node v24.5.0`pc-client` `npm install --ignore-scripts` 后 `npm run build` + `npx electron-builder --win --x64`
- `GRADLE_OPTS=-Xmx4096M`
## 候选包(未发布,未覆盖 `v3.8.3-internal-acceptance`
构建基线 HEAD`18d890ae7fdf66fa4df67360469f0f143641666a` + 本卡两提交。
| 产物 | 版本 | 大小 | SHA256 | 路径 |
|---|---|---|---|---|
| Android release APK | 3.8.3 | 53,288,459 B | `3709E9B24F2F8B12B9BD931D6633DC101C186367B5C3E704DD91D67DCB791B86` | `mobile-next/build/app/outputs/flutter-apk/app-release.apk` |
| Windows NSIS EXE | 1.0.2 | 105,893,401 B | `F16B421857C341016E4375A869C53FF80B1028E49F84A59FE43C93D50FCC866C` | `pc-client/release/Base/1.0.2/畅联_1.0.2.exe` |
故障预发布对照(不要当候选):
| 产物 | SHA256 |
|---|---|
| APK `v3.8.3-internal-acceptance` | `41261A1BEBD00597D16B50A0D01A261AF592129C5F28014B423A1AAE07AE7C73` |
| EXE `v3.8.3-internal-acceptance` | `25491BA9A19E181144602F81991993DBF3350A3981BD1CC82354949A83B0E645` |
产物抽检:
- 新 EXE `app.asar``http://192.168.200.11:10010` / `:10002` / `ws://...:10001` / `:17880` 各 1 次;`VITE_ACCOUNT_URL`、`{}.VITE_`、`undefined/api/login` 为 0。
- 新 APK `lib/arm64-v8a/libapp.so`:上述四条公司地址各 1 次;`your-server-ip`、`:10008`、`:10009` 为 0。
APK 内嵌时间戳,哈希不可位级复现。构建期告警同前:Flutter Gradle apply-script 弃用;部分依赖 Kotlin metadata 1.8.0 vs 工程预期 1.6.0。均属上游,release 通过。
## 已测 / 未测
已测:
- 构建机到 `192.168.200.11` 的 10001/10002/10010/17880 端口开,10008/10009 关
- 账号服务对错误工号返回业务 JSON(服务本身在)
- `npm run build`、`electron-builder --win --x64`、`flutter build apk --release` 成功
- 新旧产物字符串对照如上
未测(不得写成已通过):
- 公司内网真机 / 真 PC 用工号登录
- 登录后会话列表、发消息、音视频
- 本候选包安装覆盖旧包后的升级路径