Files
UHD_Media_Tool/docs/plan/13-development-baseline.md
T
rootandClaude Opus 5.5 ceb66f8c77 feat: v0.3.8–v0.3.14 工作区汇总(依赖升级、整理来源、手动入库、原地入库等)
生产 v0.3.8~v0.3.13 均由 8013196 加工作区修改构建部署,此前未提交;本提交补齐源码,
并含未部署的 v0.3.14 原地入库。中间各版本源码状态未保存,无法逐版拆分,详见
docs/plan/17-full-upgrade.md 与 docs/plan/18-organize-release.md。

- v0.3.8 全面升级:Deno workspace 依赖、Router 8 / Vite 8、camofox 1.18.0 / Node 24、
  PostgreSQL 18.6、备份客户端 18.6、演示 qB 5.2.4
- v0.3.9 媒体整理:分类规则、整理来源与目录快照(0059)、文件管理整理入口
- v0.3.10 手动下载与入库:独立手动下载、详情页资源下载、TMDB / Local 元数据兜底
  (metadata.resolve_organize)、正常多版本 / 一次性洗版(0060)
- v0.3.11 搜索详情与桌面黑边修复
- v0.3.12 列表分页、搜索历史、首页概况
- v0.3.13 统一整理弹窗与队列
- v0.3.14 原地入库(0061,未部署)

同批审计修复:
- 刮削入队:确认原记录存在后才删重放产生的新记录;写回 run 关联失败时保持 queued,
  由处理器补关联(对齐 MP 先登记、只在入队失败时记失败)
- 识别升级链只在结果更确定时采用,不再用 no_match 顶替原有歧义候选
- bluray_dir 资产以原盘目录本身为刮削根(MP 同做法)
- metadata.resolve_organize 登记到入库排障 Skill 与能力地图
- db/src/types.ts 按迁移重新生成;contracts 整理动作枚举顺序与数据库对齐
- 测试:原地入库用例改为直接查记录表;domain 测试模板补 version
- 前端:通知铃铛弹层与用户菜单统一样式;站点卡片共用卡头、底栏贴底、分页间距

依赖升级证据只提交摘要文件,registry-snapshot.json 移至 .local/(SHA-256 记于文档)。

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-02 15:47:17 +08:00

23 KiB
Raw Blame History

当前开发情况基线

此文保留升级前 v0.3.7 的业务基线,下面版本和数量均属该历史核对。后续依赖升级见 v0.3.8 升级记录,当前 v0.3.9 分类/来源功能部署见 发布记录。新一批手动下载、详情页下载、Local 元数据与一次性洗版已接入源码、尚未部署,状态见 MP 对照 §5.6。 本报告用于在继续开发前核对 UHD Media Tool 的实际状态。当前已有收录、下载、整理、刮削和智能体的主流程,也有运行中的部署;需求 v0.7 所要求的完整首版仍有缺口。继续开发前应先确定下一阶段要交付的使用场景和验收边界,不能用版本号、页面数或测试数代替需求验收。

核对日期:2026-10-01,时区 Asia/Shanghai。代码基线:main,提交 8013196e3f5e6a8c4ea0cd26cf77294a82a13ddd,标签 v0.3.7。本轮只梳理现状、运行检查和修正文档,没有修改业务实现、部署服务或用户配置。

1 证据和判定口径

需求基线是 需求与架构 v0.7,后续范围调整以 工程规划 中用户确认的追加要求为准。历史验收记录只证明当时的版本和场景;本报告结合当前代码重新判断。

证据 能证明什么 不能据此推断什么
当前代码与装配 有实现、已接进正式调用路径 用户环境里的全部边界均可用
当前自动化检查 指定测试、类型与构建检查通过 所有真实站点、模型、挂载都已验证
脱敏真实样本回放 对这些真实页面或标题的解析符合预期 登录、下载和风控在真实账号上都能通过
历史真机记录 指定版本和场景曾通过 当前版本已重新做过同样验收
本轮部署只读检查 服务健康、报告版本和迁移状态 镜像中的每个文件与源码逐字相同、业务全链路无故障

下文「已实现」指当前代码与对应回归覆盖已存在;「部分实现」说明缺哪一段;「未实现」指缺少所要求的完整业务能力;「待核验」是证据缺口,不能直接当作代码缺失。

2 工程与部署状态

项目 本轮核对结果 证据
工程形态 Deno workspace,2 个应用、8 个共享包,模块化单体 deno.json、仓库结构
运行时与前后端 Deno 2.9.7、TypeScript;React 控制台、Hono API、PostgreSQL 16、OpenWorkflow、Pi ADR、根依赖清单
服务装配 14 个服务模块,18 个注册任务;最初 9 个任务均由正式模块处理器覆盖,没有落到空壳 模块清单、任务装配;本轮调用 buildTaskRegistry 核对
公开合同 346 个 REST 端点定义,41 个智能体能力;这是合同数量,不是完整需求的完成比例 本轮调用 listEndpoints() 和读取 CAPABILITY_IDS,来源 api.ts、capability.ts
站点定义 23 个内置定义;定义存在不代表该站真实账号已验收 定义加载、移植账本
数据迁移 56 个迁移文件,最新编号 0058_scrape_record;部署数据库也已应用到该迁移 迁移目录、本轮只读查询 kysely_migration
当前部署 应用、PostgreSQL、浏览器容器健康;应用健康接口报告 v0.3.7、数据库 ok 本轮 docker ps 和 GET /api/v1/health,2026-10-01 13:02 左右
部署组成 核心应用容器含 API、IO worker、Agent worker 和 web 静态文件;PG、浏览器分别部署,可选 Caddy 提供 HTTPS compose、运行手册
本机附加组件 另有代理中继、本地模拟 qB 和开发 PG;不能把模拟 qB 当作真实 PT 下载验收 本地模拟说明、本轮容器状态

应用版本和迁移编号与代码基线一致。镜像标签没有源码提交号,本轮没有核对构建来源的精确提交;后续发布可补记录构建提交和镜像摘要。

本轮记录的运行应用 image ID 为 sha256:9d65bf0170f35e685a1ddd9ebfab74088f378138e7c02879488e97b089691629,对应本机 uhd-media-tool:latest 的同一摘要。该摘要只标识运行产物,不补足缺失的源码 revision 标签。

3 主流程实际覆盖

流程 已有行为 当前边界
获取资源 RSS 抓取去重、站点快照、实时搜索、详情缓存、23 个站点定义、账号与健康管理 站点实测覆盖不完整;Torznab 索引器仅定义结构
确认作品 标题与副标题解析、本地召回、TMDB、字段锁、人工纠错、待识别池;认不准时升级到详情页 ID 真实标题样本不能代表全库识别准确率;综艺分类与覆盖仍不完整
决定收录 新作品、追更、升级模式;规则组、多版本目标、分集账本、日历和覆盖矩阵 独立双版本组合校验未接入;智能体主观选片与规则学习未实现
提交和跟踪下载 多 qB、管理标签、授权、去重、磁盘水位、下载面板、接管与下载历史 未完成四站真实下载全链路验收;默认不会自动换源
整理入库 Copy / Move、跨卷恢复、固定路径绑定、命名模板、字幕随行、逐文件结果和回收站 不支持整理硬链接、软链接和 Rclone;旧库全量接管不完整
刮削与展示 就地写 NFO、海报、季海报和剧照;任意目录识别与候选选择;整理记录筛选、统计和批量操作 与 MP 有明确登记的文件布局差异;不能把刮削成功视作 Emby 已完成索引
持续自动化 持久任务、后台调查与授权内恢复、巡检、审批、预算、子会话、SSE、审计 最新提示的真实模型前后对比未跑;自动化成功率与人工介入率缺持续运行基线

主流程回归见 E1 收录入库、E2 智能体委托、E4 崩溃恢复、E6 授权内恢复、E7 剧集、E9 持续追更。外部系统主要由 mock 或样本回放提供,持久任务与数据库集成使用真实开发 PG。

4 需求逐项核对

本表重新核对 R01 至 R32 的主要实现与缺口,不计算整体完成百分比。测试明细以本报告第 7 节为准,真实交互边界以第 6 节为准。

需求 当前实现状态 当前证据与剩余边界
R01 多个 RSS 已实现 来源测试覆盖抓取、窗口和去重;跨 Feed 并发摄取的专项证据仍需单独核对
R02 综艺正片覆盖 部分实现 能解析内容类型、上下分段;尚无「上+下满足一期」及节目级附加内容策略
R03 TMDB 滞后不阻断 已实现主要行为 本地临时季集、总集数账本和追更已接入;一对多编号关系未完整建模
R04 独立双版本 部分实现 多个收录版本目标存在;checkDistinctAssets未被服务端调用,同一资产不能算两个目标的校验未落地
R05 每日新增自动收录 已实现 新作品、追更、升级模式与规则评估存在;每日汇总视图不是现有交付
R06 浏览器辅助站点 部分实现 camofox、视觉操作、人工接管及 Cloudflare 级联已接入;通用 HTTP 失败转浏览器不完整,真实挑战仍待验证
R07 固定最终路径 已实现 路径绑定与整理回归保证译名变化不自动改目录;显式文件移动另记修订
R08 本地身份独立 已实现 本地实体、外部映射、别名、人工锁与合并修订存在
R09 映射与巡检 部分实现 库根与资产存在性对账存在;外部身份巡检、媒体服务器对账缺完整流程
R10 辅助刮削 部分实现 智能体辅助识别与元数据补全、NFO/图片写入已做;没有独立字段级 metadata.apply 能力,不能因此把刮削写成「未做」
R11 参考项目迁移 已实现主要工程 有来源账本、MP 差分与偏离登记;文件布局也有运行差分,但不代表所有转移场景均有运行对照
R12 Pi 推理内核 已实现 Pi 封装、能力白名单与有界执行已接入;模型供应商的联网覆盖另算
R13 API 和 MCP 已实现 REST、OpenAPI、MCP、鉴权和 SDK 集成测试存在;合同数为 346、能力数为 41,旧文档数字过期
R14 qB 标签纳管 已实现 提交、接管、去标签后停止管理及保留历史有回归
R15 整理与缓存清理 已实现主要行为 Copy/Move、跨卷、校验、保留期和 H&R 保护;硬链接与 Rclone 不在现有实现范围
R16 条件和智能体选片 部分实现 确定性规则已做;独立预算下的主观偏好选片未实现,不能用会话内手动委托代替
R17 自动执行与授权 已实现 发布规则的持续授权、单次审批、服务端权限与自动化总开关有实现和回归
R18 旧库分范围接管 部分实现 已有库根只登记/纳管模式及逐项整理;缺首次扫描、影响预览与按作品启用
R19 控制台和智能体双入口 已实现 同一业务能力注册、页面上下文、审批与待处理入口已连接
R20 偏好标签与学习 部分实现 标签迁入规则组,编辑、抑制与修订存在;旧「标签不参与评估」需按规则串和兼容字段区分,自动学习与样本回放未完成
R21 缓存硬阈值 已实现主要行为 同卷多 qB 汇总、阈值暂停与恢复水位存在;未纳管占用的专项验收仍待确认
R22 跨季召回与治理 部分实现 本地别名、季年份、续作判别、待识别池、详情 ID 识别和真实标题差分均有进展;缺全面召回率、误关联和新节目评估
R23 公开整理记录 已实现 列表、文件结果、游标增量;本版另加统计、删除和批量操作。删除记录不发增量墓碑,见 整理手册
R24 Emby 辅助查询 部分实现 多实例查询、超时与 unknown 状态存在;库存未用于满足收录目标,缺本地资产对账与真实 Emby 验收
R25 站点快照与限流 已实现 快照和实时补查已做;PG 令牌桶、共享缓存已在 0041/0042 落地,不再是「c2a 待合并」
R26 模型与能力配置 已实现,联网覆盖不完整 上游、模型、思考、预算、压缩与登录配置存在;有部分真实模型历史记录,41 个 provider 和各订阅登录未逐一实测
R27 不默认自动换源 已实现默认边界 无进展记录证据,不默认换源;委托换源的「新任务+原任务处置」尚未合成一个替换计划
R28 单管理员与多实例 已实现 登录、TOTP/Passkey、API Key、多下载器/媒体服务器及路径映射存在
R29 自然语言交互执行 已实现 步骤清单、方案、内联审批、先给方案和后台续跑有回归
R30 PT 工作台 已实现,站点验收不完整 搜索、资源、详情、账号、下载入口存在;观众和憨憨有真实样本/局部核对,四站完整验收仍缺
R31 同会话人工接管 已实现主要行为 截图模式、Webtop/Selkies 同会话桌面、租约、交还与视觉操作已做;真实输入法和客户端兼容性尚未全测
R32 浏览器后端配置 已实现一种后端 camofox 配置与版本核验存在,固定 v1.17.0 有真机记录;其它 fork/版本不能直接沿用核验结果

对应运行说明:身份、订阅、规则、整理、文件、智能体、浏览器、缓存、MCP。

5 历史状态需要纠正的地方

历史文档按当时的基线保留,不把其中每条「未做」直接搬到当前待办。

历史说法 当前核对结果 证据
所有能力只在 mock 上验证 已有浏览器、TMDB、部分模型及短剧补全的真机记录;覆盖仍有限 浏览器手册、工程规划后续记录、身份手册
刮削不写 NFO 和图片 SCR-1/SCR-2 已实现,任意目录可就地刮削 刮削服务、刮削测试
跨进程限流和缓存正在 c2a 分支 已合入,PG 令牌桶、UNLOGGED 缓存与图片代理存在 缓存手册、0041/0042 迁移
原站视图还是占位或只有截图 已有同会话桌面,截图作为回退;camofox v1.17.0 有真机核验 浏览器手册、桌面模块
agent.spawn {await:true} 一直占 worker 槽 当前正常会话驱动支持挂起与恢复,E11 直接验证等待期间槽位空闲 子会话实现、E11
版本规格只能在订阅侧看 作品详情已有分集资产版本与目标比对 版本服务
任何站点 HTTP 失败都不会转浏览器 Cloudflare 页面挑战已有自动/视觉/人工级联与浏览器代抓;通用失败转浏览器仍不完整 Cloudflare 服务
库根离线没有按根因去重 整理入口已有 library_root_offline:<rootId> 去重;跨业务的统一根因聚合未完整确认 整理服务
备份恢复完全没做过演练 早期临时环境中实际备份、清库、恢复和映射比对通过;当前版本自动定期演练未做 部署验证记录、备份手册
看到 tasks 中的 stub 就说明主流程未实现 正式装配已覆盖最初 9 个任务,stub 仍作为注册兜底保留 本轮比较正式和默认处理器,见第 2 节

另有历史问题未确认终态:能力统计可能把正常挂起记成失败、个别浏览器状态提示及跨版本流程恢复。现有统计按审计中的 error/invalid 计失败,不能仅凭旧截图判为已修或仍有故障,需要针对当前版本复现。

6 真实环境验证边界

对象 已找到的证据 仍需补的证据
TMDB 工程规划记载真实搜索、识别、订阅季集、海报和缓存验证 对下一阶段的固定样本重新验收;不能将历史记录等同于本轮重跑
浏览器 v1.17.0 实容器的登录保持、捕获下载、同标签接管与重启;Webtop 原型、视觉点击和插件可信鼠标事件 四站真实挑战、输入法组字、客户端浏览器差异;保活、自愈等新变化的实机边界
憨憨与观众 憨憨真实标题差分和局部核对;观众真实脱敏列表/详情样本 逐站账号登录、搜索、下载、促销、H&R、过期恢复、文件清单的完整验收
馒头与 CHD 定义、适配器和 mock/离线样本测试 真实账号全流程证据
qB 多版本兼容代码、mock 回归、本机运行的 qB 5.1.2 模拟容器 用户真实下载目录、挂载与 PT 下载全链路;模拟器可运行不证明真实服务已验收
Emby/Jellyfin 兼容查询实现和 mock 测试 真实认证、分页、库存及资产映射验收
模型上游 规划记载 OpenCode Go/DeepSeek 的部分历史场景;视觉与网页补全有局部真机记录 AG-5 分层提示的真实前后对比明确未跑;不应声称所有 provider 已实测
媒体挂载 临时文件系统、跨卷和故障恢复回归 真实 NFS/FUSE/mergerfs 等规模与故障基准;不能承诺大库性能

真实模型前后对比的缺口来自 评测记录;浏览器核验细节见 浏览器手册。本轮没有连接真实 PT 账号或模型上游,也没有产生下载、刮削或清理用户文件的动作。

7 本轮检查结果

同一会话上一轮已完成:全仓 TypeScript 检查通过;domain 21 个文件、642 个测试通过;E1、详情 ID 识别、NFO 与布局差分共 4 个文件、25 个测试通过。

本轮对同一业务代码基线运行完整 deno task ci,明确指定开发 PG 127.0.0.1:55433/umt,集成测试使用临时 schema。检查退出码为 0,完整通过;server 测试于 13:08:06 开始,耗时 538.15 秒,随后其它包检查、构建和编译自检均通过。

包 通过文件 跳过文件 通过测试 跳过测试
server 122 1 756 1
adapters 58 1 459 3
agent 9 0 82 0
contracts 7 0 1036 0
db 4 0 21 0
domain 21 0 642 0
mapping 2 0 22 0
tasks 6 0 17 0
testkit 2 0 5 0
web 24 0 224 0
合计 255 2 3264 4

跳过条件按源码核对:server 的真实模型评测未启用;adapters 的真实 qB 兼容测试没有配置 QB_REAL,整个文件未运行;以 root 执行时,三个目录/文件权限拒绝测试主动跳过。真实 qB 文件在没有目标时不生成测试,因此不能仅凭「4 个测试跳过」理解全部外部验证缺口。数据库包与任务包测试均实际执行;server 只有一个文件跳过,没有把 PG 集成文件整体跳过。

非阻断输出:Biome 有一条测试代码 literal-key 提示;web 构建有依赖注释和 sourcemap 提示,构建成功。本轮没有为消除这些提示修改实现。

完整 CI 包含 tsc 与 Deno 类型检查、Biome、各包 Vitest、设计 token 守卫、文案标点、web 构建、server 编译与二进制启动自检。前端全页面 Playwright 冒烟和真实模型评测不包含在普通 CI 内;即使 CI 全绿,也不将这两类算作本轮通过。

本轮原始日志:/tmp/umt-development-baseline-ci.log。日志是本机临时证据,最终结果汇总写在本节,不能依赖临时日志长期存在。

完整 CI 后的文档勘误不改变业务代码;文档本身另外核对了本地链接、事实引用和差异格式。本轮没有运行镜像重新构建或前端页面冒烟。

8 当前缺口和工程风险

项目 分类 当前判断 可验收的交付边界
综艺完整性 核心功能缺口 R02 未完整交付 用真实节目样本验证分段组合、正片完整性、附加内容策略和完整版替换
独立双版本 核心功能缺口 R04 的开关和域层校验未接入服务端 同一物理资产不能同时满足要求独立的两个目标,覆盖预留和最终入库
旧库接管 核心功能缺口 R18 缺完整扫描、预览和分范围启用 首扫可续跑、错误不当完成,先预览再按范围开启,既有路径保持稳定
智能体选片与规则优化 核心功能缺口 R16/R20 缺完整实现 在硬规则和授权内做偏好判断,理由可查;反馈、回放、发布和回滚可验收
外部映射和媒体服务器对账 功能缺口 R09/R24 不完整 区分 unknown 与缺失,核对资产映射;是否允许外部库存满足目标需显式策略
换源替换计划 功能缺口 新提交与原任务处置尚未绑定 一份可审核方案说明两边动作,分别匹配授权并处理部分失败
备份自动化 运维缺口 看板 maintain.backup 仍 unavailable;脚本和早期手工演练存在 当前版定期备份与隔离恢复演练,行数、映射和只读恢复状态可核对
增量扫描错误语义 已确认的代码边界 scanIncremental收集目录/stat 错误后仍可能返回 complete;当前服务端未调用 接旧库流程前明确 partial/失败及续扫规则;不能把跳过文件算完整扫描
空壳任务兜底 维护风险 当前正式任务已覆盖,但遗漏注册会静默回显 todo 后续新增或重构时核对正式注册与任务版本,不只看默认注册表
关键故障场景 验收证据缺口 历史清单中的 AT18、AT29、AT42、AT73 和流程版本升级,尚未逐项重新形成当前验收记录 恶意标题、部分入库不清理、未纳管占用、多实例同 hash、旧任务跨版本恢复分别给出证据
性能与自动化效果 验收证据缺口 未建立按真实负载统计的持续基线 记录规模、挂载、延迟、无人干预完成率、人工介入、误关联、费用与待处理年龄
文档与发布来源 工程管理缺口 旧计划、README、覆盖表、部分手册状态互相矛盾;镜像未记源码提交 当前基线作为讨论入口,历史报告标清日期;发布记录附构建提交、镜像摘要和验证结果

上表不是已批准的开发排期,也不对缺口给出未经验证的固定工期。主观选片、规则学习和现有故障修复应按用户场景确定边界,不能在一次任务中笼统打包为「做完智能体」。

用户确认开展独立检查后,两项中等思考强度的只读代码/验证检查和一项低思考强度的文档检查发现了更具体的恢复与验收边界。见 工程检查与调整建议,其中区分代码已确认、实际影响待查和纯证据缺口。

9 里程碑判断与下一阶段讨论

按需求 §15 的口径,工程底座和 M1 主流程已有较完整实现,M2 的一部分能力也已交付,但 M0 的部分验收证据和 M2 的核心差异化需求仍不完整。因此不能直接宣称 M0/M1 全部验收完成,也不能继续沿用历史「M2 约三分之一」作为当前精确进度。

下一阶段讨论应基于以下四项材料:本报告中的当前能力、真实环境证据、缺口清单、现有检查结果。先确认目标使用场景,再选择范围:是先稳定现有电影/剧集收录,还是优先完成综艺与独立双版本,或先解决旧库接管。这里列的是待讨论的选择,不自动开工。

建议在恢复功能开发前,为选定范围写清:用户从哪里触发、最终看到什么结果、哪些失败需要调查或人工处理、用哪些固定样本验收、需要哪些真实环境。每项工作完成后更新本报告或后续阶段验收记录,避免再次积累「待合并」和「未做」的过期状态。

本轮仍未确认的事项应继续标为待核验,不据此删减原需求;已做但缺真机证据的能力应优先按场景验收,不重新从零实现。