From 38bd66128b5727f69cb94fcd4e46f63dd4508973 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=80=E6=A2=A6?= <3501646051@qq.com> Date: Sat, 4 Apr 2026 13:32:36 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84:=20=E8=BF=81=E7=A7=BB?= =?UTF-8?q?=E5=90=8E=E7=AB=AF=E4=BB=A3=E7=A0=81=E5=88=B0=20app=20=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=EF=BC=8C=E5=89=8D=E7=AB=AF=E7=A7=BB=E5=8A=A8=E5=88=B0?= =?UTF-8?q?=20WebUI=EF=BC=8C=E6=B7=BB=E5=8A=A0=E5=AE=8C=E6=95=B4=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E5=A5=97=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 主要变更: - 后端代码从根目录迁移到 app/ 目录 - 前端代码从 frontend/ 重命名为 WebUI/ - 更新所有导入路径以适配新结构 - 提取公共 API 响应函数到 app/api/common.py - 精简验证器服务代码 - 更新启动脚本和文档 测试: - 新增完整测试套件 (tests/) - 单元测试: 模型、仓库层 - 集成测试: 覆盖所有 22+ API 端点 - E2E 测试: 4个完整工作流场景 - 添加 pytest 配置和测试运行脚本 --- DESIGN.md | 142 +++++++------- README.md | 55 +++--- {frontend => WebUI}/.eslintrc.json | 0 {frontend => WebUI}/.gitignore | 0 {frontend => WebUI}/.prettierrc.json | 0 {frontend => WebUI}/index.html | 0 {frontend => WebUI}/package.json | 0 {frontend => WebUI}/public/vite.svg | 0 {frontend => WebUI}/src/App.vue | 0 {frontend => WebUI}/src/api/index.js | 0 .../src/components/PageHeader.vue | 0 .../src/components/ProtocolChart.vue | 0 .../src/components/QuickActions.vue | 0 .../src/components/StatCard.vue | 0 {frontend => WebUI}/src/main.js | 0 {frontend => WebUI}/src/router/index.js | 0 .../src/services/pluginService.js | 0 .../src/services/proxyService.js | 0 .../src/services/schedulerService.js | 0 .../src/services/settingService.js | 0 {frontend => WebUI}/src/stores/plugins.js | 0 {frontend => WebUI}/src/stores/proxy.js | 0 {frontend => WebUI}/src/style.css | 0 .../src/styles/element-plus.css | 0 {frontend => WebUI}/src/styles/utilities.css | 0 {frontend => WebUI}/src/styles/variables.css | 0 {frontend => WebUI}/src/utils/clipboard.js | 0 {frontend => WebUI}/src/utils/confirm.js | 0 {frontend => WebUI}/src/utils/format.js | 0 {frontend => WebUI}/src/utils/message.js | 0 {frontend => WebUI}/src/views/Dashboard.vue | 0 {frontend => WebUI}/src/views/Plugins.vue | 181 ++++++++++++----- {frontend => WebUI}/src/views/ProxyList.vue | 0 {frontend => WebUI}/src/views/Settings.vue | 0 {frontend => WebUI}/vite.config.js | 0 api/routes/proxies.py | 130 ------------- api/routes/scheduler.py | 80 -------- {api => app/api}/__init__.py | 1 + app/api/common.py | 41 ++++ {api => app/api}/deps.py | 14 +- {api => app/api}/errors.py | 4 +- {api => app/api}/lifespan.py | 10 +- {api => app/api}/main.py | 12 +- {api => app/api}/routes/__init__.py | 3 +- {api => app/api}/routes/plugins.py | 115 +++++------ app/api/routes/proxies.py | 125 ++++++++++++ app/api/routes/scheduler.py | 64 ++++++ {api => app/api}/routes/settings.py | 23 +-- app/core/__init__.py | 13 ++ {core => app/core}/config.py | 2 +- {core => app/core}/db.py | 4 +- {core => app/core}/exceptions.py | 0 {core => app/core}/log.py | 4 +- {core => app/core}/plugin_system/__init__.py | 1 + {core => app/core}/plugin_system/base.py | 0 {core => app/core}/plugin_system/registry.py | 4 +- {core => app/core}/tasks/__init__.py | 1 + {core => app/core}/tasks/queue.py | 8 +- app/models/__init__.py | 30 +++ {models => app/models}/domain.py | 0 {models => app/models}/schemas.py | 0 {plugins => app/plugins}/__init__.py | 2 +- {plugins => app/plugins}/base.py | 2 +- {plugins => app/plugins}/fate0.py | 6 +- {plugins => app/plugins}/ip3366.py | 6 +- {plugins => app/plugins}/ip89.py | 6 +- {plugins => app/plugins}/kuaidaili.py | 6 +- .../plugins}/proxylist_download.py | 6 +- {plugins => app/plugins}/proxyscrape.py | 6 +- {plugins => app/plugins}/speedx.py | 6 +- {plugins => app/plugins}/yundaili.py | 6 +- .../repositories}/__init__.py | 8 +- .../repositories}/proxy_repo.py | 4 +- .../repositories}/settings_repo.py | 2 +- .../repositories}/task_repo.py | 4 +- app/services/__init__.py | 12 ++ {services => app/services}/plugin_service.py | 12 +- {services => app/services}/proxy_service.py | 8 +- .../services}/scheduler_service.py | 12 +- .../services}/validator_service.py | 46 ++--- main.py | 4 +- models/__init__.py | 13 -- pytest.ini | 17 ++ script/start.bat | 2 +- tests/README.md | 159 +++++++++++++++ tests/__init__.py | 1 + tests/__main__.py | 5 + tests/__pycache__/conftest.cpython-311.pyc | Bin 0 -> 3530 bytes tests/conftest.py | 56 ++++++ tests/e2e/__init__.py | 1 + .../test_full_workflow.cpython-311.pyc | Bin 0 -> 8203 bytes tests/e2e/test_full_workflow.py | 182 ++++++++++++++++++ tests/integration/__init__.py | 1 + .../test_health_api.cpython-311.pyc | Bin 0 -> 2878 bytes .../test_plugins_api.cpython-311.pyc | Bin 0 -> 9995 bytes .../test_proxies_api.cpython-311.pyc | Bin 0 -> 9308 bytes .../test_scheduler_api.cpython-311.pyc | Bin 0 -> 6577 bytes .../test_settings_api.cpython-311.pyc | Bin 0 -> 6603 bytes tests/integration/test_health_api.py | 47 +++++ tests/integration/test_plugins_api.py | 147 ++++++++++++++ tests/integration/test_proxies_api.py | 144 ++++++++++++++ tests/integration/test_scheduler_api.py | 101 ++++++++++ tests/integration/test_settings_api.py | 137 +++++++++++++ tests/run_tests.py | 89 +++++++++ tests/unit/__init__.py | 1 + .../__pycache__/test_models.cpython-311.pyc | Bin 0 -> 8278 bytes .../test_repositories.cpython-311.pyc | Bin 0 -> 5415 bytes tests/unit/test_models.py | 136 +++++++++++++ tests/unit/test_repositories.py | 95 +++++++++ 109 files changed, 2017 insertions(+), 548 deletions(-) rename {frontend => WebUI}/.eslintrc.json (100%) rename {frontend => WebUI}/.gitignore (100%) rename {frontend => WebUI}/.prettierrc.json (100%) rename {frontend => WebUI}/index.html (100%) rename {frontend => WebUI}/package.json (100%) rename {frontend => WebUI}/public/vite.svg (100%) rename {frontend => WebUI}/src/App.vue (100%) rename {frontend => WebUI}/src/api/index.js (100%) rename {frontend => WebUI}/src/components/PageHeader.vue (100%) rename {frontend => WebUI}/src/components/ProtocolChart.vue (100%) rename {frontend => WebUI}/src/components/QuickActions.vue (100%) rename {frontend => WebUI}/src/components/StatCard.vue (100%) rename {frontend => WebUI}/src/main.js (100%) rename {frontend => WebUI}/src/router/index.js (100%) rename {frontend => WebUI}/src/services/pluginService.js (100%) rename {frontend => WebUI}/src/services/proxyService.js (100%) rename {frontend => WebUI}/src/services/schedulerService.js (100%) rename {frontend => WebUI}/src/services/settingService.js (100%) rename {frontend => WebUI}/src/stores/plugins.js (100%) rename {frontend => WebUI}/src/stores/proxy.js (100%) rename {frontend => WebUI}/src/style.css (100%) rename {frontend => WebUI}/src/styles/element-plus.css (100%) rename {frontend => WebUI}/src/styles/utilities.css (100%) rename {frontend => WebUI}/src/styles/variables.css (100%) rename {frontend => WebUI}/src/utils/clipboard.js (100%) rename {frontend => WebUI}/src/utils/confirm.js (100%) rename {frontend => WebUI}/src/utils/format.js (100%) rename {frontend => WebUI}/src/utils/message.js (100%) rename {frontend => WebUI}/src/views/Dashboard.vue (100%) rename {frontend => WebUI}/src/views/Plugins.vue (71%) rename {frontend => WebUI}/src/views/ProxyList.vue (100%) rename {frontend => WebUI}/src/views/Settings.vue (100%) rename {frontend => WebUI}/vite.config.js (100%) delete mode 100644 api/routes/proxies.py delete mode 100644 api/routes/scheduler.py rename {api => app/api}/__init__.py (79%) create mode 100644 app/api/common.py rename {api => app/api}/deps.py (75%) rename {api => app/api}/errors.py (91%) rename {api => app/api}/lifespan.py (82%) rename {api => app/api}/main.py (81%) rename {api => app/api}/routes/__init__.py (73%) rename {api => app/api}/routes/plugins.py (56%) create mode 100644 app/api/routes/proxies.py create mode 100644 app/api/routes/scheduler.py rename {api => app/api}/routes/settings.py (59%) create mode 100644 app/core/__init__.py rename {core => app/core}/config.py (93%) rename {core => app/core}/db.py (98%) rename {core => app/core}/exceptions.py (100%) rename {core => app/core}/log.py (93%) rename {core => app/core}/plugin_system/__init__.py (85%) rename {core => app/core}/plugin_system/base.py (100%) rename {core => app/core}/plugin_system/registry.py (97%) rename {core => app/core}/tasks/__init__.py (75%) rename {core => app/core}/tasks/queue.py (96%) create mode 100644 app/models/__init__.py rename {models => app/models}/domain.py (100%) rename {models => app/models}/schemas.py (100%) rename {plugins => app/plugins}/__init__.py (93%) rename {plugins => app/plugins}/base.py (97%) rename {plugins => app/plugins}/fate0.py (90%) rename {plugins => app/plugins}/ip3366.py (93%) rename {plugins => app/plugins}/ip89.py (91%) rename {plugins => app/plugins}/kuaidaili.py (93%) rename {plugins => app/plugins}/proxylist_download.py (93%) rename {plugins => app/plugins}/proxyscrape.py (96%) rename {plugins => app/plugins}/speedx.py (93%) rename {plugins => app/plugins}/yundaili.py (93%) rename {repositories => app/repositories}/__init__.py (51%) rename {repositories => app/repositories}/proxy_repo.py (99%) rename {repositories => app/repositories}/settings_repo.py (99%) rename {repositories => app/repositories}/task_repo.py (98%) create mode 100644 app/services/__init__.py rename {services => app/services}/plugin_service.py (94%) rename {services => app/services}/proxy_service.py (95%) rename {services => app/services}/scheduler_service.py (91%) rename {services => app/services}/validator_service.py (77%) delete mode 100644 models/__init__.py create mode 100644 pytest.ini create mode 100644 tests/README.md create mode 100644 tests/__init__.py create mode 100644 tests/__main__.py create mode 100644 tests/__pycache__/conftest.cpython-311.pyc create mode 100644 tests/conftest.py create mode 100644 tests/e2e/__init__.py create mode 100644 tests/e2e/__pycache__/test_full_workflow.cpython-311.pyc create mode 100644 tests/e2e/test_full_workflow.py create mode 100644 tests/integration/__init__.py create mode 100644 tests/integration/__pycache__/test_health_api.cpython-311.pyc create mode 100644 tests/integration/__pycache__/test_plugins_api.cpython-311.pyc create mode 100644 tests/integration/__pycache__/test_proxies_api.cpython-311.pyc create mode 100644 tests/integration/__pycache__/test_scheduler_api.cpython-311.pyc create mode 100644 tests/integration/__pycache__/test_settings_api.cpython-311.pyc create mode 100644 tests/integration/test_health_api.py create mode 100644 tests/integration/test_plugins_api.py create mode 100644 tests/integration/test_proxies_api.py create mode 100644 tests/integration/test_scheduler_api.py create mode 100644 tests/integration/test_settings_api.py create mode 100644 tests/run_tests.py create mode 100644 tests/unit/__init__.py create mode 100644 tests/unit/__pycache__/test_models.cpython-311.pyc create mode 100644 tests/unit/__pycache__/test_repositories.cpython-311.pyc create mode 100644 tests/unit/test_models.py create mode 100644 tests/unit/test_repositories.py diff --git a/DESIGN.md b/DESIGN.md index 576c75c..84b08f6 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -309,77 +309,87 @@ Store 只负责: ``` ProxyPool/ -├── api/ # FastAPI 入口和路由 -│ ├── __init__.py -│ ├── main.py # 应用工厂 -│ ├── lifespan.py # 生命周期管理 -│ ├── deps.py # 依赖注入 -│ ├── errors.py # 统一异常 -│ └── routes/ -│ ├── __init__.py -│ ├── proxies.py -│ ├── plugins.py -│ ├── scheduler.py -│ └── settings.py +├── main.py # 项目入口 +├── requirements.txt # Python 依赖 +├── .env.example # 环境变量示例 │ -├── core/ # 基础设施 -│ ├── __init__.py -│ ├── config.py # Pydantic Settings -│ ├── log.py # 日志 -│ ├── db.py # 数据库连接池/上下文 -│ └── exceptions.py # 业务异常 -│ -├── models/ # 数据模型 -│ ├── __init__.py -│ ├── schemas.py # Pydantic 模型 -│ └── domain.py # 领域模型(ProxyRaw, PluginInfo 等) -│ -├── repositories/ # 数据访问层 -│ ├── __init__.py -│ └── proxy_repo.py # ProxyRepository -│ -├── services/ # 业务逻辑层 -│ ├── __init__.py -│ ├── proxy_service.py -│ ├── plugin_service.py -│ ├── scheduler_service.py -│ └── validator_service.py -│ -├── core/ # 任务与插件系统 -│ ├── plugin_system/ +├── app/ # 后端代码 +│ ├── api/ # FastAPI 入口和路由 │ │ ├── __init__.py -│ │ ├── base.py # BaseCrawlerPlugin -│ │ └── registry.py # 插件注册中心 -│ └── tasks/ +│ │ ├── main.py # 应用工厂 +│ │ ├── lifespan.py # 生命周期管理 +│ │ ├── deps.py # 依赖注入 +│ │ ├── errors.py # 统一异常 +│ │ └── routes/ +│ │ ├── __init__.py +│ │ ├── proxies.py +│ │ ├── plugins.py +│ │ ├── scheduler.py +│ │ └── settings.py +│ │ +│ ├── core/ # 基础设施 +│ │ ├── __init__.py +│ │ ├── config.py # Pydantic Settings +│ │ ├── log.py # 日志 +│ │ ├── db.py # 数据库连接池/上下文 +│ │ ├── exceptions.py # 业务异常 +│ │ ├── plugin_system/ # 插件系统 +│ │ │ ├── __init__.py +│ │ │ ├── base.py # BaseCrawlerPlugin +│ │ │ └── registry.py # 插件注册中心 +│ │ └── tasks/ # 任务队列 +│ │ ├── __init__.py +│ │ └── queue.py # ValidationQueue +│ │ +│ ├── models/ # 数据模型 +│ │ ├── __init__.py +│ │ ├── schemas.py # Pydantic 模型 +│ │ └── domain.py # 领域模型 +│ │ +│ ├── repositories/ # 数据访问层 +│ │ ├── __init__.py +│ │ ├── proxy_repo.py +│ │ ├── settings_repo.py +│ │ └── task_repo.py +│ │ +│ ├── services/ # 业务逻辑层 +│ │ ├── __init__.py +│ │ ├── proxy_service.py +│ │ ├── plugin_service.py +│ │ ├── scheduler_service.py +│ │ └── validator_service.py +│ │ +│ └── plugins/ # 爬虫插件 │ ├── __init__.py -│ ├── queue.py # ValidationQueue -│ └── workers.py # Worker Pool +│ ├── base.py # 通用抓取基类 +│ ├── fate0.py +│ ├── kuaidaili.py +│ ├── ip3366.py +│ ├── ip89.py +│ ├── speedx.py +│ ├── yundaili.py +│ ├── proxylist_download.py +│ └── proxyscrape.py │ -├── plugins/ # 爬虫插件 -│ ├── __init__.py -│ ├── base.py # 通用抓取基类(HTTP 请求封装) -│ ├── fate0.py -│ ├── proxylist_download.py -│ └── ... -│ -├── frontend/ # Vue3 前端 -│ └── src/ -│ ├── services/ # 新增 -│ ├── stores/ -│ ├── api/ -│ └── ... +├── WebUI/ # Vue3 前端 +│ ├── src/ +│ │ ├── api/ # API 封装 +│ │ ├── stores/ # Pinia 状态管理 +│ │ ├── views/ # 页面组件 +│ │ ├── router/ # 路由配置 +│ │ ├── components/ # 通用组件 +│ │ └── style.css # 全局样式 +│ ├── index.html +│ └── package.json │ ├── tests/ # 测试目录 │ ├── conftest.py │ ├── unit/ │ └── integration/ │ -├── script/ -├── data/ -├── db/ -├── logs/ -├── requirements.txt -├── .env.example +├── script/ # 启动脚本 +├── db/ # 数据存储 +├── logs/ # 日志文件 └── DESIGN.md # 本文档 ``` @@ -426,11 +436,11 @@ ProxyPool/ 假设要添加一个名为 `mynewsource` 的爬虫: -**Step 1**: 创建文件 `plugins/mynewsource.py` +**Step 1**: 创建文件 `app/plugins/mynewsource.py` ```python -from core.plugin_system import BaseCrawlerPlugin, ProxyRaw -from plugins.base import BaseHTTPPlugin # 可选:如果基于 HTTP 爬取 +from app.core.plugin_system import BaseCrawlerPlugin, ProxyRaw +from app.plugins.base import BaseHTTPPlugin # 可选:如果基于 HTTP 爬取 class MyNewSourcePlugin(BaseHTTPPlugin): name = "mynewsource" @@ -450,11 +460,11 @@ class MyNewSourcePlugin(BaseHTTPPlugin): return results ``` -**Step 2**: 在 `plugins/__init__.py` 中注册 +**Step 2**: 在 `app/plugins/__init__.py` 中注册 ```python from .mynewsource import MyNewSourcePlugin -from core.plugin_system import registry +from app.core.plugin_system import registry registry.register(MyNewSourcePlugin) ``` diff --git a/README.md b/README.md index ca1069c..f69e1e3 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ pip install -r requirements.txt ### 2. 安装前端依赖 ```bash -cd frontend +cd WebUI npm install ``` @@ -58,7 +58,7 @@ python api_server.py **启动前端服务**(终端 2) ```bash -cd frontend +cd WebUI npm run dev ``` @@ -77,32 +77,35 @@ stop.bat ``` ProxyPool/ -├── api_server.py # FastAPI 后端服务器 -├── config.py # 配置文件 +├── main.py # 项目入口 ├── requirements.txt # Python 依赖 ├── .env.example # 环境变量示例 │ -├── script/ # 启动脚本 -│ ├── start.bat # Windows 启动脚本 -│ └── stop.bat # Windows 停止脚本 +├── app/ # 后端代码 +│ ├── api/ # FastAPI 路由 +│ │ ├── main.py # 应用工厂 +│ │ ├── routes/ # API 路由 +│ │ ├── deps.py # 依赖注入 +│ │ └── ... +│ ├── core/ # 核心模块 +│ │ ├── config.py # 配置管理 +│ │ ├── db.py # 数据库连接 +│ │ ├── log.py # 日志配置 +│ │ ├── plugin_system/ # 插件系统 +│ │ └── tasks/ # 任务队列 +│ ├── models/ # 数据模型 +│ ├── repositories/ # 数据访问层 +│ ├── services/ # 业务逻辑层 +│ └── plugins/ # 代理源插件 +│ ├── fate0.py # Fate0 代理源 +│ ├── ip3366.py # IP3366 代理源 +│ ├── ip89.py # IP89 代理源 +│ ├── kuaidaili.py # 快代理源 +│ ├── yundaili.py # 云代理源 +│ ├── speedx.py # SpeedX 代理源 +│ └── proxylist_download.py # ProxyList 代理源 │ -├── core/ # 核心模块 -│ ├── crawler.py # 爬虫基类 -│ ├── validator.py # 代理验证器 -│ ├── sqlite.py # 数据库管理 -│ ├── plugin_manager.py # 插件管理器 -│ └── log.py # 日志配置 -│ -├── plugins/ # 代理源插件 -│ ├── fate0.py # Fate0 代理源 -│ ├── ip3366.py # IP3366 代理源 -│ ├── ip89.py # IP89 代理源 -│ ├── kuaidaili.py # 快代理源 -│ ├── yundaili.py # 云代理源 -│ ├── speedx.py # SpeedX 代理源 -│ └── proxylist_download.py # ProxyList 代理源 -│ -├── frontend/ # Vue3 前端 +├── WebUI/ # Vue3 前端 │ ├── src/ │ │ ├── api/ # API 封装 │ │ ├── stores/ # Pinia 状态管理 @@ -113,6 +116,10 @@ ProxyPool/ │ ├── index.html │ └── package.json │ +├── script/ # 启动脚本 +│ ├── start.bat # Windows 启动脚本 +│ └── stop.bat # Windows 停止脚本 +│ └── db/ # 数据存储目录 └── proxies.sqlite # SQLite 数据库 ``` diff --git a/frontend/.eslintrc.json b/WebUI/.eslintrc.json similarity index 100% rename from frontend/.eslintrc.json rename to WebUI/.eslintrc.json diff --git a/frontend/.gitignore b/WebUI/.gitignore similarity index 100% rename from frontend/.gitignore rename to WebUI/.gitignore diff --git a/frontend/.prettierrc.json b/WebUI/.prettierrc.json similarity index 100% rename from frontend/.prettierrc.json rename to WebUI/.prettierrc.json diff --git a/frontend/index.html b/WebUI/index.html similarity index 100% rename from frontend/index.html rename to WebUI/index.html diff --git a/frontend/package.json b/WebUI/package.json similarity index 100% rename from frontend/package.json rename to WebUI/package.json diff --git a/frontend/public/vite.svg b/WebUI/public/vite.svg similarity index 100% rename from frontend/public/vite.svg rename to WebUI/public/vite.svg diff --git a/frontend/src/App.vue b/WebUI/src/App.vue similarity index 100% rename from frontend/src/App.vue rename to WebUI/src/App.vue diff --git a/frontend/src/api/index.js b/WebUI/src/api/index.js similarity index 100% rename from frontend/src/api/index.js rename to WebUI/src/api/index.js diff --git a/frontend/src/components/PageHeader.vue b/WebUI/src/components/PageHeader.vue similarity index 100% rename from frontend/src/components/PageHeader.vue rename to WebUI/src/components/PageHeader.vue diff --git a/frontend/src/components/ProtocolChart.vue b/WebUI/src/components/ProtocolChart.vue similarity index 100% rename from frontend/src/components/ProtocolChart.vue rename to WebUI/src/components/ProtocolChart.vue diff --git a/frontend/src/components/QuickActions.vue b/WebUI/src/components/QuickActions.vue similarity index 100% rename from frontend/src/components/QuickActions.vue rename to WebUI/src/components/QuickActions.vue diff --git a/frontend/src/components/StatCard.vue b/WebUI/src/components/StatCard.vue similarity index 100% rename from frontend/src/components/StatCard.vue rename to WebUI/src/components/StatCard.vue diff --git a/frontend/src/main.js b/WebUI/src/main.js similarity index 100% rename from frontend/src/main.js rename to WebUI/src/main.js diff --git a/frontend/src/router/index.js b/WebUI/src/router/index.js similarity index 100% rename from frontend/src/router/index.js rename to WebUI/src/router/index.js diff --git a/frontend/src/services/pluginService.js b/WebUI/src/services/pluginService.js similarity index 100% rename from frontend/src/services/pluginService.js rename to WebUI/src/services/pluginService.js diff --git a/frontend/src/services/proxyService.js b/WebUI/src/services/proxyService.js similarity index 100% rename from frontend/src/services/proxyService.js rename to WebUI/src/services/proxyService.js diff --git a/frontend/src/services/schedulerService.js b/WebUI/src/services/schedulerService.js similarity index 100% rename from frontend/src/services/schedulerService.js rename to WebUI/src/services/schedulerService.js diff --git a/frontend/src/services/settingService.js b/WebUI/src/services/settingService.js similarity index 100% rename from frontend/src/services/settingService.js rename to WebUI/src/services/settingService.js diff --git a/frontend/src/stores/plugins.js b/WebUI/src/stores/plugins.js similarity index 100% rename from frontend/src/stores/plugins.js rename to WebUI/src/stores/plugins.js diff --git a/frontend/src/stores/proxy.js b/WebUI/src/stores/proxy.js similarity index 100% rename from frontend/src/stores/proxy.js rename to WebUI/src/stores/proxy.js diff --git a/frontend/src/style.css b/WebUI/src/style.css similarity index 100% rename from frontend/src/style.css rename to WebUI/src/style.css diff --git a/frontend/src/styles/element-plus.css b/WebUI/src/styles/element-plus.css similarity index 100% rename from frontend/src/styles/element-plus.css rename to WebUI/src/styles/element-plus.css diff --git a/frontend/src/styles/utilities.css b/WebUI/src/styles/utilities.css similarity index 100% rename from frontend/src/styles/utilities.css rename to WebUI/src/styles/utilities.css diff --git a/frontend/src/styles/variables.css b/WebUI/src/styles/variables.css similarity index 100% rename from frontend/src/styles/variables.css rename to WebUI/src/styles/variables.css diff --git a/frontend/src/utils/clipboard.js b/WebUI/src/utils/clipboard.js similarity index 100% rename from frontend/src/utils/clipboard.js rename to WebUI/src/utils/clipboard.js diff --git a/frontend/src/utils/confirm.js b/WebUI/src/utils/confirm.js similarity index 100% rename from frontend/src/utils/confirm.js rename to WebUI/src/utils/confirm.js diff --git a/frontend/src/utils/format.js b/WebUI/src/utils/format.js similarity index 100% rename from frontend/src/utils/format.js rename to WebUI/src/utils/format.js diff --git a/frontend/src/utils/message.js b/WebUI/src/utils/message.js similarity index 100% rename from frontend/src/utils/message.js rename to WebUI/src/utils/message.js diff --git a/frontend/src/views/Dashboard.vue b/WebUI/src/views/Dashboard.vue similarity index 100% rename from frontend/src/views/Dashboard.vue rename to WebUI/src/views/Dashboard.vue diff --git a/frontend/src/views/Plugins.vue b/WebUI/src/views/Plugins.vue similarity index 71% rename from frontend/src/views/Plugins.vue rename to WebUI/src/views/Plugins.vue index 97cf040..8874b83 100644 --- a/frontend/src/views/Plugins.vue +++ b/WebUI/src/views/Plugins.vue @@ -74,26 +74,42 @@ - + @@ -104,28 +120,28 @@ :image-size="120" /> - + -