19 Commits
Author SHA1 Message Date
DerrorsandClaude Code ecae44a6b4 feat: 支持仅处理订阅并完善项目使用指南
增加全局与来源级订阅过滤,统一正式处理与测试预览。修复电驴链接提示和 AI 规则生成格式兼容问题,并补齐回归测试。

重写项目介绍,补全快速开始、日常使用、常见问题和文档导航。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-11-01 11:22:51 +08:00
DerrorsandClaude Opus 5.5 24bd27800d fix: Telegram 断开期间发不出的告警,恢复后补发并注明发生时间
告警与恢复通知不再按次数放弃(原来约 7 分钟后放弃),24 小时内每分钟重试;晚于发生 2 分钟以上才送达的告警末尾注明发生时间。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 14:10:13 +08:00
DerrorsandClaude Opus 5.5 008daf2b14 fix(115): 「操作尚未执行完成」不再被当成风控与令牌失效,风控冷却跨重启保持
- 错误码按完整数字匹配:回应里的 990009 不再被当成令牌失效的 99,写操作也就不会因此改走 cookie 再发一次
- 990009 不单凭错误码判风控,按说明判断(过于频繁才算)
- 115 说上一个操作尚未执行完成时,这次写请求被推迟、没有执行:抛 StorageBusy,30 秒后自动重试;
  放弃转存遇到时由 Worker 延后再执行,不再转人工
- 风控冷却的结束时间存进数据库,主进程重启后接着冷却;启动时已没有冷却就清掉残留的告警,
  否则它一直显示生效中,下次真的触发风控也不会再提醒
- 文档与 CHANGELOG 同步

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 19:39:23 +08:00
DerrorsandClaude Opus 5.5 71e40746a1 fix: 转存后一个文件都没到时提前提醒,并记下 115 对转存请求的回应
- 自动复查改为比较每次的核验结果:连续 3 次一样(一个文件都没到、只到了一部分、到的文件对不上)就提前提醒一次,
  后台继续复查;以前一个文件都没到时要等 24 小时才提醒
- 提醒写明多次复查的结果,附「核验转存 / 放弃并删除」按钮
- TransferUncertain 新增可选的 response:115 接受了转存请求、文件却迟迟没到时带上它当时的回应,内核写进任务轨迹
- 架构、部署、插件指南与 CHANGELOG 同步

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 19:16:14 +08:00
DerrorsandClaude Opus 5.5 020dd19ef2 fix: 入库去重按作品区分,同名的不同作品不再被当成已入库
- 新增 core/works.py 统一作品身份:两边都有 TMDB ID 时按类型与 ID,否则按规范片名与年份;都不知道时按同一部处理,
  宁可转人工也不重复转存
- 内容级去重键改为「目标:规范片名|年份|TMDB|Sxx|Exx」;转存前与发送前查已入库的集都按作品比较
- 转存占位只按规范片名:同名的不同作品依次转存,身份判断不准时也不会同时转存同一集
- 已入库集数改为按作品汇总:订阅放行、追剧订阅页、追更巡检、待审批建议与缺集统计不再混合同名作品的集
- 数据库迁移 v2:按入库任务的快照补上已有去重记录的年份与 TMDB ID,转存中的占位改用新格式
- 文档:架构、插件指南(stored_series)与 CHANGELOG 同步

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 10:20:51 +08:00
DerrorsandClaude Opus 5.5 a578a9e84c docs: 文档与实现对齐
- 架构:状态机(人工忽略为 skipped)、按版本的配置快照、补拉、StorageBusy 与风控暂停
- 部署:没设密码只允许本机、匿名可访问的接口、按 IP 限流与可信代理、健康检查;配置参考:订阅移出配置、密钥随地址清除、补全环境变量
- 插件指南:存储 Provider 契约、requires_storage、能力查询与 Services、UsesAI
- README 中英:入库与通知示例按当前默认命名,去掉 chown 步骤,状态改为 Beta;快速开始的界面文案对齐
- CONTRIBUTING:代码与测试结构、依赖锁定;CHANGELOG [Unreleased] 精简

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-24 23:15:11 +08:00
DerrorsandClaude Opus 5.5 47f1e799b4 feat: 日常操作基本都能在 Telegram 上完成,来源可配置识别规则
- Telegram:卡片上修正识别或重新识别;/pending、/failed 点开卡片处理,可一键全部批准或忽略;
  /subs 管理订阅与订阅建议,/ignored 恢复接收;命令登记到菜单,各命令回复重新排版
- 追更提醒可把缺的集标为不用等或不再提醒;订阅自动结束后可继续订阅;批准到第 3 条时建议订阅
- 日报与追更提醒重新排版,加类型图标与入库集号;审批卡片季集放在片名后,转存与忽略放第一行
- 每个来源可配置识别规则(读取频道最近消息或粘贴样例,AI 起草后试跑);AI 识别参考规则结果,不可用时按规则兜底
- 识别方式与转存方式只在来源卡片上设置;识别测试、命名预览移到对应设置处,按未保存的设置预览
- 对话助手与 MCP 新增取消/继续订阅、恢复接收、修正识别、重新识别
- 另含:卡片改用横版剧照与逐行字段、不再接收作品、审批选目录、部分转存可继续或放弃等

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-24 16:11:44 +08:00
DerrorsandClaude Opus 5.5 66a15d9bc0 feat: 通知附海报、可清空日志,命名变量与 MoviePilot 一致
- 待审批与入库通知附 TMDB 海报,显示评分、原名、题材、地区与简介;海报发送失败时退回纯文字
- 运行日志页可清空日志,含轮转留下的旧文件
- 命名模板变量改为 MoviePilot 的 videoFormat/videoCodec/audioCodec/fileExt/part 等,可直接沿用其重命名格式;
  默认文件名带清晰度与编码,缺年份时不再出现空括号
- 冲突判断从「完全同名」改为同一作品同一集,文件名带清晰度后同集不同版本也走冲突策略;并存只在真正重名时加序号
- 命名预览只需贴文件名:按 TMDB 识别片名、年份与 tmdbid(英文文件名也能取到中文片名),自动生成预览;
  文件名误贴进片名框时自动挪回
- 视频后缀判断移到 core/media 供转存与整理共用

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-23 15:49:36 +08:00
DerrorsandClaude Opus 5.5 3700aff343 feat: 媒体库整理合并选目录与整理,插件按目录组织,清理旧版兼容
媒体库整理
- 「二级分类路由」并入「媒体库整理」:转存前选目录、转存后整理,共用开关与设置
- 目录方式:二级分类 / 按媒体类型 / 不分类;按媒体类型的文件夹名可改
- 二级分类规则随插件发布(category.yaml,MoviePilot 式顺序匹配,增加剧集兜底),管理台只读
- 两种目录方式都以流程图展示,按媒体类型的文件夹名在图上修改

插件结构
- 每个插件一个目录;内置插件的默认设置与校验在插件的 settings.py,内核按目录调用
- 插件动作 ui_actions + 通用接口 /api/extensions/<名>/actions/<动作>,插件不依赖 Web 框架
- 前端插件专用界面移到 web/src/plugins/<名>/,按 config_type 登记
- storage_provider 统一校验,内核不再写死媒体库整理

管理台
- 插件页「运行概览」、统计页内部标签、运行状态徽标、标题与副标题「网盘转存助手」
- 设置页两列卡片不留空、下拉框直接选中默认项、统计页 echarts 按需引入(约 1 MB → 490 KB)

清理
- 移除启动迁移与 .env 导入、旧配置写法与 routing、旧凭证文件、旧去重键与旧中断状态
- 数据库结构迁移重置为单一基线;不认识的顶层配置项直接报错
- 删除未使用的代码与组件;修复测试警告;CI 固定 ubuntu-24.04

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-23 11:51:17 +08:00
DerrorsandClaude Opus 5.5 9431879d7c docs: 重新整理文档并重新设计 README
- README 重新设计:logo 与流程插图(浅色 / 深色两套)、亮点卡片、Telegram 卡片示例、入库目录示例、文档导航
- 新增 docs/agents.md:MCP(HTTP / stdio、令牌、工具一览)与控制 Bot 的对话操作
- deployment.md 改为「部署与运维」:访问与安全、升级回滚、源码构建、备份、健康检查与故障处理;首次部署并入快速开始
- 快速开始按「准备 → 启动 → 设置 → 登录 → 来源 → 第一条资源」重写,页面与按钮名称与管理台一致
- 架构图改用 Mermaid,状态机按代码补全转换
- 去掉过时内容:配置与插件的旧版本迁移说明、验证范围、SECURITY 中的环境变量密码、DISCLAIMER 中的旧配置键
- compose.yaml 不再挂载只用于 0.2.x 迁移的 ./deploy/config;代码结构移到 CONTRIBUTING

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-20 23:19:43 +08:00
DerrorsandClaude Opus 5.5 ea83ef438e refactor: 移除 STRM 插件
先完善转存与整理主链路,STRM 之后再另行考虑:
- 删除 STRM 生成插件、签名模块与 /api/strm 播放跳转接口,不再生成 data/strm.secret
- 旧配置里的 strm 设置读取时丢弃;.env 的 REELAY_STRM_SECRET 不再导入,启动日志提示可删除
- 同步更新示例配置、文档与测试

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-20 22:24:22 +08:00
DerrorsandClaude Opus 5.5 b6f35dbc2b feat: 配置在管理台修改并与文件同步,按系统 / 插件分组,运行文件固定在 data/
- 配置文件固定为 data/config.yaml,分为 system(系统配置)与 plugins.<插件名>(enabled 开关与插件设置);
  organize / dir_router / strm / daily_report / episode_tracker 归入对应插件,订阅移到 system.subscriptions。
  插件 ui_fields 改为相对 plugins.<名> 的路径,新增 runtime.plugin_config
- 原来只能写在 .env 的设置移进系统配置并提供表单:AI 接口地址与模型、TMDB 地址、Telegram 机主 ID 与补拉、
  并发与日志级别、115 限速与风控冷却;设置页新增「AI 与 TMDB」「Telegram」「运行与安全」,115 页加请求限速
- 密钥(AI / TMDB key、Telegram API、控制 Bot Token、Web 密码)在管理台设置,单独存 data/secrets.json
  (权限 600,按修改时间热加载),页面与接口只显示是否已设置;Web 密码只存 PBKDF2 摘要,修改需当前密码
  并让其他会话失效。AI 与 TMDB 的地址和密钥改了立即生效
- 数据库、会话、115 凭证、STRM 密钥、日志、外部扩展目录固定在 data/;LLM 重试、凭证探活等内部参数写死;
  环境变量只剩 Web 监听地址、端口与 MCP 只读开关。Docker 只挂数据卷 /app/data
- 首次启动迁移(core/bootstrap.py):旧位置的 config.yaml 移进 data/,旧结构先备份再改写;.env 旧变量
  按值摘要只导入一次(管理台改过的不会被覆盖回去),115 cookie / token 与 STRM 密钥写入各自文件;
  数据库在别处时报错给出移动命令
- 测试只有在入口程序加载后才读密钥文件,不会读到本机真实密钥;create_app 改为传 data_dir

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-20 10:50:28 +08:00
DerrorsandClaude Opus 5.5 544e0f4cf8 docs: 设计原则更新为「AI 提议,事实源校验,人工裁决,裁决结果反馈给 AI」
- 架构设计:更新第一条原则,新增「AI 与规则的分工」:逐项说明各 AI 能力做什么、由谁把关,
  以及裁决样本、调用记录与本地评测
- 配置参考:ai、release 配置段,filters 的 allow / deny / min_resolution,decision 的 subscription,
  订阅的 tmdbid / auto,daily_report.narrative;洗版改按版本偏好比较
- 插件开发指南:版本信息字段、三个内置决策器的叠加关系、扩展如何通过 core/ai.py 调用 AI
- 示例配置、README、快速开始与 CHANGELOG 同步

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-20 02:21:19 +08:00
DerrorsandClaude Opus 5.5 bd9f0521f4 feat: 没写集数的剧集读取分享补全季、集与大小
消息没写集数的剧集(如整季合集),识别后由新的 share_probe 扩展只读列出 115 分享,
用与转存相同的选集规则得到实际的季、集与总大小,记在 meta["share"],不改识别结果,
转存时仍以那时的分享清单为准。待审批显示这些信息并注明「集数来自分享」;分享失效
或访问码错误、多季合集、文件名无法识别、内容过多未读完时提前标出。

为避免触发 115 风控:同一时间只读一个分享,两次读取至少间隔 2 秒,单个分享最多列
20 个目录;临时错误只记录,下次启动时重读。已有的待审批条目在启动时补读一次。

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 23:39:30 +08:00
DerrorsandClaude Opus 5.5 c6f156abe1 feat: 配置 TMDB 后启动时为已有任务补全元数据与海报
配置 TMDB 之前识别的任务没有规范元数据,管理台只能显示文字封面。现在主进程启动时
对声明 needs_refresh 的 after_parse Hook 补跑一次(不重新调用 LLM):待审批任务整体
采用新结果并重算置信度,已入库任务只在片名不变时补海报。只更新快照、不改更新时间,
审批超时与入库统计不受影响;期间被其他写入改过的任务放弃本次补全。

文档补充 REELAY_TMDB_BASE_URL:国内 api.themoviedb.org 常被 DNS 污染,可改用
官方备用域名 api.tmdb.org。

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 22:38:28 +08:00
DerrorsandClaude Opus 5.5 a3abbcf0d7 docs(plugins): 补充元数据补全约定
说明 tmdb_enrich 写入 parsed 与 meta["tmdb"] 的字段、各自被谁读取(去重、分类、
命名、追更、海报、置信度),以及以补充或替代方式接入其他数据源的做法与示例。

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 21:17:03 +08:00
DerrorsandClaude Opus 5.5 9dda7bf47f fix: 审批手动选择的目录优先于分类,日报等补拉完成再发,AI 解析与 TMDB 显示调用结果
- 审批时手动选择的目录会被二级分类覆盖。现在手动选择优先:与分类结果不同时直接
  存入所选目录,不再套用分类子目录;与分类根目录相同则保留子目录。管理台目录下拉
  默认「自动」并显示实际去向(如「剧集/国产剧集」),总览「转存」与任务详情不再
  隐式指定目录;Telegram 审批卡片同样显示实际去向。任务详情「重新整理」不改目录
  时不再丢失分类子目录。
- 启动时日报在补拉的消息入库之前就已发出,「新收」少算停机期间的消息。现在等消息
  源补拉完、补拉的消息解析完再发,最多推迟 15 分钟。
- 「AI 解析」「TMDB 元数据」始终显示「已填写,待验证」。新增 runtime.observe 记录
  真实调用结果,连接状态显示最近一次结果,失败时附带错误类型。

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 20:58:13 +08:00
DerrorsandClaude Opus 5.5 7610a871ed feat(web): 管理台重新设计
- 青绿品牌色 + 浅色侧栏,完整深色模式(默认跟随系统),导航重新分组,
  手机端顶栏、抽屉与底部标签栏;新增 DESIGN.md 与通用组件(components/app)
- 新增「待审批」收件箱:海报、季集、清晰度、置信度与原因,逐条或批量
  转存 / 忽略并可改投目录;「待人工」集中处理需核验或整理失败的任务
- 重做总览、任务、媒体库(海报墙)、统计、设置、插件、识别测试、命名预览、
  115 目录、运行日志、登录与错误页;任务详情改为侧边抽屉
- 每个标签页共用一条 SSE 连接,进入往返缓存时释放,避免占满浏览器连接数
- 统计图表颜色经色盲安全校验并随主题切换;设置与工具页按需加载,
  主包 376 KB
- 移除样式中残留的内部字体名;文档与 CHANGELOG 同步新版界面

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 18:17:33 +08:00
DerrorsandClaude Opus 5.5 eb39a42317 docs: 完善开源文档,发布 0.2.0
- README 重写为项目入口,设计细节拆到 docs/:快速开始、配置参考、
  插件开发指南、架构与可靠性设计
- 新增 Webhook 通知与低画质拦截两个示例插件及其测试
- 新增 CHANGELOG、CONTRIBUTING、SECURITY 与 Issue/PR 模板
- 修复外部插件声明跨 discover() 调用泄漏;存储 save/reconcile 也在
  任务作用域内执行,扩展可使用 runtime.services()
- 版本号统一为 0.2.0(Python 包、管理 API、MCP、前端)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 16:43:18 +08:00