Эх сурвалжийг харах

G2 软键盘收尾:移除 SKDIAG 临时诊断 + 文档回写

- SoftKeyboardHost.cs 临时诊断块(SKDIAG)移除后与 HEAD 一致,软键盘修复已随 a4f3a14 落地,本次无代码改动
- SKDIAG 日志实测佐证键盘正常:popup 撑满全窗、kb 960×678 Vis=True srcAttached、屏坐标487,208 完整居中不裁
- 回写 交接卡/进度状态.yaml/进度数据.js
- 下一步:排查 8GB 日志滚动失效(待分析)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
huangjie 4 өдөр өмнө
parent
commit
439df1791f

+ 17 - 0
项目文档/进度/交接卡.md

@@ -615,3 +615,20 @@
 - **真根因**:T1.4 测试时**用户没登录 operate**——只用工程师口令 tl13579 进了设置页/调试页(`Setting_Click` 直接 LoadPage,不需登录;MiMa 工程师口令≠登录)。MainWindow 采集启动 Task(line 67) 有守卫:`account/password 空 → 记日志"control 后台启动跳过:operate 登录账号/密码为空" → return`(line 82-86)。故采集 StartRun + ScanDevices 全被跳过 → _houses 空 → 调试页借用 lease.Serial==null。**非代码 bug,是测试少了"登录"这步**(调试页 Start() 用独立 SerialBin 枚举不依赖采集,所以能进调试页枚举到 7 舱,但 ComHouseInit 借用依赖采集句柄→失败)。
 - **本次代码改动(健壮性补强,非根因修复)**:① IHardwareAccessLayer + HardwareAccessLayer 加 `RegisterHouse(houseSn,port,ccdIndex)`,**仅当 _houses 无该舱时补登记、不覆盖 ScanDevices 已发现的舱**;② HouseBin 构造(GetSerial 后)调 RegisterHouse(ccdIndex 取 `openCcd==1&&ccdId!=-1 ? ccdId : -1`,与采集端 GetCamera(House.ccdId) 一致)。**作用**:ScanDevices 现场漏扫某舱(如握手瞬时失败)但采集端有服务器配置时,补 _houses 使该舱借用仍可用。`dotnet build operate` 0 error + codegraph sync done。
 - **复验(需登录)**:启动 operate → **登录**(User 按钮→LoginWindow→账号密码,触发采集+ScanDevices) → 等采集起(_houses 填) → 进调试页(tl13579)选舱 → 借用应复用句柄成功、可读温压/动电机。★登录账号密码需用户提供/操作★。
+
+## 2026-06-21 · T1.4 复验尝试:阻塞于微服务集群未起(SITE-NET,非代码)
+- 启动 operate + 用户登录后查日志:control_logs 目录出现(control 后台 Task 启动了),但 `control RunException` 10:06:32 `HttpClientSendAsync网络异常 [url:/api/gateway/auth/login]`——control 后台登录 gateway 失败。
+- 查证:本机**无 java/javaw 进程**,微服务端口(nacos 8848 / 各服务 10010+)全未监听=**微服务集群未起**;operate `urlIp=http://127.0.0.1` 指本机 gateway,连不上→登录网络异常。(10000 端口被无关的 YunDetectService 占,非 gateway)
+- **链条**:微服务未起→登录 gateway 失败→MainWindow 采集 Task 守卫 return→采集+ScanDevices 未跑→_houses 空→借用拿空句柄。**复验阻塞=运行环境(微服务集群)未起,非 T1.4 代码**。control RunRecord 00:57 有过成功采集启动(相机信息+COM3/4/5/9/11/18/19 全 True),证明环境就绪时通。
+- **复验前提(下次)**:先起本机微服务集群(gateway+nacos+tl-control 等,见 SITE-NET/环境清单)→operate 重新登录→control 登录成功→采集+ScanDevices 起→_houses 填→进调试页(tl13579)选舱→借用应复用句柄成功(看消息"调试已复用采集端串口句柄"+oplog 借用串口操作)。本次代码(RegisterHouse 补强)已提交 bd6943b,等环境就绪复验。
+
+## 2026-06-21 · G2 软键盘收尾:移除 SKDIAG 临时诊断·实测佐证键盘正常·准备提交
+- **背景**:上一轮用户重编译后软键盘恢复正常,但 `SoftKeyboardHost.cs` 里还留着一段临时诊断块(SKDIAG,Show() 末尾 Dispatcher.BeginInvoke@Loaded 优先级记运行时状态),不能带着提交。本轮:① 读 SKDIAG 日志用实测佐证键盘现态正常;② 移除诊断代码。
+- **① 实测佐证(SKDIAG 日志,`C:\TLData\ivf_tl_Control_logs\Log\20260621.htm` 尾部,3 条一致)**:
+  · `popup[Open=True ChildSet=True childAW=1934 childAH=1094]` —— 顶层 Popup 已开,子树撑满全窗口。
+  · `kb[AW=960 AH=678 Vis=True V=Visible srcAttached=True]` —— 键盘实测 960×678(=计算值),**可见、已附加 PresentationSource**(此前 0×0 不可见的坑不复现)。
+  · `screen[kbScrPos=487,208 PW=1920 PH=1080]` —— 键盘屏幕坐标 (487,208),487+960=1447<1920 且 208+678=886<1080,**完整落在屏内、不裁切、居中**。
+  · 结论:诊断代码纯记日志、不碰布局,键盘恢复正常的真因=重编译让旧 exe 与当前 Popup 源码对上(此前跑的是过期编译产物)。
+- **② 移除诊断**:删 SoftKeyboardHost.cs 的 SKDIAG 整块(原 198–222 行,try/Dispatcher.BeginInvoke/inner+outer catch 全删),Show() 干净收尾于 `_popup.IsOpen = true;`。`codegraph sync` done。
+- **★提交边界核实★**:移除 SKDIAG 后 `git diff HEAD` 显示 SoftKeyboardHost.cs **与 HEAD 完全一致**——软键盘最终修复(Popup 托管+居中)其实已在上个提交 `a4f3a14` 落地,HEAD 里本就无 SKDIAG。SKDIAG 是仅存于工作区的临时诊断,现已删回 HEAD 态。故**本次 git 提交实际只含两个文档文件**(交接卡.md + 进度状态.yaml),无代码改动。
+- **下一步**:① git commit & push 本次文档;② 排查 8GB 日志滚动失效(`MaxFileSize=10240` 对 InfoAppender 没拦住,单文件涨到 7.98GB)——先分析原因,用户确认后再改。

+ 4 - 4
项目文档/进度/进度数据.js

@@ -1,10 +1,10 @@
 // 进度数据(监控面板.html 读取)。每完成一步由助手回写,generatedAt 用于停滞检测。
 window.PROGRESS_DATA = {
   project: "时差培养箱合并改造",
-  generatedAt: "2026-06-20T23:59:00",
-  currentTask: "★G2-2 子页自适应(根层)完成★:关键约束=内容外层只有 MainWindow 一个 Viewbox{Uniform},以无约束测量子页自然尺寸再缩放,含*星号行的页靠根 Height=2736 撑开,直接删根尺寸会塌缩。方案=设计基准下沉一处:MainWindow.xaml 的 MainGrid 加 Width=1824 Height=2736(唯一固定基准,D6 真机校准只调这一处,同时修好样板 MainPageView);11 全屏子页根 Height=2736 Width=1824 → d:DesignHeight/d:DesignWidth(About/Alarm/AutoFocus/Buffer/Chart/Detail/DishRecord/HouseSetting/Photo/Setting/HouseDebug)。本轮只动根尺寸,内层 Canvas 绝对定位/内层 Width=1824 留深层 R6 真机轮;CCDSettingView 已达标不改,AddDishWindowView 弹窗归 G2-1。grep 根运行时尺寸清零 + dotnet build operate 0 error + codegraph sync done。另:会话开场把 G3全部/G4-1/G4-2 共5提交 push 远程(617cc53..968f9ae)。",
-  currentStep: "G2-2 子页自适应(根层)完成,根去写死+宿主基准",
-  nextStep: "7星号页(About/Alarm/Chart/DishRecord/Photo/Setting/HouseDebug)+主页真机视觉验(满屏不溢出/不塌缩/不变形,G2门控)。纯代码续接:G2-1 首页弹框/G2-3 TabTip屏蔽/G2-4 well三态(需求未定三态先定义)或 G1-2 ComBin去重(需专门一轮+真机)。",
+  generatedAt: "2026-06-21T12:10:00",
+  currentTask: "★G2 软键盘收尾★:移除 SoftKeyboardHost.cs 临时诊断块(SKDIAG)。读 SKDIAG 日志实测佐证键盘正常(popup 撑满全窗 1934×1094、kb 实测 960×678 Vis=True srcAttached=True、屏坐标 487,208 完整落屏内不裁切居中)。结论:诊断纯记日志不碰布局,键盘恢复正常真因=重编译让旧 exe 对上当前 Popup 源码。移除后 SoftKeyboardHost.cs 与 HEAD 完全一致(软键盘修复已随上个提交 a4f3a14 落地),本次 git 提交只含两文档(交接卡+进度状态)。",
+  currentStep: "G2 软键盘收尾:移除 SKDIAG 诊断+实测佐证键盘正常,准备提交push",
+  nextStep: "排查 8GB 日志滚动失效:InfoAppender 单文件 20260621.htm 已 7.98GB,MaxFileSize=10240+RollingStyle=Date 没拦住——先只分析原因,用户确认后再改 log4net.config。旁置:T1.4 复验仍阻塞微服务集群未起(SITE-NET,bd6943b 补强已提交等环境)。",
   phase: "★★三项目合并物理收尾完成 + 串口占用代码层已修(T1.1~T1.3,T1.4待GUI验) + Phase0功能bug已修(scene=0不拍照/kfka重复键/front去imageScore) + 真机硬件+API+服务起全闭环★★ 文档重组进行中,真机GUI全流程验收待续",
   note: "2026-06-20:在2026-06-19灾后恢复基础上,本会话完成三项目合并最后一公里——control物理并入operate/control/(顶层ivf_tl_control_2.0消失,operate自包含)、autofocustool删除、编译operate/front/单测三关0错误。真机验证:硬件层(7舱握手+三路温度+压力+舱门+电机偏差0+相机出图2592×1944+CCDSN映射)+业务API(登录/tl-control/business/surface getButtons/对焦下发V-047上行V-064)全闭环;data-transmission补建aivfo-tl库后Started(nacos 6服务)。串口占用代码层修复T1.1~T1.3(T1.4真机待GUI);功能bug修复T0.1~T0.3。M2-02单测重建23断言全通过。审计报告与会话续接文档内容已三层归位后删除。详见交接卡。",
   planTasks: [

+ 8 - 10
项目文档/进度/进度状态.yaml

@@ -1,17 +1,15 @@
 # 续接断点状态(机器可解析)。换会话/换电脑后首先读它定位。
 # 状态取值: 未开始 / 进行中 / 完成 / 代码完成待验证
 # 纪律:本字段只存【当前断点】,历史细节进 交接卡.md(见 CLAUDE.md 第三节)。
-更新时间: 2026-06-21 G1-1/T1.4 真机验证+根因纠正:真因=测试未登录(非ScanDevices缺陷),已加补强待复验
+更新时间: 2026-06-21 G2软键盘收尾:移除SKDIAG诊断+实测佐证键盘正常,准备提交push;下一步排查8GB日志滚动失效
 当前任务: >
-  【★T1.4 真机验证·根因已纠正·补强已加待复验★】①进调试页 Start 枚举不报端口占用=✅通过(oplog 272 行串口全成功零占用);
-  ②选舱借用失败"借用到的串口句柄为空"。
-  · ★根因纠正:前结论"ScanDevices 全仓零调用"=错(codegraph_callers 漏报静态单例链式调用)。grep+读码确认
-    ScanDevices 实已接入 MainWindow.xaml.cs:112(登录后调)。真因=测试时未登录(只用工程师口令 tl13579 进调试页,
-    Setting_Click 不需登录)→采集启动 Task 被 account 空守卫(line82-86)跳过→采集+ScanDevices 都没跑→_houses 空→借用拿空句柄。
-    非代码 bug,是测试少了登录步。教训:codegraph "零调用"类结论必 grep 交叉验证。★
-  · 代码改动(健壮性补强非根因修复,已编译0err):HAL 加 RegisterHouse(仅补 ScanDevices 漏扫的舱、不覆盖)+HouseBin 构造补登记。
-  下一步:★复验需登录★——启动 operate→登录(User→LoginWindow→账号密码,触发采集+ScanDevices)→进调试页(tl13579)选舱→借用应成功。
-    登录账号密码需用户提供/操作。本次代码+文档待 git 提交。⚠ 临时代理/截图在 C:\Temp_aivfo_shot(可清)。
+  【★G2 软键盘最终修复已收尾,准备 git 提交并 push★】SoftKeyboardHost.cs 临时诊断块(SKDIAG)已移除,
+  SKDIAG 日志实测佐证键盘正常(popup 撑满全窗、kb 960×678 Vis=True srcAttached、屏坐标487,208 完整居中不裁)。
+  · 下一步①:git commit & push 本次(实际只含两个文档文件——SoftKeyboardHost.cs 移除 SKDIAG 后已回到 HEAD 态、
+    软键盘修复其实已随上个提交 a4f3a14 落地,无代码改动)。
+  · 下一步②:排查日志滚动失效——今天 InfoAppender 单文件 `20260621.htm` 已 7.98GB,`MaxFileSize=10240`
+    + RollingStyle=Date 没拦住。★先只分析原因,用户确认后再动手改 log4net.config。★
+  · 旁置未结:T1.4 复验仍阻塞于微服务集群未起(SITE-NET,非代码,bd6943b 已提交补强等环境)。
   续接读:《工作计划表》+《当前开发计划》+ 本文件 + 交接卡末尾。
 说明: >
   M0-M5 全部【可写源码】已完成,C#合并端 0 error + M2-02 单测 15/15。工具链就位(JDK11.0.25 + Maven3.9.9