Files
CyberGril/docs/rework/REVIEW.md
T

13 KiB
Raw Blame History

HEL-783 六项返工交付与复审说明 · 2026-10-22

本轮由总管在可用的 Codex 环境亲自完成。沿用获批 HEL-746 R2 两主题和现有 R1 API,在原 PR#4 的 agent/agent/de8874a3803b 上追加修复,目标仍为 main。没有更换业务模型、修改现网或读写用户真实数据库,没有合并。最终提交号以 PR#4 最新 head 为准。

六项反馈闭环

用户反馈 / Before 本轮 After 实际验证 / Why
手机对话被输入栏挡住;台词和输入分别固定定位,没有长文高度预算 ChatPanel 统一布局,人物占位、可滚动台词、状态/取消、语音条、输入分别占位;Viewport 跟随 visualViewport 的高度、顶部和底部偏移,含安全区。视口变化时人物窗立即调整,不等待装饰过渡 1440×900、360×640、390×700、390×844、390×420、844×390,两主题共12组;长中文前后文均在 DOM,可滚到末尾、完整记录能读全文。420高是键盘缩小等效场景,未冒称真机键盘实测
流式全文在结束时被 slice(-90) 截成尾部;用户也被 slice(-48) 截断 当前双方消息保留全文;滚动阅读,跟随阅读位置;完整记录继续提供历史入口。流式和最终使用同一 turn 身份 长用户句首尾与五段长回复逐字相等;流式完成前后为同一个 DOM,取消立即中断,未完成文本标明未保存
只写 opacity transition,没有真实改变透明度 SoftText 按轮次用 WAAPI 淡入200ms、旧句保留160ms淡出;流式增量只更新文字,不重播。使用现有 --ease-out;减少动效120ms轻淡化 实际动画0/80/200ms逐帧截图及 computed opacity/transform;旧句0/80/159ms仍挂载、透明度递减。全轮只有一次入场,完成不重播,取消不等动画
滚动条脱离主题 两套主题各有轨道/滑块/悬停 token;全局标准属性与 Chromium 兼容样式,强制色使用系统色;触摸区仍原生滚动 实际消息、记录、首建、设置长内容滚动及两主题截图;强制色有 CSS 回退。没有做真实辅助设备和各系统滚动条外观全覆盖测试
底色只有公历和几个内部短标签 新增只读日历展示与六维解释映射:表达社交、亲密边界、冲突修复、行动节律、压力恢复、成长张力。显示真实农历/闰月、钟点、四柱和术语提示;每段可展开解释依据。预览/确认/已有档案共用组件 48组日期×时辰检查,含1900边界、春节、立春附近、真实闰四月;预览不写库。旧档案使用已存四柱、十神、Derived,禁止重新编译;GET前后原始JSON、底色行一致,关系修改不改底色和历史;聊天系统提示逐段复用同一解释
分不清谁在说话 当前对话中“你”右对齐,真实伴侣名字左对齐,独立角色行;阅读状态行持续标明伴侣名字,滚动后也能确认正在读谁的回复。流式、最终、失败、取消与记录都使用同一身份 两主题截图,失败/重试、取消新轮、历史恢复都检查;不单靠颜色辨别
真实入口把完整页面缩成“未接通”卡片 恢复日子/回忆双栏与分组;城市、外观、备份、四类服务的完整结构和真实空态;服务页可读健康检查,未接通写入控件明确禁用;加入未保存离开确认 实际手机逐页进入、返回、搜索空态、服务检查、未保存取消/放弃、演示事件→聊天→返回。真实入口无演示记录,演示模式全流程零API请求

R2 功能覆盖差异表

“已接真”表示已有 API 持续可用;“本批补齐”表示前端结构/交互已恢复;“后台待接”表示本轮没有增加该后台能力,不能据此验收为已接通。

R2 落点 演示模式 真实入口 本批结论
四类区域、两主题、底部导航 原有此刻/交谈/日子/设置 同样四区与主题切换 保留;手机短高度首页内容可滚动
首页留言与日子入口 固定演示留言、已分享日子入口 服务器最近回复可打开完整记录;日子入口明确后台待接 本批补齐真实入口,历史已接真;不伪称主动留言
日子列表、按日分组、三类事件、分页 原有已分享事件与18+12分页 完整列表区、三类图例和空态 本批补齐结构;真实生活后台待接,无示例填充
事件详情、回忆互链、聊天与返回 可走详情→关联→聊天→回到原日子 详情阅读区域保留,无数据时不造条目/链接 演示路径实测;真实数据后台待接
我们一起的/小习惯/她知道的你/成长 四组演示回忆、来源、关联日子 四组独立空态和阅读区 本批补齐真实分组;长期记忆后台待接
隐私:她说过才显示 继续使用 publicView 过滤 当前没有生活/回忆数据 不放宽隐私,不展示未讲述事件
首建四步、关系无预选、同意确认 本机独立创建;排盘不以固定假值冒充 服务端唯一档案、只读预览、实际创建 已接真;补公农历/闰月/四柱帮助和六维说明
首建失败、返回修改、重试 原有模拟失败且保留输入 API 中文错误、输入保留、409恢复唯一档案 保留;未增建档入口或清空入口
她的档案与底色锁定 演示底色明确未计算 旧档案只读补展示,原参数和历史不动 本批补齐;无数据库迁移
最初与后来成长分层 两栏及成长回忆 出生说明与后续记忆区分,当前长期记忆未接 不把出生说明当作已经发生的经历
关系、称呼、边界;改变关系确认 原有模拟保存/取消/失败 PATCH真实保存、二次确认、重开恢复 已接真,回归通过
未保存提示、取消和离开 原有暖色点、取消、beforeunload 同样提示;关闭/导航离开新增确认 本批补齐;取消继续编辑,放弃不写服务器
城市搜索与列表/无结果 原有候选城市本机保存与失败演示 可搜索候选目录,有空态;明确未设置真实城市,保存禁用 本批补齐;真实城市/天气后台待接
外观选择、五项检查、对比、确认 JSON结构检查、对比与模拟标识确认 当前参考、文件入口、五项待检查、新旧对比、应用入口 本批补齐;真实导入与媒体检查禁用,后台待接
自动备份列表、完整导出 已标真实备份未接通;本机演示JSON可导出 自动备份空列表、完整导出说明和禁用按钮 本批补齐;不制造成功备份
恢复检查、同一档案、双重确认、先导出 原有本机恢复检查和输入“恢复” 明示四步恢复过程;文件和执行入口禁用 本批补齐结构;真实恢复后台待接,不能实际覆盖
四类外接服务与测试反馈 只保存演示地址,不发请求 文字、语音识别、语音合成、视觉四项;文字可重新检查健康,配置只读 本批补齐;不暴露凭据,不模拟其他连接成功
显示、减少动效 原有本机设置 主题与减少动效保存于本浏览器,和服务器资料分开 减少动效刷新恢复;系统设置也生效
长文字、完整记录、滚动、角色 模拟流式继续可用 SSE、完整记录、失败与取消状态 本批修复全文、占位和角色;已接真
重试、轮次/epoch、重启、多设备恢复 原有 TurnGate 原有传输机制保留 确定性API测试和浏览器回归通过
连续语音、打断、结束、拒绝/失败状态 保留无收音模拟和权限说明;新布局语音条不挡输入 控件明确尚未接通,文字仍可用 真实语音后台待接,未申请设备权限
视觉说明、时效、失败、总服务区 原有30秒模拟过期与失败 明确未接通、不采集;服务项保留 真实视觉后台待接
断线/模型不可达/草稿 原有断线重连演示 实际请求错误、草稿保留、重试、服务状态;已有档案历史可读 保留已接真能力;自动重连推送属后续,不假造补消息
离开欢迎摘要、主动消息与未读 原有明确标注的固定演示,来源为已分享事件 生活/主动消息未接通,不伪造欢迎摘要或来信 后台待接;真实最近回复入口已保留
手机列表/详情与设置返回、Esc 保留推入和返回、原日子位置 同样区域/分区返回;Esc关闭记录再退出交流 本批补齐真实Esc与未保存确认
新设计建议 无 无 未把新增后台能力夹进本批

验证记录

  • Python 3.11:pytest -q 142通过,含原92项和新增50项。唯一提示为既有 Starlette TestClient 依赖弃用提示。
  • TypeScript类型检查、ESLint、前端 14项 Vitest、Vite生产构建通过。后端变更文件 Ruff通过。没有新增运行时依赖。
  • web/tests/rework_browser_check.py:8组通过,12组尺寸/主题组合;记录 browser-results.json。使用隔离SQLite和可控模型验证长中文、错误、取消与完整页面,不把可控模型说成在线模型。
  • web/tests/real_browser_check.py --controlled:8组回归通过,记录 r1-regression/browser-results.json。包括真实HTTP SSE、浏览器关闭流、立即新轮、同源重启epoch变化、多设备恢复、关系取消/确认保存。
  • web/tests/real_browser_check.py:真实批准网关完成两轮对话,第二轮正确回答上一轮暗号“蓝色风铃”;第三轮收到增量后取消,上游请求结束且没有完整回复落库。随后同源重启和故障段使用可控provider,结果逐项区分,记录 live-gateway/browser-results.json。所有建档、聊天和关系写入仍只在临时库。
  • 动效证据:motion-enter-0/80/200.png 和结果JSON中的 motion.entry_frames/exit_frames。截图暂停实际 WAAPI 后逐帧采样,随后恢复;没有为截图修改生产动画时长。
  • 代表图:long-start-360-640-*.png、long-start/long-end-390-420-*.png、full-history-*.png、birth-*.png、existing-*.png、城市/外观/备份/服务/生活回忆各图。图中“星河/小满”和聊天全部是本轮隔离测试资料。
  • 已实际看过代表性手机长文、短视口、语音模拟、出生预览、已有档案说明、服务页、回忆分组截图;复审仍需独立看图、播放实际界面,不能只用坐标和测试数认定视觉通过。
  • 未测:实体手机键盘、Safari、真实强制色设备、屏幕阅读器、长时运行和帧率。420/390高只证明等效可见高度布局,不等于真机键盘实测。

说明层的兼容性与回滚

core/birth_view.py 是可维护的确定性解释映射,不调用模型润色。分档值只选择解释段落,不产生新的底色参数。敏感度的展示分档与普通0–1参数分别归一到解释选择范围。四柱与十神取旧库已存值,五行侧重和性格取旧Derived;日历只从不可变生日、时辰换算展示。没有重新调用旧档案的四柱编译器,也没有把新说明写回旧档案。新增档案会在原有JSON中携带可选展示字段;旧字段仍保留,旧前端不依赖新增字段。

聊天提示与UI共用六段解释,仍明确本体、现实边界、未接通能力和不能编造生活。取消、历史、epoch、路由和业务模型配置未改。服务端关系修改只保存关系字段及原档案JSON,不把本次只读展示偷偷写回旧档案。

本批无schema改动、不需要重建库。回滚只切回上一个程序版本;旧版忽略JSON新增字段。服务器切换前按HEL-784要求备份,不能删除、替换或重算用户档案。浏览器新加 cg.real.display 仅保存减少动效偏好;不存真实聊天或底色。

给HEL-784的部署交接

  1. 重新读取PR#4最新head,与本轮交付SHA一致后审核;base仍main。远端若另有推进,先协调,不覆盖。
  2. 独立运行检查,实际看截图及流式/取消/渐入渐出,特别检查用户原截图对应的手机短视口和长回复。
  3. 安装方式沿用 docs/r1/IMPLEMENTATION.md:Python≥3.11、requirements.lock、安装当前包,npm ci --prefix web 和 npm run build --prefix web。浏览器测试可选Playwright,不是部署依赖。
  4. 审核通过才部署8310的新release,保留现有用户库,切换前备份;不要把本轮临时测试库、测试人物或演示存储带上服务器。8300和其他服务不动。
  5. 回读现有档案/历史与health,检查新静态资源和旧档案补充说明;附件不要泄露真实聊天全文。记录部署SHA、备份位置和回滚指令。
  6. 本批用户尚未验收,不合并、不归档、不推进到收尾。