# 11 Flask 管理能力移除与入口切换 > **状态(task-283 已执行阶段 5/6)**:Flask 管理蓝图(admin_api/auth/main)、`web_source/`、`backend/static/admin.*`、Java classpath 旧 admin.html/login.html 副本均已删除;`backend/app.py` 现仅保留版本公开 API 蓝图。Java 侧 `/`、`/admin`、`/admin.html` → `/admin-vue/`,`/login`、`/login.html` → `/admin-vue/login`(SPA 登录页)。Flask 进程(15124)仍保留 `/api/version*`,桌面客户端 `app_client` 的更新检查仍以它为 base_url,切换至 Java 前勿下线。工作区 `scripts/deploy.py` 的 pyfiles 动作已同步清理主机上的旧后台文件。 ## 模块职责 定义从 Flask 管理后台到 Java + Vue 的最终切换、删除清单、回滚边界和依赖清理。版本公开接口不属于删除范围,因为已经迁移到 Java 后由客户端继续使用。 ## 依赖关系 前置: - 所有后台页面完成 Vue 迁移。 - Java `/api/admin/*` API 回归通过。 - Java `/api/version`、`/api/version/latest` 回归通过。 - Nginx `/admin-vue/` 正常服务。 - Flyway 菜单 route_path 迁移完成。 被删除的 Flask 文件/符号: - `backend/blueprints/main.py:admin_page`。 - `backend/blueprints/admin_api.py` 的管理 API 路由和权限代理辅助函数。 - `backend/web_source/admin.html`。 - `backend/static/admin.js`。 - `backend/static/admin-interactions.js`。 - Java classpath 中同步旧后台的 `admin.html`、旧管理脚本副本。 保留并迁移后的能力: - Flask `version.py:api_version` → Java `PublicVersionController.currentVersion`。 - Flask `version.py:api_version_latest` → Java `PublicVersionController.latestVersion`。 ## 核心接口:原实现 → 目标实现 | 迁移项 | 原实现 | 目标实现 | |---|---|---| | `/admin` | Flask/Java 旧 `admin.html` | Java/Nginx → `/admin-vue/` | | 管理页面 | Jinja + DOM | Nginx + Vue | | 管理 API | Flask `admin_api` 或 Java 兼容 API | Java 唯一实现 | | 公开版本检查 | Flask `version.py` | Java公开版本控制器 | | 管理权限 | Flask 代理/本地判断 + Java | Java `PermissionMenuService` | | 静态资源 | Flask/Java 双份 | Nginx 单份 dist | ## 内部结构 切换阶段: ```text 阶段 1:Java API + Vue /admin-vue 并行开发 阶段 2:Nginx 先发布 /admin-vue,不立即删除旧源文件 阶段 3:/admin → /admin-vue/,开始真实用户回归 阶段 4:确认版本接口和全部后台页面稳定 阶段 5:删除 Flask 管理蓝图和旧后台资源 阶段 6:清理旧权限响应、旧复制脚本、旧文档和部署配置 ``` ## 类型映射\n\nFlask `admin_page` 映射为 Java `/admin` redirect;Flask `admin_api` 管理路由映射为 Java `/api/admin/*`;Flask `version.py` 映射为 Java `/api/version*`;旧 `admin.html` 映射为 Nginx `/admin-vue/index.html`。\n\n## 删除/保留清单 ### 必须删除 - Flask 管理页面入口和管理 API。 - 旧 admin HTML/JS/CSS 中只服务后台的代码。 - Java static 中旧 admin 页面副本。 - `admin.js` 依赖的旧 DOM ID 和旧 toast/confirm 容器。 - 旧菜单扁平响应适配分支。 ### 必须保留 - Java `/api/admin/*` 业务 API。 - Java 登录态和后台鉴权。 - `web_config` 版本表。 - Java `/api/version`、`/api/version/latest`。 - 客户端所需公开下载 URL。 ## 迁移/实现注意事项 1. 删除 Flask 前必须确认生产 Nginx/API 流量不再指向 Python 管理接口。 2. 删除旧页面前先保存一次前后端 API/权限快照,用于回归对比。 3. 不因为后台删除而删除 `web_config` 或版本上传逻辑。 4. Flask 进程如果还承担其他非管理插件能力,必须按部署文档单独确认;本 spec 只要求移除 Flask 的后台管理职责和版本查询职责,不能误删其他客户端插件 API。 5. 若 Flask 进程承载不可迁移的其他 API,最终部署可以分离进程,但后台请求不得再依赖它;是否完全停止 Python 进程需以其他服务清单为前置验收。 6. 切换失败时回滚的是 Nginx current 目录和 Java `/admin` 重定向,不回滚数据库已执行的 Flyway 版本;数据库迁移必须设计前向兼容。