Repository navigation
fix(dashboard): 委派原对话保留图片附件 - #7529
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · reasoning_effort=max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
未发现阻塞此精确头的缺陷。审查的是 8487029bc93213208cdd10ad57d1fca095aac5e0 的完整九文件 diff;这是作者自审,不能冒充独立审核或正式 GitHub approval。
动机 / Motivation
用户从已有委派核对原请求时,文字完整,但原来随消息发来的图片消失。同一条带两张图的原请求,旧界面只有正文;新界面在原位置读到两张未裁切的图。精确旧版在同一图片数量断言上得到0而非2,当前版通过完整阅读及失败恢复旅程。本修复不认证多模态推理、消息投递、文件下载、卡片或全部App/Lark双向同步。正式桌面安装采用、真实原图回验与完整双端同步仍要分别核验。原图片已存在,重新发送、复制历史或要求主人找文件都会增加不必要的工作;修正原阅读器即可恢复本次核对所需的视觉上下文。
改动思路 / Approach
附件已经是原Chat消息的规范字段;在既有详情消费它比增加桥接、复制历史或新媒体状态更小。当前PR只交付委派原对话的图片读取、失败反馈与响应身份核对,不改变交办和回传状态。入口仍是委派列表中的原请求,OriginalRequest 从原 Session 的规范消息中选择原 Turn,正文和接收者回复继续完整呈现;新的 OriginalImage 只处理浏览器图片解码反馈。失败是本地显示观测,不是请求、回传或验收状态,也不产生新的 Core 事实。
| 同一带图原请求 | 精确旧版 | 本次 head |
|---|---|---|
| 完整正文 | 保留 | 保留 |
| 两张原图 | 0,图片断言失败 | 2,完整比例 |
| 存储与对外执行 | 无写入要求 | SQLite/Inbox 不变,0 POST |
该表解释已运行的对照;未另绘或声称验证流程图。现有主时间线用 cover 缩略图,直接复制会裁掉原证据,所以此处只增加两条作用域内样式,不建设另一套媒体存储或图片框架。普通查看沿原三次导航,无额外声明、确认、配置或复制工作。
具体改动 / Changes
关键代码讲解
OriginalRequest(apps/presentation/dashboard/src/features/personal-workspace/conversation-requests.tsx:139)保留原 AbortController、重开重试、焦点/滚动及精确 Turn 过滤。获取完整快照后先检查返回的 Session 是否等于原请求 Session,随后仍按每条原消息的顺序渲染 Markdown,再读取已有 attachments。错误 Session 即使带着相同 Turn 字段也不会展示;关闭后迟到的响应不能把图片重新挂载。纯文字消息不产生额外图区,正文没有改写或摘要化。
OriginalImage(apps/presentation/dashboard/src/features/personal-workspace/conversation-requests.tsx:133)直接消费既有 ChatImageAttachment.data_url/name,成功时保留可访问名称和原比例;img.onError 才生成局部失败提示。名称由 React 转义,局部状态不写回原消息。CSS(apps/presentation/dashboard/src/features/personal-workspace/conversation-requests.css:30)限制最大宽度并保留自然高度,没有 cover 裁切或新增导航。生产 +16/-2 行,另152行耐久 smoke 复用现有真实 SQLite/Inbox/HTTP fixture;合成 raster 只补入测试响应,不替代实际多模态执行或投递。
规范:docs/development/design.md,不可变 spec_revision=78bd4ff8c5c41a963b2331ee05b813c843b4ea03。原条款没有编号,此处用描述性定位:original-evidence 对应完整原始证据;asynchronous-detail 对应异步阅读焦点、关闭与迟到响应;responsive-reader 对应键盘及窄屏完整阅读;honest-failure 对应真实失败和未知。四项在本地读取边界 implemented,父任务的完整双端消息同步不在本次评审中结清。
对主干的风险 / Risks
最强反例是测试补入图片就宣称生产同步完成。当前证据仅证明生产打包阅读器消费这些既有字段;真实私聊来源/原生桌面的安装采用必须另验。另一风险是显示别的 Turn 或关闭后的迟到图:现有 Turn 过滤与 AbortController 保留,新增 Session 比较使错误来源失败关闭。坏图保留文件名及失败,不能伪装为无附件或成功;重新打开合法来源可以恢复,无消息重放。
PASS:当前打包长文/两图、纯文字、坏图、503重试、外国 Session、其他 Turn、迟到关闭、焦点返回、英文与390px比例;TypeScript/正式构建、CSS token 校验;premerge 四项 direct、两项 catalog、八项风险 smoke 和文本公开边界检查。FAIL(预期回归证据):精确旧包同一断言 0 !== 2。最初混合旧包未作为精确基线,已重建并核验652个 source digest;当前 head 亦逐项匹配。早期 fixture admission、语言重置及隐藏重名定位错误保留于本地,最终修正后的完整旅程两次通过,不靠放松图片、来源或无写入断言过关。
premerge 整体仍报告六项 visual_evidence 人工项;本评审已逐张检查公开合成来源、像素及 PNG chunk,仅 IHDR/IDAT/IEND,无文字/EXIF私密元数据。这是当前精确头的人工处置,不称扫描器自动通过。此 Goal 的 change-quality policy 为 disabled;遵循 wait_for_ci=false,没有查询、轮询或等待 CI。远端 main 新合入7527只改三个无关测试文件,未改变阅读器、规范或本次 fixture,复用证据的输入边界仍有效。
我的整体评价 / Verdict
long_horizon 为 preserved:交办、持久结果、调度及原接收者回传 owner 不变;user_experience 为 improved:原图可直接核对且没有额外许可轮次。已查看13条合成交办的整页、完整长原文、两张图、坏图和390px展开图;责任列表保持紧凑,图在原文后直接可读,未以缩字或裁图压缩。截图不证明完整双端投递、所有图片格式或模型内容质量;原生正式采用不由浏览器替代。附件已经是原Chat消息的规范字段;在既有详情消费它比增加桥接、复制历史或新媒体状态更小。当前PR只交付委派原对话的图片读取、失败反馈与响应身份核对,不改变交办和回传状态。无需新协议、兼容分支或迁移;对既有响应身份做局部核对也改善了邻近错误路径。合并资格仍要独立重读精确头、review threads 和现有授权,安装后再验真实桌面,不能将此有用增量报告为整个同步目标完成。
English verdict: APPROVE — 8487029bc93213208cdd10ad57d1fca095aac5e0 restores original delegation images with source isolation and truthful failures; packaged counterfactual and negative checks qualify this reader-only change.
委派详情的“原对话”只渲染文字,原消息已有的图片附件被遗漏。现在沿同一 Session/Turn 显示原图并保留比例,图片解码失败时显示带文件名的失败状态;原会话身份不匹配时拒绝展示。
这是一处现有读取界面的修复,不新增消息存储、消费者或执行入口。完整 App/Lark 双向发送、回复线程及卡片的验收仍是后续工作。
用户任务与边界
用户要在已有委派中核对原请求及其图片。仍从“委派 → 请求 → 原对话”原位读取,不新增配置、复制或确认。列表、责任分组、待回传状态、正文与原接收者回复保留。图片不裁切成预览缩略图;文本较长时继续在同一阅读区滚动。
验证
页面证据
以下为同一合成工作区、13 条交办、已打包资源的浏览器截图,执行器离线且无外部副作用。第一屏仍按负责人浏览交办,完整原文和图片留在现有展开层;不把列表状态当作成果验收。原生私聊截图不公开。
默认第一屏(桌面与窄屏):
旧包展开后只见正文;新包保留完整原图(两图相同仅用于合成测试):
窄屏图形完整、未裁切;坏图保留明确失败及正文:
已逐图检查默认列表、长正文、两张图和失败状态。列表主次未改,图片在需要时直接可读;窄屏无横向溢出,角色和回复次序保留。截图中的长重复文字是全文保留反例,不代表模型输出质量。尚未认证完整双端同步、文件下载、卡片或所有图片格式。