# 患者感知层开发验证

2026-10-27 · **虚构软件数据，不是临床验证、真实患者样本或Agent实测结果。**

## 运行结果

`python -m iclbench patient-demo --output runs/patient-demo`生成8个虚构参与者、16个条件、每条件3次，共48份报告。包括无现象、圆环、椭圆、弧段、自由轮廓及双光源。重复在生成形态附近加入虚构随机抖动；没有从实际患者数据估计变异。

| 预测软件夹具 | 256²主分 | 512²复算 |
|---|---:|---:|
| 已知生成形态（latent-format-check） | 90.4130 | 90.3501 |
| 形态整体向右错位0.85° | 48.5461 | 48.5514 |
| 所有条件固定一个2°圆环 | 36.6978 | 36.7009 |
| 所有条件都报不存在 | 6.2500 | 6.2500 |

生成形态得分低于100，是因为逐次报告存在预设抖动。256→512的最大分数变化约0.063，当前负控排序保持；这只能证明这些夹具上的离散稳定性，不代表所有细带/病人形态均已收敛。

`private/records.json`仅供评测方；`public/targets.json`没有隐藏主诉与形态，但其中的眼部测量代号是虚构占位符。这个夹具不能用来考核临床光学预测能力。各score文件保留排除、患者/条件/重复数量、匹配、原始几何误差与区间诊断；clinical_score始终为null。

## 自动检查

运行`python -m unittest discover -s tests -v`，**69项全部通过**，其中新增16项患者层检查：

- 存在性必须明确；无现象必须为空标注；确认和研究同意要求。
- 回忆、屏幕匹配、不确定、未测刺激、未核对几何的排除；自动发现未勾选的形态越界。
- 错位、多报、弧段冒充全圆、椭圆/自由轮廓等错误会受罚。
- 多环顺序无关；错误光源归因受罚；非法数值、光源和弧跨度被拒绝。
- 至少2次重复，重复ID不可灌入；刺激条件不一致排除；合成与研究禁止混算。
- 缺交和无效预测计0，不缩小分母；患者等权，避免有更多重复/条件者占更大权重。
- 宽预测区间受proper interval score惩罚；自信/困扰度不改变几何主分。
- 无效可选字段使该target为0，不令整个评分崩溃；自由轮廓的距离采样不因顶点密度而加权。

## 浏览器与导出链路

使用gstack `/browse`执行`python -m scripts.check_patient_ui`：**15项通过**，涵盖初始无环、默认无持久保存、先自由描述、合成来源标识、几何确认、角坐标往返、修改后重新确认、完整保存、清空重测、明确无现象、导出、新条件重置、屏幕匹配标记、距离变化使校准失效。

浏览器导出的两份虚构重复直接送入Python评分器，两份均通过开发纳入条件，未出现无效预测。该链路验证使用DOM事件和数值控件，**没有验证实际光刺激、物理标尺、研究同意真实性或真实指针拖动硬件行为**。

另用1440×1100和390×844视口检查布局；均未横向溢出，手机画布保留完整圆环/弧段。完成本地导入检查，导入后保留记录并要求重新核对设备几何；浏览器无控制台错误。截图位于本机`runs/patient-desktop.png`、`runs/patient-mobile.png`与`runs/patient-mobile-canvas.png`。

## 仍未完成的科学工作

原创问卷的认知访谈、重测信度和效度、描画与显示反馈偏差、临床样本量、真实光源安全程序、设备/瞳孔/眼部实测、独立光学参照、评分容差及外部测试。没有完成这些工作之前，不发布临床合格阈值，不把感知一致性分称为ICL机制理解度。
