Aqr-K
bcbf79f030
fix(media): preserve recognition and rule mutation identities ( #7144 )
...
* fix(media): preserve recognition and rule mutation identities
* test: cover typed classification facts with alias policies
---------
Co-authored-by: jxxghp <jxxghp@gmail.com >
2026-10-23 07:33:27 +08:00
jxxghp
6d4ce83837
fix(types): clear host mypy debt and prevent typing regressions
...
严格检查全部宿主源码,清零类型错误预算并移除按模块类型豁免。
按原因、所属方法、错误码及语法指纹锁定必要兼容例外和站点类型桩,
CI 阻断新增忽略、检查范围退化、本地桩替代真实接口及新的类型错误。
修复空值、异步和供应方类型边界,保持插件与 API 兼容合同,
并补充存储、订阅、通知、Agent 和工作流边界的回归覆盖。
2026-10-21 22:03:18 +08:00
jxxghp
c6cfef198c
fix(douban): normalize person search image URLs
2026-10-20 07:47:28 +08:00
jxxghp
60d2fe418a
fix(douban): preserve recommendation lists and page model contracts
2026-10-18 15:08:37 +08:00
DDSRem
e0642eafa7
chore(types): reduce v3 host mypy debt ( #7057 )
...
* chore(types): clear AniList endpoint mypy debt
* chore(types): clear Douban endpoint mypy debt
* chore(types): clear recommendation endpoint mypy debt
* chore(types): clear subscription notification mypy debt
* chore(types): clear SDK string compatibility mypy debt
* chore(types): ratchet v3 host mypy across remaining files
* chore(types): reduce v3 host mypy debt and retire ledger
* chore(types): reconcile host snapshot with upstream HTTP pool
* test(types): cover host paths exposed by mypy cleanup
2026-10-18 09:37:49 +08:00
Qinghe Li
85b367527e
fix(scraper): align built-in NFO results with text contract ( #7049 )
...
* fix(scraper): return NFO text from built-in providers
* test: cover type migration boundaries
* fix: silence dynamic import lint diagnostics
* test: keep coverage policy stable for nfo repair
* fix: preserve merged scraper documentation during conflict repair
---------
Co-authored-by: Derrors <derrors@local>
Co-authored-by: jxxghp <jxxghp@gmail.com >
2026-10-17 19:53:06 +08:00
DDSRem
2de976f6b3
Merge pull request #7050 from DDSRem-Dev/codex-comment-migration
...
docs: 统一全项目中文注释和结构化契约说明
2026-10-17 19:26:29 +08:00
jxxghp
cefb0b529e
fix(types): preserve Douban module response fallbacks
2026-10-17 16:24:41 +08:00
jxxghp
3f8a956321
fix(types): type Douban API response boundaries
2026-10-17 16:23:13 +08:00
cosini
e36884766c
feat(douban): 新增豆瓣短评与影评接口
...
* feat(douban): 新增豆瓣短评与影评接口
* fix(douban): satisfy comment endpoint CI gates
---------
Co-authored-by: jxxghp <jxxghp@gmail.com >
2026-10-17 12:31:41 +08:00
jxxghp
8dfe6db2b5
refactor(types): expose actual Douban NFO byte output
2026-10-17 00:41:43 +08:00
jxxghp
f9fc8858a1
refactor(types): define Douban NFO and image contracts
2026-10-17 00:41:39 +08:00
freeman
f3ad81b39e
style: apply safe ruff auto-fixes and exempt startup late imports
...
Run `ruff check app tests scripts --fix` with the configured rule set
(E4/E7/E9/F/I): import sorting (I001), f-strings without placeholders
(F541), lambda/variable/unused-import cleanups that ruff marks safe.
Nine files whose only ruff debt sits next to pre-existing pylint
import-resolution errors (lazy exports, sys.path script imports) or
whose "unused" imports are reached through attribute access by tests are
left untouched so the changed-file pylint gate and the benchmark tests
stay green; their diagnostics remain in the baseline.
app/startup/lifecycle/__init__.py and app/main.py import business
modules after cache composition, import-path and stdio setup on purpose
(the source comments document the contract), so declare E402
per-file-ignores for them instead of adding per-line noqa.
Ruff ratchet watermark drops from 498 to 100; sync the baseline fixture
and the optimization checklist figure.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-09 13:29:09 +08:00
freeman
55d3081497
chore(douban): drop duplicated apikey literal from __post docstring
...
The POST helper docstring embedded a sample request that repeated the
_api_key2 constant as a hard-coded literal. Keep the key in one place
and describe the request shape instead.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-09 11:34:32 +08:00
jxxghp
3a5486ae0d
feat(music): add bounded source fallback and verified album matching
2026-09-30 10:50:09 +08:00
jxxghp
554e7388b3
fix(music): keep shared search signatures compatible
2026-09-10 10:16:09 +08:00
jxxghp
a01a941c11
fix: 对齐音乐备选来源匹配并校验录音版本证据
2026-09-06 04:06:00 +08:00
jxxghp
71147c1d96
feat(classification): support multi-source media rules
2026-09-03 11:51:18 +08:00
jxxghp
0c05956814
refactor(architecture): enforce module naming policy
2026-08-29 22:17:17 +08:00
jxxghp
094621f5b8
refactor(parity): unify message and douban decisions
2026-08-29 21:50:09 +08:00
jxxghp
840153e7c7
refactor(modules): unify music catalog decisions
2026-08-29 20:47:29 +08:00
jxxghp
92e745fc97
refactor(architecture): split chain owners and close runtime boundaries
2026-08-28 22:26:19 +08:00
jxxghp
9dbe424c3d
refactor(config): retire RuntimeSettingsCompat host usage
2026-08-26 15:55:21 +08:00
jxxghp
cdab54254d
fix(architecture): satisfy ruff/mypy ratchets for media auxiliary
...
e02418bac 把新导入放在 settings = RuntimeSettingsCompat() 之后,
导致 5 个模块 E402 诊断超出只降不增基线;同时 media_auxiliary
把工厂函数 MetaInfo 误用作返回类型标注。将新增导入移回赋值语句
之前,返回类型修正为 MetaBase。
2026-08-26 14:33:36 +08:00
jxxghp
df2ce103e1
fix(architecture): move media auxiliary mixin into _base package
...
media_auxiliary 作为模块共享 Mixin 放在 app/modules 顶层会被视为
业务模块,导致 anilist/bangumi/douban/imdb/themoviedb 跨模块直接
依赖,违反模块间禁止导入的架构约束。移入模块共享样板包
app/modules/_base(模块发现跳过)并同步依赖基线。
2026-08-26 14:07:08 +08:00
jxxghp
e02418bace
feat(media): aggregate aliases from enabled metadata sources
2026-08-26 13:45:03 +08:00
jxxghp
4641db7f5b
refactor: route metadata module settings through runtime
2026-08-23 03:01:29 +08:00
InfinityPacer
d131f8d571
feat(network): migrate async HTTP client to HTTPX2 ( #6394 )
2026-08-22 16:48:23 +08:00
jxxghp
5128ae9e1e
refactor: 推进后端分层架构治理
2026-08-18 00:29:14 +08:00
InfinityPacer
24671f8f18
refactor(runtime): lazily activate host modules ( #6331 )
2026-08-16 16:07: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
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
d1028a6902
feat(music): add TheAudioDB and Douban discovery
2026-08-12 10:50:13 +08:00
jxxghp
a1dd259143
feat(media): refine primary-source recognition
2026-08-12 08:33:10 +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
d7cf853bc8
fix(search): 支持单次搜索启用多个媒体数据源,合并显示所有源结果 ( #6270 )
...
- 新增 is_media_source_enabled/is_media_source_selected,请求级 source 支持逗号分隔多数据源,缺省回退全局 SEARCH_SOURCE 配置
- 四个媒体模块的搜索/人物/合集方法统一接入多源判断
- 补充多数据源搜索相关测试
2026-08-11 21:06:52 +08:00
jxxghp
4b1df72a4a
refactor(cache): simplify recognition cache persistence
2026-08-06 07:48:43 +08:00
jxxghp
fb32c59713
feat: add AniList rankings and discovery
2026-07-22 12:53:58 +08:00
jxxghp
e3f80af74f
feat: expand metadata sources and media server sync ( #6129 )
2026-07-21 11:34:18 +08:00
InfinityPacer
5588e37c6d
fix: preserve season zero semantics ( #6150 )
2026-07-20 06:55:23 +08:00
jxxghp
96ef431efc
feat: 支持豆瓣识别缓存管理
2026-07-13 12:33:56 +08:00
InfinityPacer
647c04956d
fix: preserve subscribe season zero targets ( #5983 )
2026-06-22 06:36:03 +08:00
jxxghp
00fc8b2f53
chore: update text processing dependencies
2026-05-23 12:18:59 +08:00
jxxghp
2831eecbeb
perf: optimize media recognition internals
2026-05-15 13:37:36 +08:00
jxxghp
94d7e4385e
fix: update shared recognize cache flow
2026-05-08 21:21:01 +08:00
景大侠
4c3d47f1f0
feat(cache): 同步/异步函数可共享缓存
...
- 缓存键支持自定义命名,使异步与同步函数可共享缓存结果
- 内存缓存改为类变量,实现多个cache装饰器共享同一缓存空间
- 重构AsyncMemoryBackend,减少重复代码
- 补齐部分模块的缓存清理功能
2026-02-10 18:46:49 +08:00
景大侠
1751caef62
fix: 补充几处season的判空
2026-02-02 15:01:12 +08:00