Skip to content

Commit c7e6865

Browse files
authored
Add AI dynamic configuration menu (#1209)
1 parent 495046c commit c7e6865

3 files changed

Lines changed: 26 additions & 1 deletion

File tree

backend/cli.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from watchfiles import Change, PythonFilter
2424

2525
from backend import __version__
26+
from backend.common.dataclasses import PluginEntry
2627
from backend.common.enums import DataBaseType, PrimaryKeyType
2728
from backend.common.exception.errors import BaseExceptionError
2829
from backend.common.model import MappedBase
@@ -47,11 +48,14 @@
4748
from backend.plugin.core import (
4849
get_plugins,
4950
get_required_plugins,
51+
load_plugin_config,
52+
resolve_plugin_order,
5053
)
5154
from backend.plugin.installer import install_git_frontend_plugin, install_git_plugin, install_zip_plugin, zip_plugin
5255
from backend.plugin.installer import remove_plugin as _remove_plugin
5356
from backend.plugin.requirements import install_requirements_async, uninstall_requirements_async
5457
from backend.plugin.sql import build_sql_filename, get_plugin_destroy_sql, get_plugin_sql
58+
from backend.plugin.validator import validate_plugin_config
5559
from backend.utils.console import console
5660
from backend.utils.dynamic_import import import_module_cached
5761
from backend.utils.sql_parser import parse_sql_script
@@ -539,8 +543,14 @@ async def get_sql_scripts() -> list[str]:
539543
if await anyio.Path(main_sql_file).exists():
540544
sql_scripts.append(str(main_sql_file))
541545

546+
plugins = []
542547
for plugin in get_plugins():
543-
plugin_sql = await get_plugin_sql(plugin, settings.DATABASE_TYPE, settings.DATABASE_PK_MODE)
548+
plugin_config = load_plugin_config(plugin)
549+
validate_plugin_config(plugin, plugin_config)
550+
plugins.append(PluginEntry(name=plugin, depends_on=plugin_config['plugin'].get('depends_on')))
551+
552+
for plugin in resolve_plugin_order(plugins):
553+
plugin_sql = await get_plugin_sql(plugin.name, settings.DATABASE_TYPE, settings.DATABASE_PK_MODE)
544554
if plugin_sql:
545555
sql_scripts.append(plugin_sql)
546556

backend/plugin/config/enums.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
class ConfigType(StrEnum):
55
"""配置类型"""
66

7+
ai = 'AI'
78
email = 'EMAIL'
89
user_security = 'USER_SECURITY'
910
login = 'LOGIN'

backend/utils/dynamic_config.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,3 +99,17 @@ async def load_email_config(db: AsyncSession) -> None:
9999
'EMAIL_PASSWORD': str,
100100
}
101101
await _load_config(db, 'email', mapping, 'EMAIL_CONFIG_STATUS')
102+
103+
104+
async def load_ai_config(db: AsyncSession) -> None:
105+
"""
106+
获取 AI 配置
107+
108+
:param db: 数据库会话
109+
:return:
110+
"""
111+
mapping = {
112+
'AI_EXA_API_KEY': str,
113+
'AI_TAVILY_API_KEY': str,
114+
}
115+
await _load_config(db, 'ai', mapping, 'AI_CONFIG_STATUS')

0 commit comments

Comments
 (0)