PROC-02-019 全平台原件改造首批实施验收20261022
Studio本机画布、Commerce原件接线、上传回执恢复和跨仓联合验证,保留前批Drama历史记录
1. 范围和当前结论
用户已授权开始全平台原件改造。本批在五个隔离工作树修改代码,完成Studio本机图片导入与草稿恢复、File Owner上传回执查询、Runtime接入、Platform就绪原件读取简化,以及Drama上传恢复接入。这是实施中的首批证据,不是全平台重构完成或生产可切换的结论。
生产没有部署本批代码,Platform调用没有切换到media.oceanway.tech,旧业务及旧桶未修改。本批未发起真实付费生成。独立实例部署事实仍以PROC-02-018为准;本文没有将本机夹具当成云端或真实供应商验收。
2. 代码基线与制品
以下均为基线上的未提交改动,不能将基线SHA当成已包含本批修改的发布版本。
| 仓库 | 工作树 | 基线SHA | 本批内容 |
|---|---|---|---|
| Platform | platform-media-files | c43e9109926d9fcc04b6a6149ac652145e96b3c4 | ready文件读取直接续签当前保留引用,仍核验主体、产品、输出及墓碑 |
| Runtime | runtime-media-files | 12c2a559457c232d104b5dcfa4d3d5a2aa14a3e0 | FileReferenceClient增加元数据查询上传回执,固定server 0.7.1制品 |
| Studio | studio-media-files | 1f2be1d4ef61e7c128db6812c4f83b79ac4d00e1 | 本机预览、IndexedDB、后台队列、草稿/CAS、自动素材入库、选中依赖优先 |
| Drama | drama-media-files | 24e845b10ee27a393df0a571446639ada15058c0 | 上传前查询原命令、恢复回执不重发原件、固定Runtime schema校验 |
| new-api | media-files-source | 18da5780a3d942876d1c9c9ff3bbadcfa088b01d | File Owner增加uploads/lookup,返回missing/pending/ready |
工作树根目录:/Users/wangzihao/Projects/Oceanway/.worktrees。Studio分支为codex/media-files-main,其余为codex/media-files-unification。
Studio和Drama引用同一oceanway-runtime-server-0.7.1.tgz,SHA-256为6903e93e28fd6f95e27052f8d332711026a7f3d3c620928aafdf9f963c6646eb。client制品仍为0.7.0。该server基线包含Runtime schema 12;Drama原校验停在9,不能只替换包而继续沿用旧校验。隔离数据库实际迁移所得有序版本/checksum向量SHA-256为44d78b5b7369e09e0c1fc5469865c8ac2c0233243e46bdeef3ea8c184a7fb561,Drama已固定该结果,应用启动仍只检查,DDL仍由显式迁移命令执行。
3. 已实现行为
3.1 Studio画布
- 图片选择、拖入、粘贴先创建Blob预览和独立节点;不等待网络、哈希或IndexedDB完成。文件选择器支持多选,替换单节点仍只选一个文件。
- IndexedDB按当前站点Origin、产品、账号、画布保存未同步Blob、完整草稿、上传命令与回执。JSON不持久化Blob URL或图片Base64;本批没有增加TTL清理。
- 队列串行后台上传,生成依赖可优先排队;选中素材复制到多个节点时复用同一命令。已开始的后台传输不会被假装取消,选中项可能等待当前传输完成。
- 原件上传成功即可用于下一步,不等待本机回执落盘。跨标签页以Web Lock协调,同命令通过服务器查询回执;IndexedDB不是传输前置条件。
- 云端仅保存就绪引用。本机保存与云端同步分别显示。部分依赖保存保留云端已有节点版本,不将未上传的新节点误记为已同步。
- 刷新后从本机草稿恢复,核对云端版本;读取云端或IndexedDB期间发生的新编辑不被旧响应覆盖。确认水位阻止迟到的本机写入重新出现已确认旧草稿。
- 冲突保留本机草稿,可另存恢复副本;本机文件通过稳定ID复用,原冲突草稿不会被删除。
- 裁剪、切图、本地放大和图片替换生成的新像素先登记本机文件,随后后台入库。纯布局变化不创建新原件。
- 选中节点的生成和Agent提交等待选中依赖;Agent准备期间重复点击不会生成多次提交。该测试不代表已完成真实付费派发验收。
3.2 素材登记与文件服务
画布上传和对话上传在素材登记事务内自动创建素材库引用,同一原件不复制对象。重复同命令、已有原件再保存到素材库均复用既有记录。实际授权仍由服务端主体和所属范围决定,浏览器自报ID不能替代授权。
浏览器稳定命令先查Studio的已提交登记;登记尚未完成时,服务端再向File Owner查询同一命令的不可变回执。File Owner查询校验scope、SHA、长度及MIME,不执行对象Put/Get/Copy/Delete,也不创建新claim。Runtime对非法状态、错误scope和回执内容不一致均拒绝。
Platform已ready的文件读取使用当前引用续签,不再为了读取重新采用原件或恢复生成账务;权限撤销与墓碑仍会拒绝。未完成的初次采用继续原有恢复路径。
Drama已接入同一查询能力,重新完成上传登记时先取已有回执,不再发送原件字节。本批尚未将Drama画布改为本机导入队列,也未移除其旧图片参考Base64快照。
4. 验证证据
所有数据库测试使用新建回环PostgreSQL 16实例和临时目录,结束后停止并移除;未使用生产DSN。Drama测试角色只在其临时集群获得建库权限,非superuser。文件服务/供应商响应为受控HTTP夹具,真实Go File Owner另在其本仓验证。
| 验证 | 结果 | 边界 |
|---|---|---|
| Platform file bridge定向测试 | 15项通过,无跳过 | 含ready读取只续签、停新后已授权读取、主体/hash校验及账务不变 |
| Runtime client定向测试 | 4项通过,无跳过;build通过 | 元数据查询、已有回执、非法scope/hash/state及重定向拒绝 |
| File Owner上传与任务引用 | SQLite、PostgreSQL子测试均通过 | 单原件、查询missing/ready、范围冲突、对象操作数不变;controller本次没有匹配测试,不能算HTTP路由验收 |
| Studio本机与相关前端回归 | 9个文件53项通过,无跳过 | 包含17项队列/IndexedDB/草稿测试、选择依赖、重复点击、已有页面和服务回归 |
| Studio素材PostgreSQL | 5项通过,无跳过 | 自动入库、同命令恢复、手动保存去重、会话引用、跨账号拒绝及引用保护 |
| Drama业务HTTP/PostgreSQL | 13项通过,无跳过 | 原件上传、回执恢复时原件POST数不增加、视频引用和既有业务流程 |
| 静态检查 | Studio及Drama TypeScript、受影响文件ESLint通过 | 不等于全仓全部测试 |
| Studio生产构建 | 通过 | 浏览器验证构建ID:7e3r6OG3budLMPFq1Fmt1;其后的Agent重复点击保护及回执字段校验另经单元测试和类型检查 |
浏览器实际操作
使用内置浏览器操作生产构建,页面业务接口由仅监听loopback的隔离代理夹具提供,每个上传响应延迟5秒。没有借用真实登录或发起供应商请求。
- 390px窄屏断网导入合成PNG:图片立即从Blob显示,随后状态为“已存本机 · 同步中”;状态不再被顶部按钮挤成省略号。
- 联网并刷新:恢复文件与节点,最终显示“已同步云端”。单张流程服务端记录一次上传。
- 最新构建断网通过文件选择器一次选择20个PNG:画布显示已选20节点,随后本机保存完成;没有等上传响应才添加节点。
- 联网后立即刷新,最终云端记录20节点和20个稳定上传命令;缩放后DOM可见20张图片。云端快照不含
blob:、data:image/或localAssetId。 - 最新批量流程浏览器console没有error;网络仿真已恢复在线。
这是20个小型合成PNG的功能样本,不是大图带宽、性能p50/p95或真实供应商多图编辑验收。原仓自动E2E启动脚本在初始化默认文本模型阶段返回503,因此那两项自动浏览器用例尚未执行成功;独立IAB验证没有被写成该脚本通过。
本机原始日志、基线、脱敏夹具结果与截图存于Studio工作树.local/media-evidence/,包括studio-batch-offline.png、studio-batch-synced.png、studio-offline-mobile.png、ow-studio-media-unit.log、ow-studio-pg-tests.log、ow-drama-pg-tests.log、platform-media-files-verification.json。
5. 尚未闭合的全平台工作
| 项目 | 当前缺口与下一步 |
|---|---|
| 全部参考图URL化 | Drama仍有inline-base64-sha256-v1私有输入快照;Platform遗留Gemini图片参考仍接受Base64。必须联合变更产品冻结输入、授权文件引用、网关原生字段与目录能力,不能只在前端改字符串 |
| Drama本机画布 | 现有sessionStorage草稿和等待上传后插入节点仍需替换;必须增加宿主账号隔离、Blob队列、冲突恢复和选中依赖语义 |
| 全入口 | Studio视频/音频导入仍采用既有上传流程;蒙版、跨产品分享、不同供应协议及视频末帧需要逐入口覆盖 |
| 缓存与内存 | 未同步Blob不得TTL删除;已同步缓存、Undo仍引用版本、可见区域缩略图和大图内存预算尚需完整验证 |
| 故障与权限 | 浏览器多标签页/切换账号、原件读取撤权、CORS与导出、路由有界请求校验仍需联合验证,不能只以单元测试代验所有入口 |
| 性能与真供应 | 补小图/大图/透明PNG/EXIF/高像素样本和冷暖缓存测量;标准单URL与多URL的真实编辑特征保留测试待额度明确后执行 |
| 发布与切换 | 当前五仓改动未发布;新服务供应渠道保持此前状态。完成独立联合验收和分批发布方案后才进入消费端切换,不能让旧实例因新增lookup接口不支持而被隐式回退 |
DEV-X-01-006的AC01/02/03/08/09/19/20/21/22/28已获得本批对应范围的部分实现或证据,仍须逐产品和真实部署入口补验。AC04/07/12/17/23/29及全入口AC35等不标完成,PROC-02-018也不替代这些验收。
6. 合入Studio Agent面板与执行循环后联合验证
6.1 合入来源与代码保护
用户追加要求拉取Studio关于Agent面板和执行循环的其他提交,一起测试。已fetch并确认主线新增 Studio PR #64,提交为8df6fb8f70157a8ca3d20cb7d4be9e4aef0d6dda。当前Studio工作树已从首批基线快进到该提交,再恢复原件改造;第2节的Studio SHA为合入前基线,本节为当前测试基线。
合入前保留完整tracked二进制补丁、8个untracked文件及各自SHA-256清单,位置为.local/integration-pr64-before/;Git stash 501d68f993a5a1e193d846e276e6578f38a502ca仍保留。四处文本冲突已逐段整合,未选择整文件覆盖:画布入口、Agent面板、面板测试、E2E测试。当前没有未解决冲突,原件代码仍为该主线之上的未提交修改。
保留PR #64的画布专属会话自动恢复、收起后保留流式订阅与输入、读取/编辑画布工具、节点生成、暂停恢复、结果定位、执行历史折叠和新交互;同时保留原件队列、IndexedDB草稿、自动入库与选中依赖优先。
6.2 联合发现与处理
- Agent回写原先调用完整画布保存,会等待全部未上传素材。现改为先同步就绪部分,以当前账号最后确认的云端快照做三方合并,保留本机新增图片和正在替换的原件;未同步节点不被当成服务器删除。
- 合并后的未同步画布立即持久化新本机草稿,Agent对其他节点的修改与本机文件引用共同恢复;云端同字段冲突仍拒绝覆盖。
- File Owner集成夹具补齐新增lookup接口的真实身份、scope、SHA、长度、MIME及释放状态校验,未以绕过权限或上传回退来消除失败。
- E2E重复import已消除;后续调整通过用户展开历史查看;批量图片按现有画布虚拟化语义先缩小视图检查。窄屏先打开会话再收起,验证已建立的订阅继续运行。
- 初次E2E启动缺少匹配版本的Chromium headless shell,安装现有Playwright依赖所要求的浏览器后执行。未改应用依赖版本或使用真实浏览器账号。
6.3 验证结果与范围
联合回归构建ID为oLdUqR60qickWXV3dgYe6,包含PR #64和本批原件/Agent联合修复。最后补齐上传准备中的发送按钮loading/禁用状态,14项面板测试、类型与lint再次通过;最终构建ID为-xwjPgcuDZUcDu93MuOhv,桌面会话/后续调整/候选定位和390px本机图片联合流程2项再次通过。
| 验证 | 结果 | 覆盖 |
|---|---|---|
| 定向单元回归 | 17个文件、90项通过 | Agent面板、输入/IME、会话恢复与隔离、历史、定位、同步、画布工具规划、文件队列及本机草稿 |
| Runtime PostgreSQL | 9个文件、99项通过,无跳过 | 真实Runtime组合、画布读取/修改循环、节点生成、冻结输入、恢复与引用释放、独立服务桥接 |
| 素材PostgreSQL | 5项通过,无跳过 | 上传回执查询、自动入库、同命令复用、对话关联和权限保护 |
| 类型与质量 | TypeScript、受影响代码ESLint、diff检查通过 | 主应用和独立Runtime宿主依赖均按锁文件安装 |
| 浏览器自动回归 | 13个独立场景通过 | 10项首轮通过、桌面历史操作1项复测通过、组合本机图片2项复测通过;不是一次全绿运行 |
| Standalone初始化 | 测试实际构建HTTP入口通过 | 新对话初始化、独立Runtime数据库、原会话/请求恢复;不再使用前批跳过初始化的方式代验 |
浏览器覆盖1280、821、430、390px中各场景对应的视口:画布专属对话自动恢复、澄清、原命令后续调整、候选加入与定位、Agent改写/新增节点、立即撤销重做、刷新、额度暂停与显式恢复、滚动位置保持、收起重开及跨画布隔离。
新增的组合验收分别在1280px和390px执行:打开Agent建立订阅后收起面板,断网导入20张图片;Agent在服务器修改原文本并新增节点,前端无需上传这些图片即可回显修改,20张本机图片全部保留。随后刷新恢复、联网续传,最终为20次上传、22个云端节点,云端快照没有Blob URL、Base64或本机文件标识。
此外使用内置浏览器手动验证建议填入、收起重开后未发送草稿保留、离线图片被选入Agent参考区、离线提交保留需求并提示联网、恢复在线后的单次上传和云端同步。390px页面宽度与scrollWidth均为390,无框架错误覆盖层,相关console error/warn为空。该手动页面的业务接口为隔离代理夹具;不将其当成真实供应商生成。
原始记录在Studio工作树.local/integration-pr64-evidence/,包含各测试日志、三轮浏览器结果JSON、Standalone初始化证据、截图和integration.json。失败轮次也保留,可核对修复与复测过程。
本次只拉取合入和本地联合验证,没有提交、推送、部署或切换生产调用;第5节尚未闭合的全平台工作继续有效。
7. 纳入最新Commerce并补齐Studio音视频本机导入
7.1 本轮范围与基线
用户本轮明确Drama先不动,已启动Commerce需拉取最新代码并纳入。因此本轮没有继续修改Drama,前述Drama结果仅为历史记录。Commerce完整fetch后从bb4d43c8573c2b1130e4a9459458bb1efbd66f6d建立独立工作树commerce-media-files,分支codex/8-media-files,关联 Commerce #8。保留最新创意工具、统一图片编辑、文本助手、并发拍摄清单、商品链接改图和素材库;没有拿旧原型覆盖最新代码。原checkout未被重置。
Platform快进到56923ce,保留原件补丁;Runtime快进到57753ba,保留SDK补丁。Platform合入前补丁和stash保留,无冲突。Studio仍以第6节8df6fb8f为基线,保留Agent面板及循环改动。
7.2 本轮初始候选实现(Commerce存储策略已由第7.5节替代)
| 范围 | 实际结果 |
|---|---|
| Commerce稳定上传 | 产品数据库登记不可变上传命令;同一命令同一指纹恢复一条素材记录,并发重放不覆盖后续重命名、分类或回收站操作 |
| Commerce素材复用 | 素材库进入AI编辑直接使用原素材ID;不再先下载进浏览器又上传。修复切换模式丢失素材URL参数,刷新后保持原素材 |
| Commerce本机回执 | IndexedDB升级schema 2,以服务器/Owner作用域和本机素材ID联合索引。新服务实例可直接复用回执,不再次计算Blob哈希或上传;不保存凭据、grant或临时URL |
| Commerce原件适配 | 可选专用File Owner适配,先查回执、原件上传、严格续期及读取授权;业务库只保存稳定证明。下载先授权并核对缓存长度/SHA,保留原文件名;缓存恢复不转发服务Authorization |
| Commerce参考输入 | 图片编辑、多角色海报/链接图、分镜视觉请求改为HTTPS URL,保持角色顺序和透明输出校验;Seedance可使用Owner签发URL,未配置Owner时保留原显式限时relay。未验证的视频URL协议拒绝收费派发 |
| Studio导入补齐 | 视频、音频导入与图片共用本机队列,File/Blob先显示,异步读取尺寸/时长并后台入库;页面刷新后恢复,同命令续传。没有扩大现有20MB导入策略 |
上表为用户追加“Commerce不再使用本地媒体存储”之前的候选记录;其可选Owner、本机Blob和relay策略已被第7.5节替代,不再是实施目标。未创建消费端生产凭据、未修改生产身份/桶、未切换Platform调用。Commerce仍是单用户loopback宿主,不能将此候选描述为中央身份或公开多用户服务已完成。
7.3 本轮验证
| 检查 | 实际结果与范围 |
|---|---|
| Commerce前端 | 18文件70项通过,无跳过;TypeScript与生产构建通过 |
| Commerce后端 | 168项通过,无跳过;指定本机中文字体后包含实际FFmpeg合成、声音与视频已有回归。保留2条依赖警告:Starlette/AnyIO弃用、Pydantic已有alias警告 |
| Commerce原件专项 | 同命令missing/ready、冲突、并发注册、失ACK找回、Owner错误scope回执拒绝、原件续期、下载、身份变化拒绝、未注册衍生帧拒绝、无URL协议在收费前阻断;Owner和模型使用MockTransport,未访问生产或真实供应商 |
| Commerce内置浏览器 | 127.0.0.1:4175,1440×900、390×844,真实空库本机服务。上传1.6MB项目示例PNG,进入编辑、切模式、刷新后仍引用同一素材;数据库1条素材、1条命令、服务日志1次上传,收费任务POST为0;无相关console error/warn,390px无页面横向溢出 |
| Studio本机音视频 | 4文件14项通过;类型、受影响ESLint通过 |
| Studio生产浏览器 | 构建AYHNpfoNkKCupFqAQDzZk。1280px和390px两项通过:断网选择合成MP4与WAV后节点立即出现、上传0次;本机保存后刷新恢复,联网后恰好2次上传、云端3节点,无Blob URL/Base64/本机标识。业务API为受控夹具,不是真供应验收 |
| Platform最新基线 | file bridge 15项通过,无跳过;原件补丁适配最新main后的真实隔离PG验证 |
| File Owner HTTP边界 | 新增真实Gin路由及controller测试通过,包含8个lookup子场景与3个无效上传元数据场景;验证认证、未知字段/尾随JSON、16KiB请求上限、产品范围、规范长度与Cache-Control。无对象IO、不登记claim;上传头超过4096字符先拒绝再解码,无效元数据不读取媒体正文。使用SQLite注册表与拒绝外部对象请求的传输,不是云端HTTP验收 |
| File Owner与Studio存储 | File Owner SQLite/PG两子测试通过;Studio素材PG 5项通过,无跳过。新建自有loopback临时PG,结束后停止移除。该项服务用例不代验HTTP路由;新增路由边界另列下项 |
初次Studio浏览器启动因新构建尚未准备Standalone public/static失败,使用本仓prepareStandaloneAssets后两项通过;失败日志保留。初次Commerce后端因本机未配置中文字体有7项失败,指定系统中文字体后168项全过。新增浏览器发现的模式URL回归已修复并复测,不能把先前失败轮次标为通过。
本机日志前缀/tmp/ow-commerce-*、/tmp/ow-studio-av-*;Commerce截图及browser.json在/tmp/ow-commerce-media-evidence/。Studio自动回归原始证据在本次命令输出的studio-runtime-progress-qa-pFJXc3临时目录。源码仍为独立工作树内未提交修改,不等于已合并或部署。
7.4 更新后的未闭合范围
第5节是前批状态;其中Studio初始视频/音频导入已由本节补齐,Drama本轮移出实施范围。全平台仍未完成:Studio原生Gemini/图片编辑的已发布引用契约、冻结请求中签名URL与稳定引用的职责、生成结果原件采用和素材库自动登记、蒙版/末帧/跨产品分享的逐入口核验、已同步缓存回收及Undo引用、中央身份下Commerce账号隔离、CORS/原件导出与实测性能,以及未授权执行的生产切换。旧Base64模块的存在也不能直接等同于Studio活跃链路仍走它:当前Studio执行已走native-media相关模块,需要按实际调用入口继续核对;Drama遗留协议不得在本轮被顺带破坏。
本节只证明所列本机实现和验收,不将统一原件重构整体标记完成,也不以库构建或MockTransport替代真实供应商多URL内容保真、云端权限与跨域验收。
7.5 Commerce远端原件强制接入(替代第7.2节的本机媒体候选)
用户随后明确“commerce不再使用本地媒体存储”。本节替代前述可选Owner、IndexedDB Blob素材库、常驻服务器成品及本地relay策略。Studio仍采用画布本机草稿队列;不把Commerce新要求反向套用到Studio,Drama继续不动。
- Commerce四项File Owner服务端配置成为必需项。未配置上传返回503,生成在任务受理/收费前拦截;不存在本地原件文件夹或限时relay兜底。现有中央身份缺口不因此消失,网关仍只允许loopback。
- 所有活动AssetService改为远端服务。编辑器、品牌、批处理和图片工具不再向IndexedDB写媒体Blob或上传回执;设计/项目/任务元数据仍可保存在浏览器。文件只在当前页面内存用于预览,成功后使用原素材ID与同源读取入口。原浏览器数据不自动清除,旧媒体表不继续读写。
- 上传使用临时spool,Owner回执和产品素材登记完成后删除;同File内存重试保留相同command。素材/图像结果元数据复用不下载原件,不重新上传。切换模式、刷新和成品进入编辑器都保留原素材ID。
- 图片编辑、拍摄清单、海报、商品链接逐图成品、参考图视频、多镜头成片及换装raw结果都在发布success/可下载地址前保存到Owner,自动登记素材目录。并发镜头仍使用原索引,部分成功和取消前已完成结果可读。
- Pillow/FFmpeg使用请求/任务临时目录,结束或失败清理;父进程在终止/取消worker后清理其scratch。正式读取不查这些路径。下载临时文件有界校验SHA/长度/MIME,用完清理;Range和原文件名继续支持。JSON/SRT/brief是产品SQLite中的文本元数据,响应从内存生成,不伪装成媒体上传。
- File Owner真实上传契约发现Go MIME嗅探返回的WAV别名与客户端
audio/wav不一致。已在新FileUpload路径补齐真实RIFF/WAVE字节识别和WAV别名、Ogg音频codec标志、Matroska头标志;不修改旧客户Asset API。Commerce音频上限15MiB,与Owner一致,图片/视频25MiB。
| 检查 | 当前远端候选结果 |
|---|---|
| Commerce前端 | 19文件74项前轮通过,无跳过;最后并行复测有1项素材列表等待超时,Commerce未提交并留待独立复核;覆盖远端上传不写IDB媒体、同File相同command、已有原件/生成结果仅元数据复用、Owner失败无本机兜底、编辑模式和刷新保留素材;类型与构建通过 |
| Commerce后端 | 173项,无跳过;包含实际FFmpeg、声音校验、拍摄并发/部分成功、远端成品下载、Range、临时目录清理、Owner必填、错字节/跨scope拒绝、Owner保存失败不发布success |
| File Owner媒体合同 | 新增8个MIME子场景及WAV真实上传/同命令重放用例通过;WAV保存回执保持audio/wav,同文件重放只有1次对象PUT |
| File Owner隔离数据库/HTTP | 原件单写/委托SQLite与PostgreSQL两个子测试、媒体合同、Gin HTTP边界8个lookup子场景及3个错误上传头场景再次通过;临时PG以非超级用户运行,结束后移除 |
| 内置浏览器 | 1440×900和390×844,受控Owner对象存储;项目示例图上传后真实预览宽1254px,进入AI编辑、切换抠图、刷新后仍是同一远端ID;390px页面宽和scrollWidth均390,相关console error/warn为空 |
| 测试存储核查 | 本次浏览器最终数据库1条素材/1条命令/0条付费任务;DATA仅有SQLite及商品页采集元数据目录,没有assets/jobs媒体目录。受控对象保存在独立内存夹具,测试Owner的HTTPS授权通过后仅在夹具内映射到loopback字节路由,不能当作云端HTTPS/CORS验收 |
证据在/tmp/ow-commerce-remote-evidence/:reuse-1440.png、library-390.png、reuse-390.png、browser.json、storage.json;最终日志/tmp/ow-commerce-remote-{typecheck,unit,backend,build}-final.log,Owner日志/tmp/ow-owner-remote-final-pg.log。最初远端浏览器夹具的对象路由未纳入Vite代理,预览失败;修正仅测试夹具的路径后重新上传、真实图片加载与刷新复用均通过。旧失败截图不作为验收证据。
本节记录测试时尚未部署、提交或推送源码;用户随后要求先提交Commerce和Drama之外的改动,提交本身不改变以上验收范围。未配置消费端生产凭据、未切换Platform或旧客户链路,未发起真实付费请求。尚未完成真实新Owner实例/私有桶/浏览器CORS导出、中央用户隔离、上游已有结果的直接采用;模型结果仅存在worker内存时,若Owner不可用或worker在保存确认前退出,当前候选不提供跨进程结果恢复,不能自动重付费生成。整机硬崩溃可能留下OS临时文件,宿主需清理,它们不会成为正式读取来源。上述边界与第7.4节仍未闭合的全平台事项继续保留,不标记全平台改造完成。
7.6 用户要求先提交其他部分
按用户“先把其他的部分全部都提交了”的要求,Commerce继续保留未提交,Drama按既有要求先不动。本轮其他已验改动保存为下列本地Git提交;不包含其他任务工作树,不推送、合并或部署,不改变既有生产调用。
| 仓库 | 本地提交 | 内容 |
|---|---|---|
| Studio | b1a9ef52 | 本机素材队列、图片/音视频恢复、云端就绪同步、Agent合并保护与SDK 0.7.1 |
| Platform | 1936efd | 已就绪原件直接续期,不依赖生成恢复或重复采用 |
| Runtime | 74c161b | server SDK 0.7.1、不可变上传回执查询及严格校验 |
| File Owner | 7099bc2 | 上传回执恢复、HTTP元数据边界和媒体字节识别 |
文档提交同时包含已完成的独立服务部署记录PROC-02-018、首批/后续验收记录PROC-02-019、实施规格和证据索引。提交不代表第7.4/7.5节待验范围完成。Commerce最后一次并行前端复测的单项等待超时仍待独立复核,不以这次提交掩盖。
7.7 Commerce远端存储收尾验收
用户要求继续完成Commerce、修复剩余测试,验证后提交推送,Drama仍不动。本节闭合第7.5/7.6节保留的Commerce代码及受控集成验收;不把本次推送当作部署或真实供应商验收。
- 修复最后一次素材库测试等待失败:把无边界的页面角色查找缩小到素材列表区域,测试结束清理QueryClient,jsdom并发限制为2,没有增大原等待时限。独立素材库3项通过;完整前端78项(20文件)与后端176项均通过,无跳过,前后端并行复验也通过。
- 清理遗留IndexedDB媒体字段,活动代码没有assets/uploads表读写。上传文件的内存重试在所有入口保留相同command;扩展名与真实图片MIME不一致时,在Owner调用/命令登记前拒绝。素材列表和picker先按当前Owner/subject/commerce作用域过滤,后应用200条限制,旧本机记录和其他作用域的素材不会显示或被修改。
- 批量工作区只恢复远端元数据;已上传素材在模型受理失败后仍保留原件ID,不重新上传,失败释放提交状态。进度重连只查询原任务,离开页面清理轮询。批量导出读取成功的成品;图像导出通过同源原件下载入口,保留权限和内容校验。
- 上游已受理任务ID/status改为SQLite中的有界元数据,临时目录清理不再丢失原任务号;不保存签名URL、原始上游响应或媒体Base64。这只是恢复所需身份的保留,未新增自动重派或承诺Owner未确认时的跨进程结果恢复。
- TypeScript、78项前端、176项Python(含真实FFmpeg/音频)、生产构建通过,构建JS为
index-DMRaiqXz.js。生产依赖审计为0漏洞;Gitleaks 8.28.0对151份当前源码/配置/文档扫描无发现。保留原有大chunk提示和两条Python依赖警告,未为此跳过检查。
内置浏览器在127.0.0.1:4175,1440×900和390×844完成:上传项目自有示例PNG → AI编辑 → 一次受控结果产生并保存Owner → 实际导出PNG → 继续编辑 → 编辑器刷新 → 手机从素材库再次选用该成品 → 切模式并刷新。生成入口显式标注QA fixture;Owner控制面使用严格HTTPS合同MockTransport,字节入口只在测试夹具映射loopback,真实模型出网被禁止,不是云端TLS/CORS或生成质量证明。
最终数据库2条原件素材、1条上传命令、1条受控任务;HTTP仅1次输入上传POST,真实模型调用0。DATA没有assets/jobs媒体目录;导出文件SHA-256与成品Owner证明完全一致,进入/刷新编辑器及二次复用没有新增上传。手机innerWidth/scrollWidth均390,输入图真实宽1254,框架覆盖层0,相关console error/warn为空。页面身份、内容、截图和真实交互检查均通过。
证据在/tmp/ow-commerce-close-evidence/,包括result-1440.png、editor-refresh-1440.png、library-390.png、reuse-390.png、browser.json、storage.json和真实下载的download.png;日志前缀/tmp/ow-commerce-close-。测试替身/脚本/截图均不进入源码仓。未读取或修改生产凭据/配置,未进行付费供应商调用、生产部署或平台切流;Drama未修改。真实部署联调、私有桶跨域画布导出、中央用户隔离及第7.4节全平台未闭合事项仍按各自范围验收。
本批Commerce代码提交为dab183c(分支codex/8-media-files),对应源码提交。后续部署的File Owner需具备第7.6节7099bc2对应的上传lookup和媒体字节合同,并为Commerce单独配置产品权限及可信subject;当前线上18da578不因本次代码推送自动升级,不能只填写消费者环境变量就视为联调完成。