فهرست منبع

G2-2 子页自适应(根层):11 子页根去写死像素 + 宿主下沉 1824×2736 设计基准

关键约束:内容外层只有 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 是 Window 弹窗归 G2-1。

核实:grep 根运行时尺寸清零 + dotnet build operate 0 error + codegraph sync。
7 个星号页+主页真机视觉(满屏不溢出/不塌缩/不变形)= G2 门控待用户。
文档已同步(进度状态/交接卡/工作计划表/当前开发计划/进度数据.js)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
huangjie 5 روز پیش
والد
کامیت
064a0f274c

+ 6 - 1
ivf_tl_operate_2.0/ivf_tl_Operate/MainWindow.xaml

@@ -9,7 +9,12 @@
         WindowState="Maximized"
         WindowStartupLocation="CenterScreen"
         Title="IndexWindow">
-    <Grid x:Name="MainGrid">
+    <!-- G2-2:把 1824×2736 设计基准下沉到宿主一处(唯一固定基准)。
+         外层 MainWindow.xaml.cs 已无条件用 Viewbox{Uniform} 包裹 MainGrid(M4-01-1),
+         此处给 MainGrid 固定设计尺寸,Viewbox 恒以 1824×2736 测量再等比缩放到实际屏。
+         子页(含主页)整屏 LoadPage 进 _container、填满该基准,星号(*)行据此解析、不再各自写死根尺寸。
+         [D6] 真机校准设计基准分辨率时只调这一处。-->
+    <Grid x:Name="MainGrid" Width="1824" Height="2736">
         <ContentControl x:Name="_container"/>
         <Grid x:Name="_mask" Opacity="0.8" Background="Black" Visibility="Hidden"/>
     </Grid>

+ 1 - 1
ivf_tl_operate_2.0/ivf_tl_Operate/View/AboutView.xaml

@@ -5,7 +5,7 @@
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              xmlns:local="clr-namespace:ivf_tl_Operate.View"
              mc:Ignorable="d" 
-             Height="2736" Width="1824"
+             d:DesignHeight="2736" d:DesignWidth="1824"
              xmlns:customControl="clr-namespace:ivf_tl_CustomControls;assembly=ivf_tl_CustomControls_Surface">
     <Grid Background="White">
         <Grid.RowDefinitions>

+ 2 - 2
ivf_tl_operate_2.0/ivf_tl_Operate/View/AlarmPageView.xaml

@@ -6,8 +6,8 @@
              xmlns:local="clr-namespace:ivf_tl_Operate.View"
              xmlns:customControl="clr-namespace:ivf_tl_CustomControls;assembly=ivf_tl_CustomControls_Surface"
              xmlns:customUserControl="clr-namespace:ivf_tl_Operate.CustomUserControls"
-             mc:Ignorable="d" 
-             Height="2736" Width="1824">
+             mc:Ignorable="d"
+             d:DesignHeight="2736" d:DesignWidth="1824">
     <Grid>
         <Grid.RowDefinitions>
             <RowDefinition Height="250"/>

+ 1 - 1
ivf_tl_operate_2.0/ivf_tl_Operate/View/AutoFocusSettingView.xaml

@@ -6,7 +6,7 @@
              xmlns:local="clr-namespace:ivf_tl_Operate.View"
              mc:Ignorable="d" 
              xmlns:customControl="clr-namespace:ivf_tl_CustomControls;assembly=ivf_tl_CustomControls_Surface"
-             Height="2736" Width="1824">
+             d:DesignHeight="2736" d:DesignWidth="1824">
     <Grid Background="White">
         <Grid.RowDefinitions>
             <RowDefinition Height="250"/>

+ 1 - 1
ivf_tl_operate_2.0/ivf_tl_Operate/View/BufferDebugView.xaml

@@ -7,7 +7,7 @@
              xmlns:cu="clr-namespace:ivf_tl_Operate.CustomUserControls"
              mc:Ignorable="d"
              xmlns:customControl="clr-namespace:ivf_tl_CustomControls;assembly=ivf_tl_CustomControls_Surface"
-             Height="2736" Width="1824">
+             d:DesignHeight="2736" d:DesignWidth="1824">
     <Grid Background="White">
         <Grid.RowDefinitions>
             <RowDefinition Height="250"/>

+ 1 - 1
ivf_tl_operate_2.0/ivf_tl_Operate/View/ChartPageView.xaml

@@ -8,7 +8,7 @@
              xmlns:customUserControl="clr-namespace:ivf_tl_Operate.CustomUserControls"
              xmlns:oxy="http://oxyplot.org/wpf"
              mc:Ignorable="d" 
-              Height="2736" Width="1824">
+              d:DesignHeight="2736" d:DesignWidth="1824">
     <Grid x:Name="_root">
         <Grid.RowDefinitions>
             <RowDefinition Height="250"/>

+ 1 - 1
ivf_tl_operate_2.0/ivf_tl_Operate/View/DetailPageView.xaml

@@ -7,7 +7,7 @@
              xmlns:customUserControl="clr-namespace:ivf_tl_Operate.CustomUserControls"
              xmlns:customControl="clr-namespace:ivf_tl_CustomControls;assembly=ivf_tl_CustomControls_Surface"
              mc:Ignorable="d" 
-             Height="2736" Width="1824">
+             d:DesignHeight="2736" d:DesignWidth="1824">
     <Grid x:Name="Grid_Root">
         <Grid.RowDefinitions>
             <RowDefinition Height="250"/>

+ 1 - 1
ivf_tl_operate_2.0/ivf_tl_Operate/View/DishRecordView.xaml

@@ -7,7 +7,7 @@
              xmlns:customUserControl="clr-namespace:ivf_tl_Operate.CustomUserControls"
              xmlns:customControl="clr-namespace:ivf_tl_CustomControls;assembly=ivf_tl_CustomControls_Surface"
              mc:Ignorable="d" 
-             Height="2736" Width="1824">
+             d:DesignHeight="2736" d:DesignWidth="1824">
     <Grid x:Name="_root">
         <Grid.RowDefinitions>
             <RowDefinition Height="250"/>

+ 1 - 1
ivf_tl_operate_2.0/ivf_tl_Operate/View/HouseDebugPageView.xaml

@@ -6,7 +6,7 @@
              xmlns:local="clr-namespace:ivf_tl_Operate.View"
              xmlns:customControl="clr-namespace:ivf_tl_CustomControls;assembly=ivf_tl_CustomControls_Surface"
              mc:Ignorable="d" 
-             Height="2736" Width="1824">
+             d:DesignHeight="2736" d:DesignWidth="1824">
     <Grid Background="White">
         <Grid.RowDefinitions>
             <RowDefinition Height="134"/>

+ 1 - 1
ivf_tl_operate_2.0/ivf_tl_Operate/View/HouseSettingPageView.xaml

@@ -6,7 +6,7 @@
              xmlns:local="clr-namespace:ivf_tl_Operate.View"
              xmlns:customControl="clr-namespace:ivf_tl_CustomControls;assembly=ivf_tl_CustomControls_Surface"
              mc:Ignorable="d" 
-             Height="2736" Width="1824">
+             d:DesignHeight="2736" d:DesignWidth="1824">
     <Grid Background="White">
         <Grid.RowDefinitions>
             <RowDefinition Height="auto"/>

+ 1 - 1
ivf_tl_operate_2.0/ivf_tl_Operate/View/PhotoPageView.xaml

@@ -7,7 +7,7 @@
              xmlns:customControl="clr-namespace:ivf_tl_CustomControls;assembly=ivf_tl_CustomControls_Surface"
              xmlns:customUserControl="clr-namespace:ivf_tl_Operate.CustomUserControls"
              mc:Ignorable="d" 
-             Height="2736" Width="1824" >
+             d:DesignHeight="2736" d:DesignWidth="1824" >
     <Grid x:Name="Grid_Root">
         <Grid>
             <Grid.RowDefinitions>

+ 2 - 2
ivf_tl_operate_2.0/ivf_tl_Operate/View/SettingPageView.xaml

@@ -7,8 +7,8 @@
              xmlns:wc="clr-namespace:WpfControlLibrary;assembly=WpfControlLibrary"
              xmlns:cu="clr-namespace:ivf_tl_Operate.CustomUserControls"
              xmlns:customControl="clr-namespace:ivf_tl_CustomControls;assembly=ivf_tl_CustomControls_Surface"
-             mc:Ignorable="d" 
-             Height="2736" Width="1824">
+             mc:Ignorable="d"
+             d:DesignHeight="2736" d:DesignWidth="1824">
     <Grid Background="White">
         <Grid.RowDefinitions>
             <RowDefinition Height="250"/>

+ 1 - 1
项目文档/开发计划/2026-06-20-当前开发计划.md

@@ -53,7 +53,7 @@
 **涉及文件**:operate 首页舱室弹框视图、M4 清单 13 子页(去写死 2736×1824 像素 + Viewbox/弹性)、TabTip 屏蔽处、well 状态色彩样式。
 
 - [ ] **G2-1** `[纯代码][P1]` 首页舱室弹框位置/大小修复。
-- [ ] **G2-2** `[纯代码][P1]` M4 13 子页自适应(按 M4-01-5 清单:去写死像素 + Viewbox/弹性 + 零滚动,子页根无 2736×1824)。
+- [x] **G2-2** `[纯代码][P1]` M4 13 子页自适应(按 M4-01-5 清单:去写死像素 + Viewbox/弹性 + 零滚动,子页根无 2736×1824)。 ✅2026-06-20 **根层完成·真机视觉待验**:关键约束=内容外层只有 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(Setting 多 Grid、Photo WrapPanel 等)=深层 R6「去 Canvas 绝对坐标」留后续真机轮。CCDSettingView 已达标不改;AddDishWindowView 是 Window 弹窗归 G2-1。★grep 根运行时尺寸清零 + dotnet build operate 0 error + codegraph sync done。7 个星号页+主页真机视觉(满屏不溢出/不塌缩/不变形)= G2 门控待用户★。
 - [ ] **G2-3** `[纯代码][P2]` TabTip 程序级屏蔽实现。
 - [ ] **G2-4** `[纯代码][P2]` well 三态色彩。
 

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

@@ -551,3 +551,15 @@
 - ★编译核实:dotnet build operate = 0 error(仅预存警告,含已知 BufferDebug MVVMTK0034)。codegraph sync done。
 - 真机/运行待验:清理真执行删库 = 起运行后到 autoFocusTime 触发查 house_autofocus_calibration scene=1 过期行被删、scene=0 在(运行期非真机门控);本地旧 SQLite 加 cleanAutofocusData 列 = G4-3/V-046 真机门控。
 - 本次未 git commit(待与文档一并)。下一步:G2 UI 或 G1-2(ComBin 去重,需专门一轮+真机)。
+
+## 2026-06-20 · ★G2-2 子页自适应(根层)完成 + 5 个已完成任务 push 远程★
+- **先 push**:会话开场核实 working tree clean,G3 全部/G4-1/G4-2 共 5 提交本地已规范提交(均带同步文档,符合 3.4),但领先 origin/main 未推。已 `git push`:617cc53..968f9ae,现 `main...origin/main` 同步。
+- **G2-2 调研关键发现**:operate 所有页(含主页)整屏 LoadPage 进 MainWindow `_container`(ContentControl),外层只有 **一个** `Viewbox{Uniform}`(MainWindow.xaml.cs M4-01-1 无条件包裹 MainGrid)。Viewbox **以无约束测量子页自然尺寸再等比缩放**——故含 `*` 星号行的页**靠根 Height=2736 撑开**;直接删根尺寸,星号行塌缩成内容高、Viewbox 拿到扁画布→视觉崩。样板 MainPageView(Auto/Auto/*/Auto)根已删尺寸但宿主未给基准,**自身也是此隐患(M4 视觉本未验)**。
+- **方案=设计基准下沉一处**(用户拍板"宿主基准+全11页"):
+  · 改动1 `MainWindow.xaml`:`<Grid x:Name="MainGrid">` 加 `Width="1824" Height="2736"`(唯一固定设计基准;_container/_mask 同在其下基准统一;D6 真机校准只调这一处;**一并修好样板页**)。不动 .xaml.cs。
+  · 改动2 11 全屏子页根 `Height="2736" Width="1824"` → `d:DesignHeight="2736" d:DesignWidth="1824"`(11 页均已有 xmlns:d+mc:Ignorable,d: 运行时忽略仅设计期):About/Alarm/AutoFocus/Buffer/Chart/Detail/DishRecord/HouseSetting/Photo/Setting/HouseDebug。
+- **本轮范围边界**:只动根尺寸。内层 Canvas 绝对定位/内层写死 Width=1824(SettingPageView 14 个 Grid、PhotoPageView WrapPanel、Detail/Alarm/DishRecord 分页控件等)= 深层 R6「去 Canvas 绝对坐标」高视觉风险层,**留后续真机轮**,本轮不碰。`CCDSettingView` 根已 d:DesignHeight=450/Width=800 达标不改;`AddDishWindowView` 是 `<Window>` 弹窗(非 _container 全屏页)归 G2-1 弹框族单独处理。
+- **核实**:① grep 11 页前12行根运行时 `Height="2736"`/裸 `Width="1824"` 清零(残留 Width=1824 全是内层 WrapPanel/Grid,非根);② 各页 `d:DesignHeight="2736"` 计数=1 就位;③ `dotnet build ivf_tl_Operate.csproj -c Debug` = **0 错误**(2056 警告全预存 nullable/MVVMTK0034,本轮只改 XAML 不引入);④ `codegraph sync` up to date(XAML 非索引符号)。
+- **TDD 记账**:声明式 XAML 布局无可单测纯逻辑 + operate 无测试工程(IvfTl.AutoFocus.Tests 仅 control 侧),属 TDD 例外;CLAUDE.md「开发优先·真机视觉验收」按 superpowers 指令优先级高于 TDD skill。验证=grep+编译(已闭环),视觉走 G2 真机门控。
+- **真机/视觉待验(G2 门控,留用户)**:7 个星号页(About/Alarm/Chart/DishRecord/Photo/Setting/HouseDebug)+主页进 GUI 看满屏不溢出/不塌缩/不变形、一屏排布。这是 G2-2 最终验收。
+- 本次未 git commit(按惯例主会话统一,与文档一并)。下一步纯代码:G2-1 首页弹框 / G2-3 TabTip 程序级屏蔽 / G2-4 well 三态(**需求未定哪三态,先定义再做**);或 G1-2 ComBin 去重(需专门一轮+真机)。

+ 1 - 1
项目文档/进度/工作计划表.md

@@ -101,7 +101,7 @@
 | 编号 | 任务 | 状态 | 依赖 | 出口验收 | 关联源码/文档 | 环境验证 |
 |------|------|------|------|----------|--------------|---------|
 | M4-01 | 自适应竖屏框架 + 触控 + 圆形 + 键盘 + 主页零滚动 | 🔶 | M1-01 | 框架/主页/键盘/双语落地 | 07;M4子计划;主窗/主页/新页已改 | ✔ |
-| M4-子页 | 13 子页自适应(去写死像素 + Viewbox) | ❌ | M4-01 | 各子页各分辨率布局正常 | 审计 B4:SettingPageView/ChartPageView/DetailPageView/HouseDebugPageView 等仍 Height=2736/Width=1824 | ✔ |
+| M4-子页 | 13 子页自适应(去写死像素 + Viewbox) | 🔶 | M4-01 | 各子页各分辨率布局正常 | **G2-2 ✅2026-06-20 根层完成**:宿主 MainGrid 下沉 1824×2736 基准 + 11 页根 Height/Width→d:Design*;编译0err;7 星号页真机视觉待验。内层 Canvas 绝对定位留深层轮 | ✔ |
 | M4-TabTip | TabTip(系统触摸键盘)程序级屏蔽 | ❌ | M4-01 | TabTip 不弹 | 审计 D2/B4:仅停 osk + IME 禁用,TabTip 未屏蔽 | ✔ |
 | M4-弹框 | 首页舱室弹框 / 标定弹窗 位置/大小修复 | 🔶 | M4-01 | 弹框位置正确居中 | 真机视觉待修 | ✔ |
 

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

@@ -1,13 +1,14 @@
 // 进度数据(监控面板.html 读取)。每完成一步由助手回写,generatedAt 用于停滞检测。
 window.PROGRESS_DATA = {
   project: "时差培养箱合并改造",
-  generatedAt: "2026-06-20T23:55:00",
-  currentTask: "★G4-1 对焦标定清理任务(C6)完成★:用户拍板配置走 tl_setting.clean_autofocus_data 中央下发列。该列+Java下发链(cleanAutofocusData默认30)中央原已就绪,仅缺C#消费者;补全①C#下发链4文件(tlSettingDTO/TLSettingDB/TLSetting/ConvertHelper 3路径)加cleanAutofocusData镜像focusLayerCount;②DBService.CleanAutofocusData(keepDays)物删house_autofocus_calibration scene=1过期、scene=0永留、keepDays<=0安全阀、全try兜底;③AppData每日维护窗口(autoFocusTime,与DeleteLog同源)调CleanAutofocusCalibration读TLSetting.cleanAutofocusData缺省30。dotnet build operate 0 error。清理真入库待运行验;本地SQLite旧库列迁移归G4-3(V-046真机门控)。",
-  currentStep: "G4-1 对焦标定清理任务(C6)完成",
-  nextStep: "剩余纯代码:G2 UI(首页弹框/13子页自适应/TabTip/well三态,视觉真机为准)或 G1-2(ComBin枚举迁移去重,交接卡注明需专门一轮+真机)。真机门控 G1-1(T1.4)/G3真入库抽查/G4-3(V-046)/G5 待用户在场。",
+  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去重(需专门一轮+真机)。",
   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: [
+    { id: "G2-2", name: "★13子页自适应(根层):宿主 MainGrid 下沉 1824×2736 唯一设计基准(修好样板页)+11全屏子页根 Height/Width→d:DesignHeight/Width;本轮只动根尺寸,内层 Canvas 绝对定位留深层轮。grep根净+dotnet build 0 error;7星号页+主页真机视觉待验★", status: "☑" },
     { id: "MERGE", name: "★三项目合并物理收尾:control并入operate/control/+autofocustool删+编译三关0错误★", status: "☑" },
     { id: "MERGE-真机", name: "★真机闭环:硬件层(握手/温压门/电机/相机/SN)+业务API+data-transmission起(nacos 6服务)★", status: "☑" },
     { id: "T1.1-3", name: "★串口占用代码层修复:补HAL 6/7方法+调试改lease+借用闸门暂停(CapturePausedByGate)★", status: "☑" },
@@ -70,7 +71,7 @@ window.PROGRESS_DATA = {
     ]},
     { id: "M4", name: "UI改造(审计U7)", tasks: [
       { id: "M4-01", name: "自适应框架+主页+键盘+双语(框架落地)", status: "🔶", env: true },
-      { id: "M4-子页", name: "13子页自适应(写死像素,B4欠账)", status: "❌", env: true },
+      { id: "M4-子页", name: "13子页自适应(G2-2✅根层:宿主基准下沉+11页根去写死,0 error;7星号页真机视觉待验。内层Canvas绝对定位留深层轮)", status: "🔶", env: true },
       { id: "M4-TabTip", name: "TabTip程序级屏蔽(D2欠账)", status: "❌", env: true },
       { id: "M4-弹框", name: "首页舱室弹框位置/大小修复(待修)", status: "🔶", env: true }
     ]},

+ 12 - 6
项目文档/进度/进度状态.yaml

@@ -1,13 +1,19 @@
 # 续接断点状态(机器可解析)。换会话/换电脑后首先读它定位。
 # 状态取值: 未开始 / 进行中 / 完成 / 代码完成待验证
 # 纪律:本字段只存【当前断点】,历史细节进 交接卡.md(见 CLAUDE.md 第三节)。
-更新时间: 2026-06-20 G4-1 完成(对焦标定清理任务 C6,scene=1 物删/scene=0 永留
+更新时间: 2026-06-20 G2-2 完成(11 子页根去写死像素 + 宿主下沉 1824×2736 设计基准
 当前任务: >
-  【★G4-1 对焦标定清理任务(C6)完成★】用户拍板配置走 tl_setting.clean_autofocus_data 中央下发列。
-  · 发现该列(原始遗留,base 已含)+ Java 下发链(TlSetting/TlSettingVO cleanAutofocusData 默认30)中央端原已就绪,仅缺 C# 消费者。
-  · 补全:① C# 下发链 4 文件(tlSettingDTO/TLSettingDB/TLSetting/ConvertHelper 3 路径)加 cleanAutofocusData 镜像 focusLayerCount;② DBService.CleanAutofocusData(keepDays):物删 house_autofocus_calibration scene=1 且 calibTime<now-keepDays、scene=0 永留、keepDays<=0 安全阀不删、全 try 兜底返回条数;③ AppData 每日维护窗口(StartPushMessageThread autoFocusTime,与 DeleteLog 同源)调 CleanAutofocusCalibration,读 TLSetting.cleanAutofocusData 缺省30。
-  · dotnet build operate 0 error。★清理真入库待运行抽查;本地 SQLite 旧库 cleanAutofocusData 列迁移归 G4-3(V-046 真机门控)。本次未提交,待一并 git。
-  下一步:剩余纯代码 G2 UI(首页弹框/13子页自适应/TabTip/well三态,视觉真机为准);或 G1-2(ComBin 枚举迁移去重,交接卡注明需专门一轮+真机)。真机门控 G1-1(T1.4)/G3真入库/G4-3/G5 待用户在场。
+  【★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(Setting 多个 Grid、Photo WrapPanel 等)= 深层 R6
+    「去 Canvas 绝对坐标」留后续真机轮。CCDSettingView 已达标不改;AddDishWindowView 是 Window 弹窗归 G2-1。
+  · ★grep 根运行时尺寸清零 + dotnet build operate 0 error + codegraph sync done。本次未提交,待文档齐一并 git。★
+  下一步:7 个星号页(About/Alarm/Chart/DishRecord/Photo/Setting/HouseDebug)+主页真机视觉验(满屏不溢出/不塌缩/不变形,G2 门控,留用户在场)。
+  纯代码续接:G2-1 首页弹框 / G2-3 TabTip 屏蔽 / G2-4 well 三态(需求未定三态,先定义);或 G1-2 ComBin 去重(需专门一轮+真机)。
   续接读:《工作计划表》+《当前开发计划》+ 本文件 + 交接卡末尾。
 说明: >
   M0-M5 全部【可写源码】已完成,C#合并端 0 error + M2-02 单测 15/15。工具链就位(JDK11.0.25 + Maven3.9.9