jxxghp
|
e9de149dbf
|
refactor(transfer): complete durable recovery state machine
|
2026-08-28 00:03:36 +08:00 |
|
jxxghp
|
f134e068e7
|
refactor: normalize capability module paths
|
2026-08-27 22:20:38 +08:00 |
|
jxxghp
|
e82ce8447c
|
refactor: complete durable transfer execution settlement
|
2026-08-27 20:27:42 +08:00 |
|
jxxghp
|
a62c541ec0
|
refactor: add fenced transfer recovery leases
|
2026-08-27 14:39:38 +08:00 |
|
jxxghp
|
23bff6b2bb
|
refactor: add durable transfer planning checkpoints
|
2026-08-27 13:16:33 +08:00 |
|
jxxghp
|
aac184a1b9
|
refactor(transfer): make queue admission durable
|
2026-08-27 10:57:22 +08:00 |
|
jxxghp
|
362f606751
|
feat(governance): unify durable event retention
|
2026-08-26 12:45:44 +08:00 |
|
jxxghp
|
574c50586e
|
feat(music): 完善歌词与专辑目录整理
|
2026-08-25 21:02:26 +08:00 |
|
jxxghp
|
b914e8b6e4
|
refactor: strengthen architecture CI gates and runtime contracts
|
2026-08-25 17:02:29 +08:00 |
|
jxxghp
|
1f076eba04
|
refactor: use injected eventmanager in chain instance methods
|
2026-08-25 06:59:18 +08:00 |
|
jxxghp
|
0489bb1f43
|
refactor: remove duplicated transfer format init and identical search branches
|
2026-08-25 06:59:18 +08:00 |
|
jxxghp
|
138a48770c
|
refactor: unify durable event topics
|
2026-08-24 06:55:50 +08:00 |
|
jxxghp
|
c8ad54a190
|
refactor: unify transfer chain data ports
|
2026-08-24 04:48:06 +08:00 |
|
jxxghp
|
7f09927c47
|
refactor: own shutdown lifecycle boundaries
|
2026-08-23 20:20:26 +08:00 |
|
jxxghp
|
3a43b1be3e
|
fix: satisfy pylint changed-file gate
|
2026-08-22 22:39:42 +08:00 |
|
jxxghp
|
855e4d60f4
|
refactor: extract transfer candidate planning
|
2026-08-22 21:49:10 +08:00 |
|
jxxghp
|
7611cc8ea8
|
refactor: isolate transfer identity stage
|
2026-08-22 21:38:11 +08:00 |
|
jxxghp
|
2ebd05fab1
|
refactor: isolate transfer file item construction
|
2026-08-22 19:48:00 +08:00 |
|
jxxghp
|
1bb6e36e8c
|
refactor: complete runtime configuration migration
|
2026-08-22 19:07:07 +08:00 |
|
jxxghp
|
30ebf98fbb
|
feat(transfer): aggregate failure notifications by media
|
2026-08-22 11:46:41 +08:00 |
|
jxxghp
|
820f7e8850
|
refactor: make download and transfer events durable
|
2026-08-22 08:03:00 +08:00 |
|
jxxghp
|
8472bcff43
|
refactor: 收口 V3 分层架构与插件兼容边界
|
2026-08-18 13:22:02 +08:00 |
|
jxxghp
|
5128ae9e1e
|
refactor: 推进后端分层架构治理
|
2026-08-18 00:29:14 +08:00 |
|
jxxghp
|
54f093a099
|
Merge remote-tracking branch 'origin/v3' into v3
# Conflicts:
# app/api/endpoints/agent.py
# app/api/endpoints/anthropic.py
# app/api/endpoints/openai.py
# app/chain/__init__.py
# app/chain/message.py
# app/chain/site.py
# app/chain/subscribe.py
# app/chain/transfer.py
# app/modules/discord/__init__.py
# app/modules/qqbot/__init__.py
# app/modules/slack/__init__.py
# app/modules/telegram/__init__.py
# app/modules/wechat/__init__.py
# app/runtime/extensions/module_manager.py
# app/runtime/extensions/service_registry.py
# tests/test_agent_interaction.py
# tests/test_slash_command_interactions.py
# tests/test_web_agent_stream.py
|
2026-08-16 19:44:43 +08:00 |
|
jxxghp
|
240a4dffe6
|
refactor(schemas): 统一 message/notification 命名边界,旧名收敛至兼容映射表
- notification 域:渠道能力(MessageChannel→NotificationChannel、ChannelCapability* 迁入 notification.py)
- message 域:消息收发(Notification→Message、NotificationType→MessageType、CommingMessage→IncomingMessage、NotificationHistoryItem→MessageHistoryItem、NotificationClear*→MessageClear*)
- Agent 工具契约:send_notification_message→send_message、notification_callback→message_callback
- 源码不保留旧名物理别名,旧导入经 app/runtime/compat/manifest.py SYMBOL_ALIASES 惰性解析
- API 路径与持久化键冻结不变,前端零改动
- 新增兼容守护测试与 docs/rules/07 命名边界规范
|
2026-08-16 19:32:20 +08:00 |
|
jxxghp
|
3e417c1ac5
|
refactor(chain): _mixins.py 更名 _transfer.py,统一功能域 mixin 命名
TransferChain 的 7 个功能域 mixin 集合文件按域更名 _transfer.py,
与 _recognition/_messaging/_interaction/_music 的单域命名约定对齐;
同步更新 transfer.py 导入、9 个测试文件 patch 目标与架构文档。
另含 chain 基类导入排序优化与未使用导入清理(copy/datetime 已随
dispatch 方法迁入 _messaging.py)。
|
2026-08-16 17:25:49 +08:00 |
|
jxxghp
|
7e851dbfa7
|
refactor(chain): 处理链功能域 mixin 化,清理未使用导入并根治兼容层循环导入
- ChainBase 拆分为 RecognitionMixin/MessageProcessingMixin/NotificationMixin
- TransferChain 拆分为 7 个功能 mixin(_mixins.py),SubscribeChain 音乐订阅域拆出 _music.py
- 斜杠命令交互四件套收敛为 InteractionChainMixin 委托,会话管理器移至 application 层,chain 层不再 re-export
- 模块基础类收敛到 app/modules/_base(notification/mediaserver 语义重命名)
- 清理 app/chain/__init__.py 24 个未使用导入,修正 49 处测试 patch 目标到实际命名空间
- 兼容层 legacy 符号不再并入 __all__,根治 schemas 初始化反向拉起 application.transfer 的循环导入
- 修复 bangumi 集数为字符串时 set_bangumi_info 抛 TypeError
- 新增重复代码等架构门禁测试;capability 清单校验排除下划线内部目录
|
2026-08-16 16:30:16 +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
|
5a1808592a
|
fix(transfer): 修复未识别音乐任务登记作业因年份类型校验失败 (#6325)
|
2026-08-15 11:14:10 +08:00 |
|
jxxghp
|
bb63b40213
|
fix(transfer): 修复音乐整理因缺少 tmdb_id 字段崩溃
MusicInfo 不含 tmdb_id 等 60 个影视专用字段,整理链访问
task.mediainfo.tmdb_id 直接 AttributeError,导致无分类音乐自动
整理全部失败。
源头修复:为 domain 与 schemas 两层 MusicInfo 增加 __getattr__
兜底,缺失字段返回 None,避免下游逐点安全访问;dunder 方法
除外以保持 copy/pickle 钩子探测正常。显式声明 recognize_cache_hit
字段保留 getattr(..., False) 默认值语义。
|
2026-08-15 10:20:04 +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 |
|
InfinityPacer
|
c86307ddd1
|
fix: 收口监控测试线程并修复整理历史 lint (#6304)
|
2026-08-13 19:26:05 +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 |
|
jxxghp
|
ca32922a7f
|
refactor(media): unify media identity and chain responsibilities
|
2026-08-12 18:31:09 +08:00 |
|
jxxghp
|
8bf2f601a6
|
refactor(media): unify source identity and music browsing
|
2026-08-12 12:56:40 +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
|
07ea99442e
|
feat(music): 增强无标签音频识别,支持文件名/目录解析与专辑级匹配
- 新增 MusicNameParser:剥离曲序/碟号前缀、拆分歌手与曲名、解析专辑目录名(歌手/专辑/年份/音质)和 CD1 等碟片目录
- MetaInfoPath 与 MusicChain.read_path_meta 接入路径上下文,WAV 及标签不全的 FLAC/MP3 可补齐识别线索
- MusicBrainz 新增 match_music_album:按专辑名/歌手/曲名搜索候选发行版本,用曲目数、总时长、逐曲时长和曲名重合度打分对位
- MusicChain 新增 recognize_album_directory 目录级批量识别(按目录缓存),单曲识别未命中时自动兜底
- transfer 整理链路接入专辑匹配,命中后回填曲目身份用于重命名与刮削
|
2026-08-10 20:11:23 +08:00 |
|
jxxghp
|
393a4ca4e2
|
feat(music): complete album subscription workflow
|
2026-08-09 20:43:33 +08:00 |
|
jxxghp
|
c312c5c0e6
|
Fix 修复音乐整理
|
2026-08-09 14:32:25 +08:00 |
|
jxxghp
|
372b9bc60f
|
feat: 优先使用当前文件标签作为曲目标题,避免重名问题
|
2026-08-09 11:56:37 +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
|
05d15a04f5
|
feat(v3): add music automation workflow
|
2026-08-07 21:50:22 +08:00 |
|
jxxghp
|
759b9e47eb
|
fix(transfer): expire stale jobs and deduplicate diagnostics
|
2026-08-07 12:44:04 +08:00 |
|