文档
03 平台04 媒体供应02_需求与工作包

MG-02-009 验收与交付

状态:已进入实施。MG-BUILD-01 覆盖 W01 会话、W02 配置事务/首批 W05 编辑,进度见任务/evidence;未运行新付费生成或旧业务库迁移。代码阶段在文档定稿后按本页场景验证,不能用静态页面、Mock 成功或“无 panic”证明系统正确。

文档定稿条件

入口、字段归属、状态机、交互/API、来源和验收互相一致;用户四类问题都有对应流程和可观察结果。D01–D08 的产品决定已记录来源,规格表直接编辑/复杂参数侧边编辑已确认;默认值、接口/Schema 映射和实际迁移盘点继续完善,不把文档通过当代码完成。

不要求定稿时就编写所有 Schema/DDL,但实体身份、金额/参数来源、保存与生效、身份/媒体授权、Unknown 恢复、结果完成语义必须确定。随后按实际改动建立任务,声明 Owner、依赖、Owned Paths、契约、测试、证据和回退。

按依赖实施的工作包

顺序工作包前置及明确产物
W01基础契约与来源提取文档定稿;代码来源/版权、领域到现有表映射、管理会话和内容授权接口;共享接口单一 Owner
W02渠道/型号单处配置与九渠道协议W01;聚合原子保存、发现差异、能力/价格统一版本;固定来源 adapter/校验及逐协议测试
W03模型与确定性调度W02、D01/D02;同一决策、0/1 顺序重试、一次客户计费关联、采购费用、容量/Unknown 不变量
W04持久测试、记录与真实结果W01–W03;普通任务链、详情/费用、播放下载与转存恢复,不再同步丢结果
W05UI 全流程整合前述实际 API;现代表单/导航、会话恢复、取消确认墙、列表/详情与错误反馈
W06迁移演练、原生发布与真实验收组件/浏览器通过、08 历史演练;备份恢复、全部记录/媒体分类、在途任务、systemd、供给验收及切流

这些是实施工作包。MG-BUILD-01 已开始 W01 管理会话、W02 配置/首批 W05 界面,其他范围仍待拆任务。W04 的执行恢复依赖 W03 共享内核;UI 可先完成不付费流程,但不能用未实现接口的假数据宣布交付。每个发布候选以完整提交固定,代码同步不自动部署。

可观察的验收场景

ID / 需求场景必须断言的结果证据
A01 / R01禁止网络访问旧平台,使用隔离新库独立启动登录、配置、模拟、任务、结果都可用;无旧 DB/session/管理 API 依赖;来源文件可追溯依赖审计、原生组件/Handler、浏览器
A02 / R02浏览/筛选/表格编辑/侧边参数/启停/发现/下载完整走一遍上游型号/价格直接改;复杂参数侧边改;关闭/切换侧边区保留草稿;无无意义确认;仅矩阵规定动作确认一次;编辑/保存不隐含付费调用浏览器操作清单、键盘与窄屏检查、Provider 调用计数
A03 / R03同渠道多型号/多规格在表格和侧边区修改参数与价格共用草稿、一个保存;全部变更原子提交;中途故障无部分生效;UI 与报价同版本;继承/例外范围明确;无需二次录成本隔离 DB 故障/事务测试、版本回读、浏览器
A04 / R03两个标签并发保存;表格/侧边字段校验失败;改关键字段/有效路由顺序冲突不覆盖;失败保留全部型号草稿并定位字段;影响提前展示;有效版本不被失败保存关闭;旧任务快照不改版本 CAS、UI/Handler、持久快照
A05 / R03目录新增/缺失/人工冲突、网络失败可审阅差异;不自动删除/覆盖/启用;导入为草稿;读取不会付费目录 Fixture、Handler、浏览器
A06 / R04两供给不同参数、价格单位、优先级/策略不合适供给排除;排序与 D01 一致;同快照确定性;模拟和执行共用规则真实断言 Fixture 与决策快照
A07 / R04按秒/次/分档/附加/最低秒数、未知价/币种金额精确、单位只换算一次;未知不当免费;跨未知币种不比较;采购费用不成为追加客户收费金额单元及 Handler 测试
A08 / R04双击/跨标签/断连;提交中崩溃;Redis 清空;租约竞争同操作同任务;未知不重发;Provider POST 次数持久不超限;两 Worker 不各提交一次隔离 DB/Redis、故障注入与 POST 计数
A09 / R04已受理失败、内容拒绝、限流、存储故障、容量争抢按证据安全换一次或停止;内容不伤健康;供给故障隔离;无容量超卖/参数偷改;A 结束后 B 才提交、同请求计费关联不变adapter 分类/调度/恢复组件测试
A10 / R05当前九渠道逐协议请求/查询/结果及多规格正确字段和状态/错误映射;MegaBY 等有来源差异;连接/代码/真实验证分开;未验证停用源 Fixture、协议契约、授权真实证据
A11 / R06API、测试、多 Attempt、分页和渠道筛选一个逻辑请求一行;测试可恢复;参数/快照/历史版本真实;游标无遗漏/重复DB 列表/Handler、浏览器
A12 / R06真实隔离媒体封存后浏览器播放/下载GET/HEAD/Range、拖动和下载可用;无伪成功;未授权无法读取;单管理员密码登录,刷新可恢复,登出/改密码失效原生 DB + 真实媒体文件 + 浏览器
A13 / R06上游成功但转存失败,重启后恢复;结果过期不再生成;恢复原文件;上游事实/交付状态分开;源过期不改终态/删记录,新结果不默认清理结果恢复组件与持久回读
A14 / R06未知实际费、失败费、迟到退款、重复账单、缺快照未知明确;事件不重复计费;币种不乱加;退款有来源;缺失不伪造成本事件/快照测试、UI;调用方单次结算需另有联调证据
A15 / R07本次文档交付结构、路径、来源哈希、需求覆盖和矛盾检查通过;应用代码未改MG-REBUILD-01 文档审计
A16 / R08迁移/备份恢复、旧未知与在途任务、归档/桶引用、发布回退身份/引用/密钥可用;没有二次提交;旧归档原地;systemd 原生部署;回退不丢新数据隔离演练、发布清单、只读运行核对
A17 / R09旧主库/日志库全类型/状态/渠道历史及媒体迁移;重跑/晚到更新全部有查询去向,源时间/单位保留,缺媒体分类;同 ID 不误合;旧库不写,不触发生成/结算来源快照/摘要、隔离导入、对象检查、浏览器
A18 / R09永久保留、归档、临时清理、备份恢复历史/快照/费用/引用不按期限删除,归档来源历史可查,临时清理不破坏引用,备份可恢复保留/清理不变量、档案查询和恢复演练

合成 Provider Fixture 适合验证协议转换和错误场景,但不能证明真实供应商可用。A12 使用真实可读视频文件及实际组件来证明平台播放/存储链,不等于付费生成验收。A10 的真实供给测试必须有明确授权、范围与持久预算,本任务不执行。

检查与环境

Go 改动按范围执行 gofmt、go test ./...、go vet ./...、go build,及相关 race/原生组件/Fixture/Handler。前端执行 bun run lint、bun run typecheck、bun run test、bun run build,并做桌面、窄屏、键盘焦点、空态、错误、冲突和会话/播放器浏览器检查。

数据库与 Redis 组件使用隔离的原生实例,不连接业务数据库;对象测试使用独立受控范围并记录清理,不影响业务对象。不搭建 Docker/Compose 日常验收环境;编译通过不能替代真实 DB 不变量或真实结果链。无组件环境时明确阻塞/跳过项,不以 Mock 代替通过。

每个场景断言任务/版本/事件/对象及提交次数;日志仅做关联辅助,不用随机 sleep、没有 panic 或截图中的“成功”当唯一证据。必要等待用有界条件轮询并验证最终持久状态。

真实供给验收

每个测试计划列出固定供给/完整路由模式、配置版本、输入范围、上游收费说明、授权及唯一操作标识。先持久占用操作/提交次数,再提交;固定供给一次,路由按配置首次加最多一次。响应丢失只查原任务;Unknown 先核对。测试不自动启用供给。

通过证据至少包括:明确受理 ID、真实上游终态、匹配请求的媒体、平台转存与授权播放/下载、实际费/待核实状态、错误分类和恢复表现。一次通过只覆盖被测场景。价格/费用未知的供给不能在生产成本排序里假装通过。

既有第一批 0/4 的事实继续保留于 MG-ACCEPT-01;文档重做不改写它们。新的通过必须有新任务证据,不能仅凭旧上游截图或本地 Fixture 宣称九渠道正式可用。

发布与回退

发布 pic-vps 源码/systemd,无 Docker。构建、配置、迁移、UI 与 Worker 固定同一候选提交;密钥在源码外;现有 release 在切换前保留。部署前备份和恢复演练,核对只处理目标服务的任务/数据库。

切换先阻止新生成并控制 Worker Owner;检查在途/Unknown,再运行前向迁移并切 release;随后验证 health/readiness、认证、配置回读、记录、已存在结果播放和恢复。部署检查默认不发新的付费 POST。真实供给验收和调用方切流另列状态。

回退前核对数据库兼容、已接受任务与对象;旧程序不兼容时使用兼容修复,不倒退 DB 或删新任务。保留旧凭据版本和数据引用。分支/工作树只在合并且干净后清理,OMG-908、归档标签和其他任务不动。

每个任务交付 Task / Branch / Worktree / Base / Final Commit / Changed Paths / Tests / Evidence / Risks / Follow-ups。状态逐项写:文档、代码、验证、部署、供给、切流;不使用一个“已完成”遮住未验收部分。

On this page