fix(organize): resume original imports after episode corrections

This commit is contained in:
root committed 2026-10-13 16:50:51 +08:00
1 parent 679389f854
commit e874247e7c
17 files changed
+702 -26

No files matched your search

+1 -1
View File
@@ -17,7 +17,7 @@
## 当前状态
- 版本 v0.3.37,本机测试环境已部署。
- 本机测试环境已部署;当前运行版本以 `/api/v1/health` 为准,发布走 `bun run release`。
- 开发与发布约定见仓库根 [CLAUDE.md](../../CLAUDE.md)。
## 待办
+14
View File
@@ -349,3 +349,17 @@ MP 依据 §1 固定提交 `app/chain/subscribe/*`,旧版逐函数记录见 [
- 第 1、4、12 项:表单收敛为「基础」=作品与范围、下载、洗版;「进阶」=过滤(规则组、包含/排除、分辨率、质量、特效、关键词)、搜索;收录版本模板/顺序、优先级、自动补全折叠到「多版本(一般不用改)」。
- 第 7 项:洗版已是 MP 三种(电影洗版、按集洗版、全集洗版),文案改为「拿到规则组最高档即完成」,不再另做。
- 第 5、10、11、13、14 项维持现状;第 15 项不做。
## 8 整理闭环对照(2026-10-13,MP v3.1.5)
本节为上游发布说明与具体提交的源码对照,没有实测 MP 页面。参考版本为 [v3.1.5](https://github.com/jxxghp/MoviePilot/releases/tag/v3.1.5),北京时间 2026-10-13 08:46 发布。此前章节仍保留各自固定版本。
| 上游改动与证据 | 本项目取舍 |
| --- | --- |
| [c670432](https://github.com/jxxghp/MoviePilot/commit/c6704328829c32676674b520aa5f7b7d6a1447aa):大小策略拒绝覆盖要保留已有成功历史 | 保留每次整理记录和资产事实,不把规则拒绝视作旧文件失效;复用现有替换核验机制 |
| [4357035](https://github.com/jxxghp/MoviePilot/commit/435703573e8811d8a7e43a7356cce69f3e09a5ff):provider 检查点保存规划时间,区分计划和执行字段不完整 | 已有持久引擎与冻结文件计划,补齐可序列化原请求;执行恢复复用账本,身份纠正重新规划,保留一次性选项 |
| [de7726c](https://github.com/jxxghp/MoviePilot/commit/de7726c6fc54b74592161007b637414ae2c3f38e):手动下载部分入库也同步订阅进度 | 已有覆盖账本统一重算,不另建手动下载完成口径;保留 partial 的内部防重整约定,修复部分移动的再次整理来源 |
| [6ef8408](https://github.com/jxxghp/MoviePilot/commit/6ef8408f432dde643aee2ba7078f59d2776f84ce):TMDB 辅助补齐缺失分类字段 | 继续以 TMDB 为主要规范身份,补齐事实不让 Agent 改分类或收录规则 |
| 前版 [bb29451](https://github.com/jxxghp/MoviePilot/commit/bb29451):账本之外的未知执行异常停止自动重放,转人工复核 | 我们已有有限任务重试和整理巡检,不照搬 MP 租约与人工记账 API;补上重放的主文件/附属文件依赖,并让未知问题留在原整理记录处理 |
本轮额外闭环针对既有需求:真正失败的文件名参与季集 inspect/simulate,规则修正通过领域事件通知整理;重试入口只继续剩余文件,保持来源边界与原一次性选项。没有添加通用恢复引擎、第二套季集映射或独立处理中心。验证以针对行为回归及合并后的全量 CI 为准,日志放 `.local/organize-closure/`。
+4
View File
@@ -97,6 +97,10 @@ curl -H "Authorization: Bearer umt-dev-admin-key" "localhost:4390/api/v1/events?
手动下载以默认值直接提交,高级选项仅覆盖本次操作。搜索与工作台复用 `ManualDownloadActions` 的提交反馈、未识别确认和高级选项窗口,资源摘要与 API 参数仍由各入口转换;原站页面保留必须先解析详情的准备步骤。默认下载不先加载目录、作品详情或已有版本,不为三个入口引入通用流程引擎。
整理恢复区分两种情况:文件执行中断从原冻结计划和持久文件结果继续;作品或季集事实纠正后,通过 `retryOrganizeRecord` 从原业务请求重新规划。同一原记录的重规划串行,避免事件和巡检同时冻结重复计划。原请求保存一次性目标、操作方式和覆写,函数、任务身份与路径守卫不序列化,恢复时重新检查来源边界。已成功文件与资产保持原状,恢复主文件失败状态时也恢复其附属文件依赖。
季集计算和识别词归 sources-identity,整理请求、文件操作与入库状态归 acquisition-organize。整理把真实失败文件和同批正常文件样本交给映射事项,模拟与写入共用同一判断;映射重算后以 `media.episode_mapping_changed` 通知整理模块,只有季集已经确定的未完成记录重新规划。恢复预检与规划复用 `planFileEpisodes`,保留原资源的发布时间等解析上下文。Agent 的调查运行、预算和授权沿用现有机制,不另外创建恢复框架;身份补齐、重新排队和实际入库完成分别按业务事实核实。
维护时先验证真实的成功、失败和恢复路径,尤其是授权、文件替换、取消与外部副作用;删除空壳或无使用者的机制时同步删除其专属测试与文档。不要为了目录对称增加转发层,也不要把不同阶段的状态合并成一个枚举。
## 进程角色
+10
View File
@@ -47,6 +47,16 @@
不做:切换结构后自动改名已整理的文件(仍用「重新整理」)、剧集组季的独立海报。测试:`apps/server/test/file-manager/organize-episode-structure.test.ts`、`apps/web/app/components/organize-wizard/model.test.ts`「季集结构」。
## 识别纠正与继续整理
整理记录保留本次业务请求。没识别出作品时,下载来源和按路径来源都能由人工或智能体指定作品,再沿用原来的目标目录、复制/移动、命名和文件覆写重新整理。只有重新规划已接受才算身份事项处理成功,实际入库结果仍看后续整理记录;重新规划失败会留下原因。
季集待确认按作品、来源季和发布组归集真实文件样本,资源站标题与文件名不同的情况也参与模拟。作品识别词必须同时解决待确认文件且不破坏已对上的资源,写入后同类文件沿用这条规则。映射或季表重算后,季集已确定的整理自动继续剩余文件;本次临时选择的季集结构保持原约定,缺少原请求的旧记录由人工重新选择来源。
设置中的整理自动识别控制作品与季集的单次调查。身份有把握时可重新整理;季集规则自动写入仍需要有效持续授权,没有授权则保留模拟建议供确认。无法确认的交还人工,不改变收录分辨率、版本优先级或洗版条件。
执行中断继续原文件账本。主视频已经失败时,尚未执行的字幕等附属文件留在源目录。部分移动的重新整理入口按每个文件的实际结果选择源文件或已入库目标,不把成功移动的文件当成丢失。
## Alist / OpenList 存储
媒体库目录、整理来源和文件管理都可以用登记在 设置 → 媒体库与目录 →「存储」里的 Alist / OpenList(设计 `docs/design/storage-alist.md`,使用与真机验收 `docs/runbook/storage-alist.md`)。