DDSRem
|
2de976f6b3
|
Merge pull request #7050 from DDSRem-Dev/codex-comment-migration
docs: 统一全项目中文注释和结构化契约说明
|
2026-10-17 19:26:29 +08:00 |
|
Aqr-K
|
61aa3cd649
|
refactor(sdk): 插件契约基类迁入 SDK 并由 Compat 承接旧包根符号 (#6701)
|
2026-09-15 07:01:00 +08:00 |
|
Aqr-K
|
3d594ecee3
|
refactor(plugin): 插件配置改走独立通道,SystemConfig 不再按键值分支
插件配置此前借用 systemconfig 的 plugin.<实例ID> 单键,为了换表又在
SystemConfigOper 的 set/delete/load_snapshot 里按该前缀开分支。这是反向依赖:
一个对所有键一视同仁的通用键值存储被迫知道「插件」这个概念,读写路径依键值而
异,「这个键落在哪张表」只有读代码才说得清;规范方法按值加特例,也让此后任何新
键都要先确认自己会不会被拦截。
本次把插件配置整条链拆出,形状与本分支日志等级那条链一致:
- SystemConfigOper 整体回退到官方实现,与 f70d7c141 逐字节相同,对所有键一视同仁。
- 配置端口改按实例 ID 寻址:PluginStorage 新增 read_config / write_config /
async_write_config / delete_config,PluginConfigStore 去掉 key_prefix 与 _key,
不再有任何字符串键经过;plugin_exists 存在性规则、空键过滤与 force 语义不变。
- PluginInstanceOper 补齐读取与异步写入原语 get_config_data /
async_save_config_data,同步与异步共用同一份落库决策,避免两条路径对「值未变化
不写」和「建行用哪个源插件」各自分叉。
- _PluginBase 的 get_config / update_config 直连 PluginInstanceOper,方法名、签名、
返回与 docstring 不变;self.systemconfig 保留,插件读 SystemConfigKey 枚举值仍
然合法,插件公开面没有扩大。
插件直接用 SystemConfig 存取自身配置不予支持。它本就不是封装过的插件配置通道,
为它设计兼容或加守卫拦截,等于再把「插件」塞回通用存储里——那正是本次要拆掉的东
西。拆开后 plugin.<ID> 只是一个与插件无关的普通 systemconfig 键:迁移已经把旧的
plugin.* 行搬进插件实例表,读它拿到 None,写它会新增一条谁也不读的 systemconfig
记录,插件配置通道既不读也不写它,两边不会再有任何交叉。
代价是读取从内存快照变成一次按实例 ID 的主键查询。调用点都不在热路径上:宿主侧
只有插件启动/重载、配置表单接口与分身创建三处,插件侧 get_config() 惯例在
init_plugin 里取一次。写入侧没有变化,本来就是一次事务。
回归防线:新增用例断言 SystemConfigOper 对 plugin. 前缀没有任何特殊行为——写进去
就是一行普通 systemconfig 记录,读出来就是刚写的值,不会被路由到插件实例表。
兼容层零改动,三个 alembic 迁移一行未改。
|
2026-09-13 01:41:57 -04: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
|
626d8217ba
|
feat(plugin): 开放插件自有数据库声明与句柄接口
_PluginBase 新增 get_database_models()/get_database_migrations() 声明钩子
与 get_database() 句柄入口,按类名(含分身)解析插件标识;
app/sdk/database.py 导出 plugin_declarative_base 与 PluginDatabaseHandle。
docs/rules/10-data-and-persistent.md 补充 Plugin-Owned Databases 小节,
说明 db_query/db_update 的自动兜底仍绑定宿主会话、需显式传入插件会话。
|
2026-09-02 02:14:19 -04:00 |
|
jxxghp
|
dc23977b0c
|
fix: 修复站点用户数据转换并完善媒体来源扩展
|
2026-08-18 14:50:09 +08:00 |
|
Aqr-K
|
8a11214a43
|
refactor(db): 修复异步连接池无界增长,并完成 SQLAlchemy 2.0 迁移与分层归位 (#6320)
|
2026-08-15 06:58:38 +08:00 |
|
yubanmeiqin9048
|
a1a6376adc
|
feat: add async plugin data interfaces (#6188)
|
2026-07-25 14:24:47 +08:00 |
|
jxxghp
|
fd280a49b7
|
feat(auth): implement authentication provider endpoints and ticket exchange
|
2026-06-04 08:23:54 +08:00 |
|
jxxghp
|
8bf9b6e7cb
|
feat:Agent插件工具发现
|
2025-11-17 13:00:23 +08:00 |
|
jxxghp
|
a6d1bd12a2
|
fix:优化插件分身性能
feat:分身插件删除时清理文件
|
2025-05-26 13:21:47 +08:00 |
|
jxxghp
|
41ca50d0d4
|
feat:工作流支持调用插件动作
|
2025-05-15 19:55:14 +08:00 |
|
jxxghp
|
0cdea3318c
|
feat:插件API支持bear认证
|
2025-05-07 13:26:42 +08:00 |
|
jxxghp
|
9dac9850b6
|
fix plugin file api
|
2025-05-06 23:56:35 +08:00 |
|
jxxghp
|
d2e5367dc6
|
fix plugins
|
2025-05-06 11:44:23 +08:00 |
|
jxxghp
|
c692a3c80e
|
feat:支持vue原生插件页面
|
2025-05-03 10:03:44 +08:00 |
|
jxxghp
|
06ad042443
|
fix typo
|
2025-05-01 11:20:56 +08:00 |
|
jxxghp
|
9d333b855c
|
feat:支持插件协持系统模块实现
|
2025-05-01 11:03:28 +08:00 |
|
jxxghp
|
f9b0db623d
|
fix cython type error
|
2025-03-23 21:39:37 +08:00 |
|
jxxghp
|
2f38b3040d
|
fix:修复代码兼容性写法
|
2025-03-23 12:10:21 +08:00 |
|
InfinityPacer
|
79dc194dd6
|
feat(plugin): add kwargs support for post_message
|
2025-01-25 00:18:08 +08:00 |
|
InfinityPacer
|
eea8060182
|
feat(plugin): add username support for post_message
|
2024-12-09 19:27:25 +08:00 |
|
jxxghp
|
e05c643a6b
|
add notification link
|
2024-06-08 10:47:50 +08:00 |
|
Allen
|
a6714d3712
|
一个插件支持透出多个仪表板控件,并兼容历史
|
2024-05-24 14:54:46 +08:00 |
|
jxxghp
|
5614f10962
|
fix get_dashboard
|
2024-05-17 10:50:03 +08:00 |
|
jxxghp
|
5ff80dbe89
|
fix get_dashboard
|
2024-05-17 10:49:47 +08:00 |
|
jxxghp
|
278835c5d4
|
fix
|
2024-05-17 07:46:27 +08:00 |
|
jxxghp
|
de0237f348
|
dashboard 传递 UA
|
2024-05-16 17:32:35 +08:00 |
|
jxxghp
|
fabb02a8a0
|
fix README
|
2024-05-13 20:25:52 +08:00 |
|
jxxghp
|
5c9039e6d0
|
feat:插件仪表板API
|
2024-05-08 20:58:28 +08:00 |
|
jxxghp
|
0e2c4d74d6
|
feat:优化插件重载
|
2024-04-05 23:20:51 +08:00 |
|
jxxghp
|
282f723d34
|
fix plugin api
|
2024-02-10 10:58:43 +08:00 |
|
jxxghp
|
713f4ca356
|
fix typo
|
2024-01-05 08:18:01 +08:00 |
|
jxxghp
|
b06795510a
|
feat:插件支持注册公共服务
|
2024-01-05 08:12:27 +08:00 |
|
jxxghp
|
c741edffb0
|
fix
|
2023-11-04 07:52:48 +08:00 |
|
jxxghp
|
22b76f9919
|
feat 拆分插件仓库
|
2023-11-01 16:50:53 +08:00 |
|
jxxghp
|
c7a869b750
|
feat 媒体库刷新移植为插件
|
2023-11-01 16:20:15 +08:00 |
|
jxxghp
|
00052efbbc
|
feat 媒体服务器通知插件
|
2023-11-01 15:53:45 +08:00 |
|
jxxghp
|
271b33ecdc
|
Merge pull request #1034 from thsrite/main
|
2023-11-01 12:08:53 +08:00 |
|
thsrite
|
b4d07cf6ab
|
fix
|
2023-11-01 12:06:05 +08:00 |
|
thsrite
|
382035768e
|
fix 兼容emby webhook删除season没有tmdbid
|
2023-11-01 11:51:07 +08:00 |
|
honue
|
303aa9b580
|
fix rss报文设置编码问题
|
2023-11-01 11:30:26 +08:00 |
|
thsrite
|
099dcda185
|
fix webhook
|
2023-10-31 16:33:48 +08:00 |
|
jxxghp
|
812a9a55d0
|
fix Plugin Alerts UI
|
2023-10-31 11:48:36 +08:00 |
|
jxxghp
|
9ce9e0a4ef
|
fix #1006
|
2023-10-28 20:27:48 +08:00 |
|
jxxghp
|
ae196f1aeb
|
Merge pull request #1006 from thsrite/main
fix bug
|
2023-10-28 20:27:25 +08:00 |
|
thsrite
|
38e09b894d
|
fix bug
|
2023-10-28 20:24:16 +08:00 |
|
jxxghp
|
247d5ff255
|
Merge pull request #999 from honue/main
enhance 定期清理插件
|
2023-10-28 20:20:28 +08:00 |
|