diff --git a/docs/03-tech-stack.md b/docs/03-tech-stack.md index fcd8365..9a52437 100644 --- a/docs/03-tech-stack.md +++ b/docs/03-tech-stack.md @@ -152,20 +152,24 @@ T-103 已证明当前衣服商品没有独立「规格/已选」入口。T-110 PDD 规格面板不可避免显示收货区域和掩码手机号。原始截图/XML 只能留在 `%LOCALAPPDATA%\cmbuyer\artifacts\...\raw` 隔离目录,不供 agent、fixture、业务或 HTTP 上传读取; T-103 已在 `client/src/cmbuyer_client/device/sku_evidence_sanitizer.py` 实现本机确定性脱敏器,并由 -`client/scripts/sanitize_sku_panel_evidence.py` 提供离线 CLI。当前 `t103-privacy-v1` 配置精确绑定 -PKG110 / Android 16 / 拼多多 8.17.0 / goods_id `937122477375` / 1080×2400,把截图的 -`[0,0,1080,540)` 整宽隐私带遮罩,并按相同几何边界递归移除 XML 节点;跨界容器只清空自身敏感属性, -保留下方子节点。地址依靠已确认的整块几何隔离而不是易漏的关键词表;完整、掩码、带分隔符或跨节点 -手机号残留会被自动复检拒绝。 +`client/scripts/sanitize_sku_panel_evidence.py` 提供离线 CLI。第一组新 raw 的 PNG 头部由人确认实际为 +1080×2376,推翻了 v1 将截图和 XML 坐标空间都写成 1080×2400 的假设;v1 正确拒绝且原始证据未重采。 +当前 `t103-privacy-v2` 配置精确绑定 PKG110 / Android 16 / 拼多多 8.17.0 / goods_id +`937122477375`,分别约束 screenshot space=1080×2376、XML coordinate space=1080×2400,二者都把 +`[0,0,1080,540)` 作为整宽隐私带。截图覆盖该区域;XML 递归移除区域内节点,跨界容器只清空自身 +敏感属性并保留下方子节点。地址依靠已确认的整块几何隔离而不是易漏的关键词表;完整、掩码、带分隔符 +或跨节点手机号残留会被自动复检拒绝。 ```powershell .\client\.venv\Scripts\python.exe client\scripts\sanitize_sku_panel_evidence.py --raw-dir "<证据目录>\raw" --output-dir "<证据目录>\derived" ``` -脱敏器校验源 manifest 与文件哈希、设备/App/商品/人工状态、分辨率和 XML 隐私结构,只允许发布到 +脱敏器校验源 manifest 与文件哈希、设备/App/商品/人工状态、截图分辨率和 XML 隐私结构;XML 所有 +节点观察到的最大 right/bottom 必须精确为 1080×2400,否则只报告非敏感 observed 尺寸并拒绝。它只允许发布到 同级且尚不存在的 `derived`;失败或发布竞态不覆盖已有目录、不留下 staging。派生 manifest 记录 -`privacy_tier=SANITIZED`、sanitizer 版本、清理计数及本机 source/derived 哈希,不记录原始路径、serial -或页面正文。只有自动复检通过并经人确认状态对应性的派生物,agent 才能读取并提取最小 fixture、编写判据。 +`privacy_tier=SANITIZED`、sanitizer 版本、两个坐标空间、清理计数及本机 source/derived 哈希,不记录 +原始路径、serial 或页面正文。只有自动复检通过并经人确认状态对应性的派生物,agent 才能读取并提取 +最小 fixture、编写判据。 2026-08-04 的首轮旧证据只用于确认上述入口事实;其中旧 `initial` 不是规格面板,另两张原始截图含隐私 区域,因此 XML 未读取、fixture 与选择器未生成。T-110 完成受控入口与脱敏契约后,T-103 重新取证; diff --git a/docs/current-state.md b/docs/current-state.md index afdf1a2..322b7d4 100644 --- a/docs/current-state.md +++ b/docs/current-state.md @@ -21,7 +21,7 @@ `client/` 已有 Python 包、PySide6 最小入口、运行目录与日志脱敏策略,以及显式 serial 的 ADB 连接边界、本地基线取证 CLI、受限商品链接打开取证 CLI、人工声明规格面板状态的只读取证 CLI, 以及绑定 PKG110 / Android 16 / 拼多多 8.17.0 的规格证据确定性脱敏 CLI;尚无规格选择、价格读取或下单流程 -- 测试:采购服务已覆盖健康检查、核心模型、迁移与状态机等离线包级测试;采购工具 67 项离线单元测试 +- 测试:采购服务已覆盖健康检查、核心模型、迁移与状态机等离线包级测试;采购工具 69 项离线单元测试 (全部 mock,不连接真机) - 数据:SQLite 核心表与迁移已落成;无业务实例数据 - 标准启动路径:Windows PowerShell 运行 `./init.ps1`,Unix shell 运行 `./init.sh`。Windows 入口 @@ -33,8 +33,8 @@ 打开规格面板;T-110 已获项目所有者批准,只把该证据/版本绑定的精确唯一入口作为第一趟可逆导航, 数量、确认页、提交订单、付款与通用点击能力仍不可达。T-103 的原始证据本机隔离与确定性脱敏器 已完成离线实现;人工确认面板刚打开时目标颜色和尺码已经自动选中,取证三态已据此修正。下一步 - 采集“刚打开目标预选 / 两维度改为非目标 / 两维度恢复目标”的 raw 并由人只核对 derived。在派生 - 证据验收前不写页面判据,Phase 2 仍不能抢跑。 + 用 v2 对已采第一态 raw 重新脱敏并验证 XML 坐标空间,再采集“两个维度改为非目标 / 两个维度恢复 + 目标”的 raw,由人只核对 derived。在派生证据验收前不写页面判据,Phase 2 仍不能抢跑。 ## 当前目录要点 @@ -161,7 +161,8 @@ T-103 已确认当前衣服商品只能从精确文案“快要抢光”进入 ``` 原始 screenshot/XML 可能包含 PDD 固定展示的地址和掩码手机号,只能留在本机 `raw` 目录,不能由 -agent、fixture、业务或上传端消费。脱敏器会校验源哈希、设备/App/商品/分辨率与隐私结构,在 sibling +agent、fixture、业务或上传端消费。`t103-privacy-v2` 分别固定截图 1080×2376 与 XML 坐标 +1080×2400,并校验源哈希、设备/App/商品/人工状态与隐私结构,在 sibling `derived` 目录原子发布 screenshot/XML 与 manifest;任何不匹配、手机号残留或已有目标均拒绝发布。 自动复检通过且人确认三态对应性后,agent 才能读取派生物并提取最小 fixture、编写判据。 人工确认中还必须记录中间态实际选择的非目标颜色和尺码,不能只写“已切换”。 diff --git a/docs/tasks/T-103.md b/docs/tasks/T-103.md index 9fe558c..7abf2b5 100644 --- a/docs/tasks/T-103.md +++ b/docs/tasks/T-103.md @@ -25,7 +25,7 @@ write_paths: - docs/current-state.md --- - + ## 问题 / 背景 T-102 已证明 canonical 链接可进入目标商品。T-103 随后在 PKG110 / Android 16 / 拼多多 8.17.0、衣服商品 goods_id `937122477375` 上确认:规格面板只能从详情页右下角精确文案“快要抢光”进入,面板固定显示收货区域和掩码手机号。T-110 经项目所有者批准,将该已取证点击定义为可逆、能力受限的规格面板导航;这不是通用购买入口豁免,不授权其他文案、数量、确认页、提交订单或支付。 项目所有者随后确认,面板刚打开时已自动选中目标颜色“黑色CHA(纯棉)”和尺码“M(建议100-115)”;因此本任务不再假设存在“未选择”或“只选择一个维度”的初始状态。 @@ -115,6 +115,14 @@ T-102 已证明 canonical 链接可进入目标商品。T-103 随后在 PKG110 / ### 2026-08-04T03:40:39Z · ila T-103 新三态离线实现与主审:提交 dbb69a7 将人工声明状态集中到 sku_panel_state.py,采集器和脱敏器仅接受 panel-opened-target-preselected、alternate-all-dimensions-selected、target-selection-restored;旧 initial / one-dimension-selected / all-dimensions-selected 与未知值均 fail closed。主 agent 独立复跑 67 项 client 单测、compileall、两个 CLI help、静态禁用能力检索与完整 init.ps1,全部通过。过程未连接设备、未读取真实 raw、未新增页面判据或点击/数量/确认/提交/付款能力。T-103 保持 DOING,等待新三态 derived 人工验收。 + +### 2026-08-04T03:54:21Z · ila + +第一组新三态 raw 已由人成功采集;脱敏器 v1 按设计拒绝。人只读取 PNG 头部元数据并确认实际 format=PNG、size=1080x2376,证明 v1 将截图尺寸与 Android XML 坐标空间统一设为 1080x2400 的假设错误。原始证据不重采、不删除、不读取正文;下一步把 screenshot 与 XML coordinate space 分离配置,升级 sanitizer 版本并继续 fail closed。 + +### 2026-08-04T03:58:54Z · ila + +T-103 sanitizer v2 坐标修正与主审:提交 44c027a 将 screenshot space 固定为人确认的 1080x2376,并把 XML coordinate space 独立严格配置为待验证的 1080x2400;sanitizer_version 升为 t103-privacy-v2。XML 会统计所有 bounds 的 max right/bottom,任何小于或大于配置的偏差均 fail closed,错误只含非敏感 observed 尺寸。派生 manifest 记录两个坐标空间和各自遮罩。主 agent 独立复跑 69 项 client 单测、compileall、CLI help 与 diff-check,全部通过;未读取真实 raw 正文、未连接设备。等待人用同一第一态 raw 重跑 v2 脱敏。 ## 边界