From efd1c0d38c7881d5027d45601d3d34bf07548ed2 Mon Sep 17 00:00:00 2001 From: Zhou Weidong <502333560@qq.com> Date: Tue, 20 Oct 2026 18:24:23 +0800 Subject: [PATCH] =?UTF-8?q?docs(plans):=20=E7=95=99=E7=97=95=20K56=20?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=9C=B0=E5=9D=80=E7=BC=96=E8=BE=91=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/plans/INBOX.md | 28 ++++++++++++---------------- docs/plans/PROGRESS.md | 31 +++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 16 deletions(-) diff --git a/docs/plans/INBOX.md b/docs/plans/INBOX.md index 7274350..3f1b308 100644 --- a/docs/plans/INBOX.md +++ b/docs/plans/INBOX.md @@ -1,23 +1,19 @@ -## [已处理] 2026-10-20 | K55-A iOS 加载失败定位:错误详情可见 + 重试前重新探测地址(仅 App 端) +## [已处理] 2026-10-20 | K56-A 失败页增加「手动设置服务地址」(仅 debug,仅 App 端) -**用户指令(2026-10-20,原文)**: -> 「现在iOS 启动还是剧目列表加载失败」 - -**现状** -- Mac 侧后端 `127.0.0.1:8081` 与 `39.162.50.99:8081` 均返回 200;Mac 局域网 IP 仍为 `192.168.31.187`; -- iOS 侧 `Info.plist` 已放开 ATS,`AppConfig` 探测顺序已改为 127 → 192.168.31.187 → 公网; -- 失败页现在只显示通用文案「剧目列表加载失败」,看不到实际请求地址与异常,无法继续定位。 +**背景** +iOS 真机日志显示:`127.0.0.1` 拒绝、`192.168.31.187:8081` 与 `39.162.50.99:8081` 均 `No route to host (errno 65)`。Mac 侧后端正常、防火墙已放行 java。属于设备网络不可达(不同网段 / 本地网络权限被拒 / 无互联网),需要让用户能不改包直接切换服务地址排查。 **口径(只改 Flutter,不动后端、不改接口)** -1. 诊断信息可见(仅 `kDebugMode`): - - 首页/剧场失败页追加两行小字:「服务地址:{AppConfig.apiBaseUrl}」「错误:{error 原文}」(Key `catalog-debug-endpoint` / `catalog-debug-error`),12 号 `AppColors.subtle`,最多 2 行省略; - - `CatalogController.load/refresh` 失败时 `debugPrint('[catalog] base=... error=...')`;`AppConfig` 探测每个候选地址打印 `[probe] -> ok/fail()`。 -2. 重试逻辑增强:首页与剧场错误态的「重试」按钮先 `await AppConfig.probeAndApplyBaseUrl()`,再 `catalog.load()`(Key 不变);避免首次启动网络未就绪/权限弹窗期间探测失败后一直用错地址。 -3. App 回到前台(`AppLifecycleState.resumed`)时,若上次目录请求失败,自动重新探测并重载一次(不弹提示)。 -4. 不改 release 行为(debug 信息仅在 kDebugMode 显示与打印)。 +1. `kDebugMode` 下,首页/剧场失败页在重试按钮下方增加「设置服务地址」文字按钮(Key `catalog-debug-endpoint-edit`): + - 打开对话框:预填 `AppConfig.apiBaseUrl`,用户可输入 `http://IP:端口`; + - 确认后 `ServerEndpoint.save(input)` → `AppConfig.probeAndApplyBaseUrl()` → `catalog.load()`; + - 校验非法地址时对话框内红字提示(`ServerEndpoint.normalize` 为空)。 +2. 对话框附提示文字:「手机需与电脑同一 Wi-Fi,并在 iOS 设置-隐私与安全性-本地网络 中允许本应用」。 +3. release 构建不显示该入口。 +4. 现有 debug 信息两行(K55-A)保留。 **测试/门禁** -- 单测:失败态 debug 行显示当前地址与错误;重试会先调用探测再 load; +- 单测:debug 模式失败页出现入口,输入合法地址后调用 save + probe + load;非法地址不保存并提示; - `dart analyze lib test` 零告警 + `flutter test` 全过 + `flutter build apk --debug`。 -**流程**:从 `develop` 拉 `fix/ios-k55-diagnostics`;作者 `Zhou Weidong <502333560@qq.com>`;`--no-ff` 合回 develop 并 push;PROGRESS 留痕;iOS 复现由用户执行(重建后把失败页上的「服务地址 / 错误」两行发回来即可精确定位)。 +**流程**:从 `develop` 拉 `feature/flutter-k56-endpoint-editor`;作者 `Zhou Weidong <502333560@qq.com>`;`--no-ff` 合回 develop 并 push;PROGRESS 留痕;真机验收由用户执行。 diff --git a/docs/plans/PROGRESS.md b/docs/plans/PROGRESS.md index 2ae4d12..6a7dfa3 100644 --- a/docs/plans/PROGRESS.md +++ b/docs/plans/PROGRESS.md @@ -21948,6 +21948,37 @@ Running Gradle task 'assembleDebug'... 解读:静态检查零告警,465 条测试全部通过,debug APK 构建成功。本机 Flutter 自动改写的 `pubspec.lock` 已恢复,未纳入提交。iOS 复现时可直接查看失败页服务地址与错误,或从 Xcode 日志筛选 `[probe]`、`[catalog]`。 +## 2026-10-20 ReelShort:K56-A debug 服务地址编辑器 + +- 前置状态:K55-A 已完成并合并,develop 合并提交 `eab5d3e`。 +- 分支:`feature/flutter-k56-endpoint-editor` +- 功能提交:`c259b0b feat(flutter): 增加 debug 服务地址编辑器` +- develop 合并提交:`ca67765 merge: 合并 K56 服务地址编辑器`,已推送。 +- 首页和剧场 debug 失败页在保留 K55 两行诊断的基础上增加 `catalog-debug-endpoint-edit` 按钮,release 不显示。 +- 对话框预填 `AppConfig.apiBaseUrl`,支持输入 `http://IP:端口`;合法地址经 `ServerEndpoint.normalize` 归一化后执行 save → probe → reload,非法地址在弹框内显示红字且不保存。 +- 对话框附带提示:手机需与电脑同一 Wi-Fi,并在 iOS 设置-隐私与安全性-本地网络 中允许本应用。 +- `ServerEndpoint.save` 成功后立即应用运行时地址,探测时显式自定义地址优先;无自定义地址时仍保持 K54 的 127 → 开发机 → 公网顺序。 + +测试:新增 debug 入口、合法地址 save/probe/load 顺序、非法地址不保存提示、自定义运行时地址优先探测,以及剧场入口断言。 + +门禁原始输出: + +```text +$ dart analyze lib test +Analyzing lib, test... +No issues found! + +$ flutter test +00:45 +468: All tests passed! + +$ flutter build apk --debug +Running Gradle task 'assembleDebug'... + 20.6s +✓ Built build/app/outputs/flutter-apk/app-debug.apk +``` + +解读:静态检查零告警,468 条测试全部通过,debug APK 构建成功。工作区无锁文件残留。iOS 真机可打开 debug 失败页手动切换服务地址,实际连通性由用户验收。 + ## 2026-10-20 ReelShort:K53-A 详情页首帧直出 - 前置状态:K52-A 已完成并合并,develop 合并提交 `a11ba50`。