jxxghp
|
4345fcfa22
|
refactor(chain): chain 与 module 仅经 run_module 契约互联,实现模块内容封闭
- mTorrent 字幕链接解析下沉为 IndexerModule.site_subtitle_links,subtitle 模块自行跳过 API 站点
- TMDB/MusicBrainz 识别缓存管理改为模块方法(tmdb_cache_*/music_cache_*)经 run_module 分发
- WechatClawBot 客户端查找/临时客户端/缓存迁移内聚为 wechatclawbot_* 模块方法,
chain 移除 WechatClawBot 类与 ModuleManager 内省
- LISTENBRAINZ_* 常量迁至 schemas/types.py,模块与链层再导入保持兼容
- TMDbException 升为 schemas/exception.py 跨层契约,vendored 异常保持类身份一致
- 架构守护测试新增 test_chain_does_not_import_module_internals(共 18 项)
- 文档同步:chain->module 仅允许 run_module 分发,直接导入禁止
|
2026-08-16 05:25:28 +08:00 |
|
jxxghp
|
02f0dd0b9a
|
refactor(architecture): 修复模块依赖违规并强化架构守护
- 字幕编排上移 DownloadChain.download_site_subtitles,SubtitleModule 仅保留站点链接解析
- TransferChain.recommend_name 上移 TV episodes_info 获取,filemanager 模块不再导入 TmdbChain
- endpoint 穿透修复:WXBizMsgCrypt3 迁至 adapters/external/wechat_crypt.py;
music/tmdb 缓存管理、listenbrainz 常量、TMDbException、WechatClawBot 辅助统一经 chain 包装
- RuleParser 与 builtin_rules 合并为 application/filter_rules.py;
fsproxy/fsworker 迁至 adapters/system/
- chain/__init__.py 删除 qbittorrentapi/transmission_rpc 导入,消除后端协议类型泄漏
- 架构守护测试新增三项检查:模块间隔离、入口层穿透、下载器 SDK 泄漏
- 文档同步:05-architecture.md 记录 DB/Oper 聚合例外与迁移文件位置,AGENTS.md 更新所有权表
|
2026-08-16 04:59:17 +08:00 |
|
jxxghp
|
dd38c16400
|
refactor(messaging): 拆分用户交互模块到 application/messaging 层
- 新增 application/messaging 交互层:router.py 统一会话优先级与回调分发,
site/subscribe/skill/media/plugin 各交互状态与视图从 Chain 迁出
- MessageChain 改为通过 InteractionRouter 派发文本会话与按钮回调,
新增结构化 callback_data 通道(兼容 CALLBACK: 文本前缀)
- Transfer 失败重试/AI 接管回调归入 TransferChain
- MediaInteractionChain 拆出为 app/chain/interaction.py(旧路径保留兼容别名)
- WebAgent Endpoint 去重,统一使用 agent.py 回调协议函数
- 删除 app/chain/skills.py(交互逻辑并入 SkillInteractionHandler)
- 同步更新架构文档与测试,全量 4476 通过
|
2026-08-15 16:36:39 +08:00 |
|
jxxghp
|
a8dc6e9973
|
fix(servarr): Seerr 新增剧集订阅缺 tmdbId 或空季列表时无法创建订阅 (#6315)
Seerr 的 Sonarr 兼容请求体只携带 tvdbId、不携带 tmdbId,且季列表由
lookup 返回的季列表构造;lookup 季列表为空时请求体季列表为空,旧逻辑
直接返回成功但不创建任何订阅,导致 Seerr 显示请求正常而 MP 未收到订阅。
- 新增剧集订阅时按 tvdbId 补全媒体身份,识别失败返回 500 而非静默成功
- 请求体季列表为空时按已识别季集兜底,识别不到季默认第 1 季
- lookup 在 TVDB 无可用季信息时按 TMDB 季集兜底返回季列表
- 新增回归测试覆盖上述场景
|
2026-08-15 10:56:50 +08:00 |
|
jxxghp
|
96118e73e7
|
refactor(string): split utilities by responsibility
|
2026-08-15 08:03:55 +08:00 |
|
Aqr-K
|
8a11214a43
|
refactor(db): 修复异步连接池无界增长,并完成 SQLAlchemy 2.0 迁移与分层归位 (#6320)
|
2026-08-15 06:58:38 +08:00 |
|
jxxghp
|
369d7d6448
|
refactor: reorganize backend module boundaries
|
2026-08-14 19:53:33 +08:00 |
|
jxxghp
|
7b3444c366
|
refactor backend module architecture
|
2026-08-14 15:45:38 +08:00 |
|
jxxghp
|
b4863a6550
|
feat(media): support extensible media sources
|
2026-08-13 13:26:17 +08:00 |
|
InfinityPacer
|
591a1d420d
|
fix(agent): close secret confirmation delivery gaps (#6285)
|
2026-08-13 08:20:14 +08:00 |
|
 Aqr-KandAqr-K
|
a2e70b443d
|
fix(monitor,transfer): 修复 FUSE 挂载无响应导致的监控冻死、整理链锁死与漏件 (#6276)
* wip(v3): 移植监控与整理韧性修复到 v3 基线
包含:监控看门狗隔离/挂载探测、整理队列持久化、文件系统子进程代理、
写入原子化。迁移重挂到 v3 链 8a4c7e1d2f90 -> 7f5c1d2e3a4b -> e3d9f4b7c806。
tmdb 相关测试尚未通过,待定位。
* fix(v3): 修正移植引入的 16 项测试失败
- poller.py:合并时我方保留的行仍用旧变量名 merged_snapshot,而 v3 已统一
改名为 current_snapshot,导致 NameError 被外层 except 吞掉、快照从未保存
- smb.py:采纳 f-string 拆分写法,恢复 Python 3.11 可解析
- dispatcher 测试:历史查重由 _should_skip_by_history 统一承担,mock 点随之调整
- tmdb 缓存测试:补充 v3 新增的 media_source/media_id 字段
- tmdb 重试测试:为 fake 补充 match_multi/async_match_multi
尚余 3 项与 v3 识别流程的连接失败处理有关,待单独判断。
* fix(v3): 测试适配 v3 的 media_source/media_id 重构
v3 将媒体标识从 tmdbid 统一重构为 media_source + media_id,recognize_media
的 tmdbid 参数已被 **kwargs 静默吞掉——传了也不生效,流程会误降级到名称搜索。
tmdb 重试用例改用新参数后恢复正确路径。
同时修正 fake 的 match_multi 语义:真实实现(tmdbapi.match_multi)吞掉所有
异常并返回 None,连接失败与「未找到」在该路径上本就不可区分,fake 需保持一致。
至此移植引入的 19 项失败全部清零。
---------
Co-authored-by: Aqr-K <Aqr-K@users.noreply.github.com>
|
2026-08-13 08:19:54 +08:00 |
|
InfinityPacer
|
a6e8ba8b57
|
feat(agent): 敏感设置读取增加宿主二次确认 (#6283)
* feat(agent): require confirmation for secret settings
* fix(agent): preserve history during secret confirmation
|
2026-08-13 08:10:32 +08:00 |
|
jxxghp
|
f17b0b1bb9
|
fix(api): restore successful query response semantics
|
2026-08-13 07:20:49 +08:00 |
|
jxxghp
|
00607bf5b3
|
fix(api): restore recommendation response compatibility
|
2026-08-13 05:03:42 +08:00 |
|
jxxghp
|
baf8850d63
|
refactor(api): standardize responses and restore media config contracts
|
2026-08-12 23:15:13 +08:00 |
|
jxxghp
|
ca32922a7f
|
refactor(media): unify media identity and chain responsibilities
|
2026-08-12 18:31:09 +08:00 |
|
jxxghp
|
cbb969e0ff
|
fix(music): default Douban explore to categories
|
2026-08-12 13:13:54 +08:00 |
|
jxxghp
|
8bf2f601a6
|
refactor(media): unify source identity and music browsing
|
2026-08-12 12:56:40 +08:00 |
|
jxxghp
|
d1028a6902
|
feat(music): add TheAudioDB and Douban discovery
|
2026-08-12 10:50:13 +08:00 |
|
jxxghp
|
97dba2a8ae
|
feat: unify media recognition and music lifecycle
|
2026-08-12 06:51:58 +08:00 |
|
jxxghp
|
3f1b0cdb05
|
feat(music): 支持多源识别与元数据刮削
|
2026-08-11 23:34:00 +08:00 |
|
jxxghp
|
7597c21872
|
feat(music): 自动整理时媒体类型判别
|
2026-08-11 19:08:05 +08:00 |
|
jxxghp
|
d0edcfa7bb
|
feat(music): 音乐订阅刷新与识别缓存
|
2026-08-11 11:39:08 +08:00 |
|
jxxghp
|
a15b8542ea
|
feat(music): 识别接口支持 MusicBrainz 数据源
- 选择 musicbrainz 数据源时非音频标题按音乐元数据解析
- 支持 艺术家 - 曲名 格式拆分艺术家后检索 MusicBrainz
|
2026-08-10 23:30:57 +08:00 |
|
jxxghp
|
a322c4c375
|
feat(media): 媒体信息补充 TVDB slug 字段,修复 TheTvDb 数字 ID 链接 404
TVDB 已弃用数字 ID 直达 URL,仅 slug 形式可访问。详情接口在电视剧有 TVDB ID 时通过轻量 get_series 接口获取 slug,并随 MediaInfo 合并下发。Closes jxxghp/MoviePilot-Frontend#643
|
2026-08-10 21:41:04 +08:00 |
|
jxxghp
|
4a14af706c
|
feat(dashboard): 媒体统计新增音乐本月新增数量
- monthly_media_statistics 纳入音乐整理记录,按曲目计数并按媒体 ID 去重
- Statistic 新增 music_count_month 字段,仪表板统计接口一并返回
|
2026-08-10 20:33:25 +08:00 |
|
jxxghp
|
75e56d8e9a
|
feat(music): add audio quality workflow
|
2026-08-10 10:23:02 +08:00 |
|
jxxghp
|
5572b2dc64
|
fix(music): separate album and recording subscriptions
|
2026-08-09 23:30:31 +08:00 |
|
jxxghp
|
393a4ca4e2
|
feat(music): complete album subscription workflow
|
2026-08-09 20:43:33 +08:00 |
|
jxxghp
|
36666313b7
|
feat: 按媒体类型筛选搜索站点
|
2026-08-09 18:12:29 +08:00 |
|
jxxghp
|
8d71bcbddd
|
fix: 修复音乐搜索统一入口参数名不匹配导致 500
/media/search?type=music 调用 MusicChain.async_search 时应传 query 关键字参数,
原实现误传 title 导致 TypeError;补充端点回归测试。
|
2026-08-09 10:54:11 +08:00 |
|
jxxghp
|
60aa762ca1
|
feat: 音乐识别与刮削统一入口整合
- 音乐识别统一走 recognize_media,移除 MusicChain.recognize/async_recognize 及 /music/search 独立端点
- 音乐刮削收拢到 MediaChain.scrape_music_metadata,消除 MusicChain 对 MediaChain 的嵌套引用
- MetaInfo/MetaInfoPath 增加 force_video 参数,影视附加音轨保留季集归属
- 整理、订阅、搜索、API 层音乐识别入口全部统一
|
2026-08-09 10:06:54 +08:00 |
|
jxxghp
|
7797d34c48
|
feat: 识别文件类型:音乐
|
2026-08-08 23:38:34 +08:00 |
|
jxxghp
|
415ccda6a2
|
feat(v3): enhance music server integration with Navidrome support
|
2026-08-08 12:57:09 +08:00 |
|
jxxghp
|
c356d47807
|
fix(v3): complete music recognition and scraping
|
2026-08-07 23:46:54 +08:00 |
|
jxxghp
|
05d15a04f5
|
feat(v3): add music automation workflow
|
2026-08-07 21:50:22 +08:00 |
|
jxxghp
|
7985268f10
|
fix(agent): emit web tool status immediately
|
2026-08-07 13:01:47 +08:00 |
|
jxxghp
|
865635c59d
|
perf(agent): optimize web SSE streaming
|
2026-08-07 12:45:36 +08:00 |
|
jxxghp
|
5654512d41
|
fix(api): return avatar filename in data
|
2026-08-06 23:36:34 +08:00 |
|
jxxghp
|
cf6c73d85b
|
fix(agent): persist streamed message order
|
2026-08-06 22:24:54 +08:00 |
|
jxxghp
|
987c1722d7
|
feat(api): add unified v2 response layer
|
2026-08-06 17:32:33 +08:00 |
|
jxxghp
|
4abae809c2
|
fix: preserve parent year in media recognition
|
2026-08-06 12:45:48 +08:00 |
|
jxxghp
|
7fe7be6d71
|
feat(plugin): sync default markets from wiki at release
|
2026-08-06 09:15:30 +08:00 |
|
jxxghp
|
4b1df72a4a
|
refactor(cache): simplify recognition cache persistence
|
2026-08-06 07:48:43 +08:00 |
|
jxxghp
|
a23ac6c56d
|
feat: 支持模型服务端联网搜索
|
2026-08-05 19:19:26 +08:00 |
|
jxxghp
|
7a2b003d02
|
fix(media): restore legacy discover detail fallback
|
2026-08-05 07:27:44 +08:00 |
|
jxxghp
|
52ca375f3d
|
fix(history): stabilize download history pagination
|
2026-08-03 08:45:35 +08:00 |
|
thelinyue
|
702801d0dc
|
fix(subscribe): seerr 端点电影订阅不传季号,避免误判为剧集(S00) (#6226)
|
2026-08-02 21:06:00 +08:00 |
|
jxxghp
|
48852350a0
|
feat(plugin): add centralized rating APIs
|
2026-07-31 13:41:29 +08:00 |
|
jxxghp
|
a23fce1491
|
feat: 统计共享媒体识别命中次数
|
2026-07-30 17:50:16 +08:00 |
|