jxxghp
|
acfa5eee72
|
fix(history): suppress failure feedback on successful records
|
2026-09-10 11:51:08 +08:00 |
|
jxxghp
|
fcc83e6bbe
|
fix(servarr): restore sync subscription lookup (#6635)
|
2026-09-10 09:29:17 +08:00 |
|
jxxghp
|
02d528310b
|
fix(db): release worker capacity before publishing results
|
2026-09-10 00:29:09 +08:00 |
|
jxxghp
|
5fa5b414aa
|
feat(agent): harden tool outcomes, recovery and discovery
|
2026-09-09 19:55:21 +08:00 |
|
jxxghp
|
022dd006a5
|
fix(transfer): allow manual reorganization after stale task failures
Refs #6625
|
2026-09-09 17:53:24 +08:00 |
|
InfinityPacer
|
a13d13aeba
|
fix: 原子合并订阅搜索任务并跳过无效 RSS 地址 (#6626)
* fix(subscription): coalesce active search tasks with atomic upsert
* fix(rss): skip invalid feed URLs before network access
|
2026-09-09 17:00:50 +08:00 |
|
jxxghp
|
5a214afc19
|
fix(subscribe): keep scheduled searches progressing across site retries
|
2026-09-09 16:45:42 +08:00 |
|
jxxghp
|
9e1c25124b
|
fix(transfer): restore regression and architecture gates
|
2026-09-09 13:40:35 +08:00 |
|
jxxghp
|
ce690b1140
|
feat(transfer): add failure stage, recovery action, retry count, and cleanup status to transfer history
|
2026-09-09 13:17:36 +08:00 |
|
jxxghp
|
9780a93cdb
|
fix(transfer): preserve episode-mapped download history associations
|
2026-09-09 06:58:01 +08:00 |
|
jxxghp
|
d0c894f5eb
|
fix(transfer): close durable error recovery loop
|
2026-09-08 22:38:59 +08:00 |
|
jxxghp
|
d97906f0a9
|
fix(transfer): clarify execution conflict errors
|
2026-09-08 22:01:55 +08:00 |
|
jxxghp
|
8255df4df4
|
fix(subscribe): remove cumulative search delays and resume pending sites
|
2026-09-08 08:58:35 +08:00 |
|
jxxghp
|
b85aa5e31b
|
feat(subscription): add search_interval and last_search fields for subscription management
|
2026-09-08 07:12:21 +08:00 |
|
jxxghp
|
b9120a5b6a
|
fix(classification): preserve non-TMDB legacy categories
|
2026-09-06 23:36:43 +08:00 |
|
jxxghp
|
82652add91
|
fix(auth): fix passkey deletion password verification
|
2026-09-06 10:05:40 +08:00 |
|
jxxghp
|
821d7301de
|
fix(subscribe): synchronize queue contracts
|
2026-09-05 18:29:07 +08:00 |
|
jxxghp
|
54cc3d368d
|
refactor(subscribe): isolate queued search execution
|
2026-09-05 18:09:25 +08:00 |
|
jxxghp
|
0a732be485
|
feat(subscribe): improve search scheduling feedback
|
2026-09-05 17:23:26 +08:00 |
|
jxxghp
|
1f3d2b7fdf
|
fix(classification): satisfy policy cleanup type checks
|
2026-09-04 22:48:37 +08:00 |
|
jxxghp
|
0a44a0019c
|
fix(classification): remove source defaults and clarify policy docs
|
2026-09-04 22:38:03 +08:00 |
|
jxxghp
|
5afb1fc03e
|
fix: defer subscription search on site budget conflicts
|
2026-09-04 22:05:56 +08:00 |
|
jxxghp
|
ff01449cdd
|
fix(api): humanize user-facing error messages
|
2026-09-04 17:55:56 +08:00 |
|
freeman
|
fae87d68bf
|
fix(history): 请求级下载历史仓储补齐 async_count,修复下载历史接口 500
HistoryQueryService.count_download() 依赖 AsyncDownloadHistoryQueryRepository
协议的 async_count(),但 startup 注入的请求级适配器
SessionDownloadHistoryRepository 只实现了 async_list_by_page(),导致
GET /api/v1/history/download 在写入分页总数响应头时抛 AttributeError 并返回 500,
Web 端下载历史页面无法加载。
为 SessionDownloadHistoryRepository 补齐 async_count(),在请求持有的
AsyncSession 内调用 DownloadHistoryOper.async_count(),Session 类型校验与
async_list_by_page() 保持一致,并补充回归测试。
|
2026-09-04 08:55:27 +08:00 |
|
jxxghp
|
71147c1d96
|
feat(classification): support multi-source media rules
|
2026-09-03 11:51:18 +08:00 |
|
InfinityPacer
|
68880dbbf1
|
优化订阅执行治理与规模性能 (#6557)
* feat(subscription): govern concurrent search and match execution
* refactor(subscription): consume complete candidate snapshots
* refactor(subscription): remove download submission ledger
* feat(subscription): stagger fallback searches without site gaps
* refactor(subscription): remove unused retry capability
* test(subscription): verify complete scale execution
* fix(subscription): surface site search failures
* test(subscription): verify site pressure through search
* test(subscription): use static facade imports
* fix(subscription): preserve completed downloads on shutdown
* fix(subscription): classify execution expiry as failure
* fix(subscription): preserve fallback search staggering
* test(subscription): stabilize unfinished wrapper gate
* fix(subscription): settle expired search returns
* style(subscription): normalize governance imports
* fix(subscription): align governance type contracts
* docs(architecture): sync mypy debt metric
* docs(architecture): sync startup module counts
|
2026-09-03 11:26:24 +08:00 |
|
jxxghp
|
478e7ee0a4
|
fix(auth): restore API token compatibility
|
2026-09-02 20:22:57 +08:00 |
|
Aqr-K
|
862ed4d5b8
|
fix(plugin): 插件 schema 不再回落 public,迁移目录拒绝相对路径
PostgreSQL 下 search_path 留了 public 兜底,插件 schema 里不存在的表名会继续
解析到宿主同名表,一条未限定的 DELETE 就能改到宿主数据;解析根收敛为插件自己的
schema,找不到的表名直接报错。
get_database_migrations() 的合同要求绝对路径,此前只校验目录是否存在,相对路径
会按宿主进程的当前工作目录解析成另一条迁移链,改为直接拒绝。
|
2026-09-02 02:38:18 -04:00 |
|
Aqr-K
|
a4d38e0f12
|
fix(plugin): 卸载先停后删、销毁全程持锁,PostgreSQL 会话按插件 schema 解析原生 SQL
卸载编排改为先停插件再删数据:插件的停机钩子取一次自有库句柄就能把刚删除的数据重新
建出来,注册表因此不再需要销毁墓碑,release 恢复为「只释放连接、保留数据」的单一语义。
停止同时注销插件类,其后的删除一律按 force 执行。
destroy_database 的摘句柄、关连接与删载体全部收进同一把锁:原先在锁外删除载体,并发的
get_database 能在间隙注册一个指向同一载体的新句柄,随后的删除会把它一并抹掉。
PostgreSQL 句柄在派生引擎上注册 begin 监听器,按事务执行 SET LOCAL search_path,让
schema_translate_map 覆盖不到的原生 SQL 同样解析到插件自己的 schema;监听器只挂在
OptionEngine 上,宿主引擎与其它插件的连接不受影响。
|
2026-09-02 02:14:19 -04:00 |
|
Aqr-K
|
d7c5955031
|
fix(plugin): 插件自有数据库释放与销毁全程容错,并修正建表去重与 schema 命名
release/destroy 统一经 _close_handle 先清线程局部会话再 dispose,两步失败都
只记日志:单个插件的连接池故障不再让 close_database 跳过宿主同步与异步引擎的
释放,release_all_databases 也逐插件隔离。按模型建表对 __table__ 去重,单表
继承的父子类一并声明时不再对同一张表建两次。
卸载编排先删插件数据、后停插件,停机钩子里的 get_database() 会把刚销毁的库
重新建出来:注册表记下已销毁的插件标识,其后的 release 改为再次销毁并清除
标记,ensure 则撤销标记,宿主编排代码不动。PostgreSQL schema 名在归一改写过
标识或超长时追加插件标识哈希并截到 63 字节,My-Plugin、My_Plugin 与
my_plugin 不再折叠到同一个 schema 而在卸载时互相 DROP。
start 的失败分支释放已经建立、却进不了运行态的句柄,整体停止把只登记在
_classes 里的插件一并释放。声明的迁移目录不存在时在建句柄之前抛
FileNotFoundError,不再留下空库;SQLite 迁移 URL 改由引擎渲染;
_get_sqlite_engine 的连接参数下沉到实际使用它的异步分支。
|
2026-09-02 02:14:19 -04:00 |
|
Aqr-K
|
22e4439bd9
|
feat(db): 新增按插件隔离的自管理数据库框架
新增 app/db/plugin 包(base/container/locator/migration/registry),
以独立 MetaData、独立 SQLite 库文件或 PostgreSQL schema 隔离插件自有表;
从 app/db/engine.py 抽出 build_sqlite_engine/apply_sqlite_journal_mode 供
宿主引擎与插件引擎共用同一套连接语义;close_database 在宿主引擎释放前先
释放全部插件数据库连接。框架本身尚无调用方,可独立测试。
|
2026-09-02 02:14:19 -04:00 |
|
jxxghp
|
e57288b5ea
|
refactor(subscribe): satisfy global governance gates
|
2026-09-01 17:09:55 +08:00 |
|
jxxghp
|
e4c8cbabfb
|
refactor(subscribe): deduplicate duplicate media records
|
2026-09-01 17:09:55 +08:00 |
|
jxxghp
|
a712284dc4
|
feat(subscribe): expose governed execution status
|
2026-09-01 17:09:54 +08:00 |
|
jxxghp
|
db5c316756
|
refactor(subscribe): make download submission idempotent
|
2026-09-01 17:09:54 +08:00 |
|
jxxghp
|
9c4598c86b
|
test(subscribe): validate joint search governance
|
2026-09-01 17:09:54 +08:00 |
|
jxxghp
|
bab1d2862e
|
refactor(subscribe): govern fallback site pressure
|
2026-09-01 17:09:54 +08:00 |
|
jxxghp
|
389131acd6
|
refactor(subscribe): persist fallback search queue
|
2026-09-01 17:08:53 +08:00 |
|
jxxghp
|
eecde8a58d
|
fix(subscription): avoid outbox key collisions on id reuse
|
2026-09-01 17:02:31 +08:00 |
|
jxxghp
|
d512f528be
|
refactor(api): make collection pagination explicit
|
2026-09-01 09:13:56 +08:00 |
|
jxxghp
|
a73714e5e7
|
feat(agent): add compatible collection pagination
|
2026-09-01 07:43:55 +08:00 |
|
jxxghp
|
94716484b7
|
fix(transfer): resolve durable failure recovery issues
|
2026-09-01 07:11:06 +08:00 |
|
InfinityPacer
|
5c70757a81
|
fix(auth): align v3 authentication contracts
按已确认的 V3 AUTH-001 交付门禁合并:后端认证与用户资料契约已完成本地前后端联调,Architecture、Coverage、单测分片和 Pylint 全部通过。
|
2026-08-31 04:57:34 +08:00 |
|
jxxghp
|
9d06f91bbd
|
fix(outbox): persist post-commit effects for replay
|
2026-08-30 12:14:04 +08:00 |
|
jxxghp
|
9146c75941
|
feat(auth): add first-run administrator initialization
|
2026-08-30 09:05:23 +08:00 |
|
jxxghp
|
d2a860d89a
|
refactor(startup): govern composition lifecycle ownership
|
2026-08-29 16:57:53 +08:00 |
|
jxxghp
|
a821c4a3b4
|
fix(plugin): tolerate invalid legacy IDs in identity reads
|
2026-08-29 10:38:48 +08:00 |
|
jxxghp
|
8460e72c42
|
refactor(scheduler): split runtime owners and preserve plugin ABI
|
2026-08-28 23:17:45 +08:00 |
|
jxxghp
|
dd94f1c781
|
style(transfer): normalize checkpoint model imports
|
2026-08-28 22:41:09 +08:00 |
|
jxxghp
|
0445c655de
|
fix(transfer): support PostgreSQL checkpoint CAS
|
2026-08-28 22:28:06 +08:00 |
|