ThinkAdmin/docs/architecture/plugin-first-refactor.md
Anyon 6f4056f64d docs(architecture): 完善 v8 架构与迁移说明
补充 v8 重构后的架构文档、组件说明和迁移记录,方便后续维护者理解插件边界。

主要内容:

- 更新根 README,说明 v8 插件分层、系统模块、交付命令和验证流程。

- 新增组件明细、插件边界、路由分发、软删除和稳定性文档。

- 记录 Storage 合并到 System、旧 View 移除和 Helper 并入 System 的决策。

- 补充文档注释报告和后续重构计划,便于持续演进。
2026-05-08 15:31:22 +08:00

77 lines
3.6 KiB
Markdown

# Plugin-First Refactor
## 相关文档
- [插件标准](./plugin-standard.md)
- [路由调度标准](./route-dispatch-standard.md)
- [软删除标准](./soft-delete-standard.md)
## 目标
- `plugin/*` 作为主业务承载目录。
- `app/*` 仅保留本地多应用和过渡代码。
- 页面入口统一为 `/{plugin}/...`
- 接口入口统一为 `/api/{plugin}/{controller}/{action}`
- 路由分发优先命中插件,再命中本地应用,最后回退到默认本地应用。
- `_plugin``X-Plugin-App` 只保留为调试开关,默认关闭。
## 组件边界
### ThinkLibrary
- 提供 `Controller``Model``Plugin``Command` 等基础类型。
- 负责插件发现、元数据读取、URL 构建、运行时上下文与路由适配。
- 负责通用会话、JWT、RPC、Storage 门面与标准契约。
- 不承载后台壳层、守护进程与发布导出能力。
### ThinkPlugsSystem
- 负责后台登录、首页、权限菜单、用户、系统配置、日志等后台壳层能力。
- 持有 `system_auth``system_auth_node``system_menu``system_user`
- 持有 `system_data``system_base``system_oplog`
- 承载存储中心能力,负责驱动注册、配置协议、上传授权、上传接口与文件管理。
- 提供 `system/config/storage``system/file/*``/api/system/upload/*`
- 持有 `system_file`
- 内置开发交付工具,统一使用 `plugin\system\helper\*` 命名空间。
- 提供 `xadmin:publish``xadmin:package``xadmin:helper:*`
### ThinkPlugsWorker
- 负责 Workerman 常驻进程、HTTP 托管、队列调度与运行控制。
- 提供 `xadmin:worker` 统一入口。
- 持有 `system_queue`
### 业务插件
- `ThinkPlugsWechatClient``ThinkPlugsWechatService``ThinkPlugsPayment``ThinkPlugsWemall` 等只承载自己的业务模型、控制器和菜单。
- 不再把公共基础能力回写到 `app/*``extend/*`
## 当前状态
- 插件元数据统一收敛到 `composer.json > extra.xadmin`
- `ThinkLibrary` 已支持插件优先分发、本地应用兼容和默认本地应用回退。
- `ThinkPlugsSystem``ThinkPlugsWorker` 的共享表已明确归属;原独立 Storage 与 Helper 已合并到 System。
- 旧的根级门面与历史兼容目录已逐步收缩到最小集合。
- 插件中心、存储中心、系统后台都已切换到插件化入口。
## 当前约定
### 插件注册
- 每个插件统一使用 `src/Service.php` 作为服务入口。
- 服务类统一通过 `composer.json > extra.think.services` 注册。
- 插件编码、前缀、菜单、迁移、说明文档统一写在 `extra.xadmin`
### 运行时
- 页面链接优先使用 `sysuri()`
- 标准接口链接优先使用 `apiuri()`
- 根目录全局路由优先使用 `Route::bindApp()``Route::bindPlugin()``Route::appGroup()``Route::pluginGroup()`
- 新代码不再依赖旧式三段路由推断目标应用。
### 共享表归属
- `system_auth``system_auth_node``system_menu``system_user``ThinkPlugsSystem`
- `system_data``system_base``system_oplog``ThinkPlugsSystem`
- `system_file``ThinkPlugsSystem` 存储中心。
- `system_queue``ThinkPlugsWorker`
### 前端脚本变量
- 系统脚本统一下发 `taSystem``taSystemApi``taStorage``taStorageApi``taApiPrefix`
- 插件模板、静态脚本、上传脚本和公开预览页都优先消费这组变量。
## 后续收尾
1. 继续清理历史文档和模板中的旧路由示例。
2. 持续补齐跨平台回归,覆盖 Windows 与 Linux。
3. 新增插件时严格走 `plugin-standard.md` 中的准入规则。