Skip to content

feat: AI 整合网页与桌面中英文界面并继续验收 - #39

Merged
XiaoZheBrother merged 9 commits into
masterfrom
feat/20261019-localization-integration
Oct 20, 2026
Merged

XiaoZheBrother merged 9 commits into
masterfrom
feat/20261019-localization-integration

Conversation

@XiaoZheBrother

@XiaoZheBrother XiaoZheBrother commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

最终验收:a63d974a(2026-10-20,完整门禁通过)

  • 最终 head:a63d974acd0e1e436532b96a1caf9db844aae23d;tree:121e9dd05549e957938d0ad5b80837f5b9e56db5。PR 测试 merge 6a03fec887225ec61daa6843bed5b0ee4b11f857 的 tree 与 head 完全一致;master 基线仍为 68e667e97622b2ea98a0e5da07481bb0ff5f40d8。
  • 完整 Windows 验收 39390826186,attempt 1,2026-10-20 14:22:52 UTC 终态 success。20/20 后端分片全部通过;manifest 7,135 节点逐一覆盖,7,121 passed、14 runtime skipped、0 collection skipped,不混用旧 run/attempt。
  • 完整聚合门禁:前端 289 文件 / 2,890 测试通过;Ruff、mypy(217 源文件)、生产构建、CLI smoke、真实本地 HTTP smoke、oc verify --profile local、install gate 均通过。独立包装 job 的布局/交互为 124/124。最终完整门禁证据,最终状态证据。
  • 本轮网页本地化 39390819371:274 断言通过,86 张截图逐图复核;无 page error、unexpected network、unmocked API,40 次中文文案审计、40 次布局审计无新增阻断。网页证据。
  • 本轮新包实装本地化 39390819355:12/12 阶段、3 次启动、19 张截图全部复核;944 个源码文件按 Git blob / Windows 换行转换逐一核对无差异,安装前后 payload identity 一致。实装证据。
  • 邮件合成验收 39390826048 success;未使用真实邮箱、凭据或付费模型。

最终安装包及证据边界

  • 最终交付候选为已实际安装并完成上述 UI 验证的 artifact 12250717803,OfferPilot-Desktop-localization-a63d974acd0e-win-x64-setup.exe。
  • EXE SHA256:4bd749fd544cf9977b6a8c451c48003ab17452d92dde15ed7a05efb633815073。此临时制品到期时间为 2026-11-03 08:32:00 UTC。
  • 完整 Windows run 的独立包装制品 12251370414 是另一次构建,EXE SHA256 为 1074c6b745087c203f8d0d106fd2cf13db9cbb969c707d44c46106ab845e7d06,与上述实装包不同。这里配对的是“同一源码 tree 的完整门禁”与“已实测安装包”,不声称两份二进制相同,不将实装 UI 证据转移到独立包装二进制。
  • 本轮共复核 105 张新截图(86 网页 + 19 实装)。网页 mail-import-en-1440.png 仅捕获到变暗背景,不能证明导入表单内容;字段填充、预览、Back 保留和提交交互断言通过。另保留 0307452 的清晰表单截图作为明确标注的历史参考,不冒充本轮截图。
  • 已知非阻断英文文案:单数时显示 “1 interviews today”。用户与 AI 原文按设计保留,不作为未翻译界面文案。
  • 实装使用真实 unsigned 安装包、隔离合成输入和调试检查通道;不包含真实服务、OS 原生菜单指针操作、SmartScreen/签名/更新器、所有主题/响应式组合或退出进程后草稿保留。不将此声明为公开生产 Release 验收。

最后两项测试修复与历史失败

  • 上一 head 0307452 的 完整 run 39350737031 保留 failure:后端全部通过,但前端 2/2,890 失败,不能用本轮结果改写旧结果。
  • 最终提交仅修复两处测试:本地化预览使用有界 UI readiness 等待,保留全部原断言;审计遍历绑定同一 TypeScript forEachChild 函数,减少调用开销,保留遍历次序、全部 fixture 与原严格 30 秒限制。没有改产品行为、依赖版本、eval 或正式 workflow。
  • 独立审查、完整本地前端/构建和 Windows 定向验证 39389736890 均通过;诊断 workflow 不在本 PR。最终完整门禁的审计耗时 25.750 秒,预览测试 1.414 秒;单次通过不是性能余量稳定性的保证。

合入与发布范围

本 PR 仅合入源码,按仓库正常保护要求处理;不绕过审查或保护,不改保护配置,不创建或替换公开 Release、tag 或安装包,不包含另分支 eval 工作。下面保留旧验收记录供追溯,其中“进行中 / 待修复 / 未授权合并”等状态均为当时记录,以本节最终验收及当前 PR 状态为准。

历史验收与恢复记录(原文保留,不代表最终状态)

当前统一恢复候选 0307452(完整验收进行中)

  • head 0307452,tree aa87bfb695548d3b70a4c554531ef1088dbeaead;GitHub API 与 Git fetch 双重读回一致。parent d7234f4,master 68e667e 未变;本地已审提交 a4ffe26c 与远端提交 tree 完全相同。远端 author/committer 为 cyq 默认身份。
  • 仅整合两个已独立验证的恢复候选,共6文件:最终布局测试缓存隔离/脱敏失败证据 723fe10、官方 PyPI source-only 锁 ed3b712,以及两者 BUGS 记录的精确并集。未改产品、eval、workflow、离线 guard 或 manifest;保留原15秒、全部断言/case与失败传播,无自动重试。
  • 联合快照独立复核无阻断;本地 installed-ui helper 682通过/1真实浏览器默认跳过、workflow契约69通过、4文件 Node 语法与 diff 检查通过。完整 Python/前端/安装发布门禁仍须本次 Windows run 完成,不用这些局部结果替代。
  • 官方来源对照覆盖82个 registry 条目、2254个 artifact,版本、依赖、marker、hash、size等未变;仅2252个 artifact URL和85个 registry字段变化。新 lock LF SHA256 50059b9cd9f23a773807af066d19c13f8d966e91780c9a1698b30b8891b22f71。独立 Windows 冷缓存安装39320408240 一次 frozen sync 44.75秒成功,观测日志无 TUNA 请求,不是未来网络保证或产品验收。
  • 既有 charset-normalizer 3.4.8 被官方撤回的原因已核实为 fallback 解码功能回归,见 官方3.4.9说明,不是已证实安全漏洞。本次维持原版原hash,不引入升级或隐去已知缺陷;根项目未锁 hatchling/动态构建链的既有可复现性缺口亦未改变。
  • 布局 Windows 诊断39306393246 对应9a486828;后续清理补充723fe10b已本地验证,本次新完整run才覆盖组合快照。只证明移除已观察到的共享缓存耦合并补失败现场,原纯背景超时根因仍未唯一确定。
  • 2026-10-20 00:55:53 UTC,原 完整run39299451507 终态 failure:19/20分片成功,9在安装时失败;包装首布局case超时;严格 aggregate 正确拒绝继续。最后18、19均通过,无新增产品测试失败。原 最终证据12232278925 已保存并核对SHA256 214702dda8491dbe03af2619378d7788fcfec33b1b2b277e7cfa5ee1ffdef0ad;含manifest和19份shard结果,缺9。
  • 00:57 UTC只推进一次integration,以下新head检查均已真实启动、attempt 1;不重跑旧job、不混用attempt或旧manifest:
  • 新网页 run 39350731294 已 success:274 条断言、86 / 86 新截图逐图复核;邮件输入框本次完整不透明可见。保留 artifact 12233565419,ZIP SHA256 c583e31decbf72c13ae79c7b2e95eb9f589a3a629be43e40ceb75fd75feb4f62。未见新增布局阻断或自有中文遗漏;发现一项非阻断英文单复数文案:计数为 1 时显示“1 interviews today”(calendar-en-1440.png 左上副标题;core.ts:68、AppShell.tsx:2362)。先保留候选并披露,不为此打断完整验收。复盘页截图覆盖已本地化的摘录暂不可用态,不代表有内容成功态;用户/AI 原文按设计保留。
  • 当前仍是draft,尚不能标为完整验收通过或可发布。无master合并、新Release、真实邮箱/付费模型调用或eval开发。新结果以对应提交/run/attempt更新;下文为历史证据,不冒充本head通过。

历史恢复候选 d7234f4(已终态失败)

  • head d7234f4,tree 9dbf397b9db8c64b7ed634821f7d3f445434bb3a;远端读回与本地完全一致。包含 master 68e667e,两份 README blob 与 master 完全一致,防止 branch/merge 文档契约不同。

  • 相对 db9d853 仅6文件:主线两README、desktop-windows workflow、两README测试、BUGS;相对上轮merge32f4f93仅后4文件。产品源代码、资源、依赖锁、eval、离线guard与manifest身份均不变。此处为源文件等同性,不宣称不同构建产物字节相同。

  • 4处 frozen Python 安装独立step,uv0.12.19,6次请求重试、连接10秒/读取30秒,每step5分钟,仅限安装不含npm/pytest,保留非零失败传播与transcript。独立Windows诊断run39260306504冷缓存完整sync10.157秒;旧3次重试失败/新6次成功、永久503/404/错hash/构建失败均正确拒绝,锁前后不变。

  • README两处契约同步主线求职Agent定位,保留能力、安全边界、截图文件及迁移检查,增强英文边界覆盖;31个负对照均正确失败。没有回退README文案。

  • 独立综合diff审查无阻断;最终本地149项契约+39项离线防护、289文件2890前端测试、TypeScript/Vite构建全部通过。

  • 当前完整Windows run39299451507、同包本地化 run39299442283、邮件合成 run39299451360 中,完整Windows仍运行且包装job已有首布局case超时;同包与邮件均已成功。只有一套新head完整门禁,没有混用attempt。

  • 网页QA未被本次非UI路径触发。以下db9d8536网页及安装截图按原SHA保留,不冒充新head的重新运行证据;新同包证据已独立完成,见下。

  • 新同包 run39299442283 成功,12/12阶段、3次启动、19新图独立逐图复核,无新增确认缺陷。证据artifact12210678631,ZIP SHA256 4b53bf5975fbb9f0536ea895dd2266648951a54ce37c494c8f2de73726288694;unsigned实验安装包12212675001,记录EXE SHA256 a70734a272d8864de74c0d8e7d39cbf2740db063a800484d3a345b558b8c27be。原验收边界不变。

  • 完整run39299451507包装job118220478723:124布局case中123通过,首个既有窄桌面900×689场景等待data-layout-result超过原15秒,尚未进入布局passed断言;截图整页深色空白。前端测试/lint/types/build通过。原证据没有DOM/console/network,不能确定根因,正固定原merge做小范围冷/热首case诊断,未延长timeout/改产品/重跑全套。Vite首次优化reload在旧成功运行也存在,单凭reload不能定因。

  • 本轮 shard9 job118221450013 的新有界下载重试实际生效,但 httpcore1.0.9 的 TUNA wheel URL 仍在6次重试/89.7秒后TCP timeout,pytest未运行。没有继续加重试或单job重跑。官方PyPI source-only迁移仅做独立评估:82registry/2254跨平台artifact文件名、SHA256、size与原锁全匹配,但现锁charset-normalizer3.4.8在官方标为yanked且原因尚未知;版本不变,暂未安装迁移候选或更新PR锁。

  • 独立布局候选 run39306393246 通过:helper缓存隔离、冷/热首case、真实15秒故意超时保留失败退出及脱敏DOM/JSON。后续清理错误保留和socket解绑已本地复审,helper682通过/1默认跳过、静态契约56通过。该候选尚未纳入PR;只证明移除共享缓存耦合并补失败观察,不证明原空白根因。

整合范围

  • 基于 master 8fdc4f0,移植共享网页英文提交与桌面语言增量,避免重复应用旧 merge 或回退新主线。
  • 设置内 zh-CN/en-US 切换、Ant Design/日期数字、偏好保存、主窗/Haru/原生菜单同步;用户内容与 AI 回复原样保留。
  • 保留 Haru X 收起回角色、右键隐藏/置顶、默认置顶及显式 false 持久化。
  • 已独立审查语言 IPC 来源、owner-only 写权限、持久化失败/竞态、会话控制权和草稿边界;当前/历史安装模块清单分别严格验证。

上一 head db9d853 与已完成验证

  • db9d853:仅修测试契约/隔离及 BUG 记录共4文件;相对 deb6526 产品源代码、资源、依赖与正式CI完全不变。完整 tree 为 01a5ee53f577db3ab711e5911abf4dae7fdb8d3c,远端读回与本地一致。
  • db9d853 本地前端 289 文件 / 2890 测试通过;TypeScript/Vite 生产构建通过。真实确认卡标签契约 Python 4/4、故意删除标签/译文负对照正确失败;RAF竞争负对照复现旧1/0失败,隔离后16/16通过。独立审查无阻断,全部原断言保留。
  • 桌面原生 94/94;本地化安装 harness 25/25;完整 installed-ui helper 673/673。
  • 真实 Chromium 合成网页:run39200272888,274 断言、86 截图。全部截图人工复核,覆盖 13 视图、中英文桌面 1280/1440、内部滚动与看板最右列、邮件/表单/设置等已记录状态。未发现新的明显截断、重叠或自有中文文案遗漏。
  • 网页证据 artifact12162669476,ZIP SHA256 84ed667e7f4e743b34fa95ffb816e00fc8e47a61558d16fa63fd66d2784ed6c2。
  • Windows 新包同包实装:run39200873889 成功,12/12阶段、3次完整启动、19截图逐图复核完成。安装包 SHA256:b7f24c83c235ee12005d3ff0e63211ed8379098af1d0bd4aa9022ae0f35d6004;安装包artifact12164202775,证据artifact12164666188。
  • 最终邮件合成/Windows native-lock:run39200877882 成功。
  • 上述已完成86网页/19 Windows截图及其artifact属于 deb6526;虽产品字节不变,不冒充新 head 的运行结果。

db9d853 完整门禁已失败,不能当作通过

  • 新完整 Windows:run39246366093。新同包本地化:run39246360853。网页:run39246361029。邮件:run39246366080。完整 Windows 已终态 failure;同包本地化已成功;不混用旧 attempt。

  • 新网页 run39246361029 已成功,274断言、86图独立复核;其中 mail-import-en-1440 原图仅有遮罩,未当作输入弹窗像素证据。其余85图未见新增明显文案/布局问题。网页artifact12183468953,SHA256 9cbf10f292b009b61342523962358b480260b37e0bacaf64f57f069195b1c0e9。

  • 同源单态补图 run39248151290 成功,固定 checkout db9d853、16断言,弹窗可见/opacity=1/动画结束/双RAF稳定后截图人工复核完整。补证artifact12184716123,SHA256 ebc2ca2ed64c95290eeedebb6e200b570cfaa85579e30782eb614ee0327d9d17。保留原缺图与首次补证失败 run39247528557;首次失败已由DOM证实为填值后精确label定位失配,唯一textarea可见。独立补拍分支未改产品或正式head,补拍不冒充完整suite。

  • 新邮件 run39246366080 的 synthetic-acceptance 与 windows-native-lock 均 success。

  • 新同包 Windows run39246360853 已成功,12/12阶段、3次启动、19图人工复核。source/manifest/status均为db9d8536;证据artifact12185606186,ZIP SHA256 9cd50ac952177d976ebb7bb941b85e6740a24c5507315e1e43261f088d1ca374。实验unsigned安装包artifact12185915615,安装包记录SHA256 df905e2014c79ad060edfbf1718e884a0557413e43723a2744838839f976c471。产品源文件未变不意味着两次构建产物字节相同。

  • 2026-10-19 13:07 UTC:新完整run的 shard9 job118040038088 在执行 pytest 之前失败。uv sync --frozen 下载 attrs==26.1.0 时,锁文件内 pypi.tuna.tsinghua.edu.cn 地址三次重试后 TCP connect error;PowerShell随即抛 Frozen Python install failed,没有生成shard JSON。其余分片继续;没有重跑单job、复用其他attempt或减弱门禁。只读分析依赖下载可靠性,暂未改workflow。

  • 2026-10-19 17:54 UTC:run39246366093 终态 failure。manifest 7135;包装成功、17/20分片通过,失败为9的依赖下载与14/18的主线README旧文案契约。19成功269项,真实标签契约已通过该分片。严格聚合因SHARD_RESULT=failure拒绝继续;未重跑/混用attempt。

  • 恢复候选已独立验证但尚未纳入本PR:四处安装级有界重试(uv0.12.19、6次请求重试、10s连接/30s读取、每step5min),Windows空缓存完整安装10.157s、六组负对照成功,171契约测试通过;README两份静态契约同步master68e667e新定位,13定向测试与31负对照通过。产品/锁/offlineguard/证据身份不变,等待统一恢复。

旧 deb6526 全量失败与修复记录

  • 完整 Windows PR run39200877827 已终态 failure,18/20分片成功、9与19失败;shard19的39字段标签静态正则不支持本地化getter,已用真实组件渲染契约修复。shard 9 的 hosted runner 失联(GitHub UI annotation 已核实),失联前另有 5 个失败标记且无 traceback,不能只归为基础设施。原 5 节点在同源码新 Windows runner 的独立进程诊断 run39221575026 全部通过;原顺序 6 项同进程诊断 run39222383983 亦全部通过(175.67秒;单个前置零基索引202+5项)。两次诊断都未改产品/原断言,不能替代完整门禁或解释原 runner 更早状态。包装 job 的 master 既有 RAF fixture 时序断言失败,测试 blob 未改。已最小复现共享 RAF 队列导致 interval 次数预条件波动,该 RAF fixture 已在新head通过独立真实窗口隔离修复。现有manifest/分片/聚合严格绑定run attempt,因此没有重跑单shard或复制旧证据;新head正常完整重跑,不修改/放宽断言或身份。
  • Linux 云端 release-gate 未通过:测试直接调用 Windows powershell,单独复现 FileNotFoundError(test_application_jd_harness_parses_and_uses_explicit_stage_contract)。已停止无法通过的重复 Linux 链路(exit130),未跳过或放宽测试;最终原生 Windows 全量门禁继续执行该测试。
  • 旧 head 0ae10c8 的 Windows run39197378069 脚本成功;人工截图另发现固定中文字段与过渡/透明帧,已在当前候选修复,不以旧结果替代最终验收。
  • 旧 head 完整 Windows run39197409699 的 helper 两项失配已修复;旧结果不代表当前 head 通过。

验收边界

网页为合成 API;实装检查使用真实安装包与隔离合成输入,无真实模型、真实邮箱、凭据输入或付费服务。原生菜单为对象/观察验证,不宣称 OS 菜单指针、SmartScreen 或未调试全桌面验收。历史固定上下文显示标签可能保留当时语言,不为重译改写用户内容或任务上下文。

无破坏性数据变化。此 PR 不授权合并或新 Release;v0.1.0-desktop.1 tag/附件保持不变。完整门禁本轮失败,待统一恢复后更新。实装 Pin 支持双向切换/还原,默认置顶与显式 false 保留由原生单测覆盖,本轮没有独立 OS alwaysOnTop=false/跨重启 false 实装断言。英文 Haru 紧凑输入框截图未同时显示完整第二行,完整草稿有逐字 DOM 断言;不把静态截图作为滚动行为证明。

主线后来合入 68e667e,仅 README.md/README.en.md 相对原基线变化;此 PR 未改两文件,产品无差异,不为纯文档变更重跑门禁。

@XiaoZheBrother
XiaoZheBrother marked this pull request as ready for review October 20, 2026 15:16
@XiaoZheBrother
XiaoZheBrother merged commit 0452e47 into master Oct 20, 2026
28 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant