befly-tpl 3.2.2 → 3.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +240 -14
- package/package.json +21 -3
- package/addon-loader.example.ts +0 -99
- package/bun.lock +0 -140
- package/logs/2025-08-22.0.log +0 -197
- package/logs/2025-08-23.0.log +0 -151
- package/logs/2025-08-24.0.log +0 -296
- package/logs/2025-08-25.0.log +0 -162
- package/logs/2025-08-26.0.log +0 -19
- package/logs/2025-08-27.0.log +0 -63
- package/logs/2025-08-28.0.log +0 -286
- package/logs/2025-08-30.0.log +0 -1
- package/logs/2025-09-01.0.log +0 -296
- package/logs/2025-09-02.0.log +0 -298
- package/logs/2025-10-11.0.log +0 -2718
- package/logs/2025-10-12.0.log +0 -4374
- package/logs/2025-10-13.0.log +0 -759
- package/logs/2025-10-14.0.log +0 -2350
- package/logs/2025-10-15.0.log +0 -2386
- package/logs/2025-10-16.0.log +0 -2807
- package/logs/2025-10-17.0.log +0 -1143
- package/logs/2025-10-18.0.log +0 -1292
- package/logs/2025-10-19.0.log +0 -1752
- package/logs/2025-10-20.0.log +0 -722
- package/logs/2025-10-21.0.log +0 -1075
- package/logs/2025-10-23.0.log +0 -3291
- package/logs/2025-10-24.0.log +0 -2341
- package/logs/2025-10-25.0.log +0 -1367
- package/logs/debug.0.log +0 -25174
- package/temp/addon-route-prefix-migration.md +0 -400
- package/temp/api-route-conflict-analysis.md +0 -441
- package/temp/interactive-cli-guide.md +0 -199
- package/temp/missing-apis-fix.md +0 -362
- package/temp/remove-status-field.md +0 -239
- package/temp/roleid-to-rolecode-optimization.md +0 -321
- package/temp/status-to-state-migration-complete.md +0 -176
- package/temp/syncMenu-guide.md +0 -235
- package/temp/test-admin-menus-cache.ts +0 -125
- package/temp/test-admin-menus.ts +0 -110
- package/temp/test-interactive-cli.ps1 +0 -14
|
@@ -1,400 +0,0 @@
|
|
|
1
|
-
# Addon 路由前缀迁移报告(方案2)
|
|
2
|
-
|
|
3
|
-
**日期**:2025-10-19
|
|
4
|
-
**执行人**:AI Assistant
|
|
5
|
-
**状态**:✅ 已完成
|
|
6
|
-
|
|
7
|
-
## 📋 迁移概述
|
|
8
|
-
|
|
9
|
-
根据用户要求,执行方案2:修改 Addon 路由前缀,从 `/api/{addonName}/` 改为 `/api/addon/{addonName}/`,彻底解决路由冲突问题。
|
|
10
|
-
|
|
11
|
-
## 🎯 修改目标
|
|
12
|
-
|
|
13
|
-
**修改前**:
|
|
14
|
-
|
|
15
|
-
```
|
|
16
|
-
Addon API: POST/api/admin/login
|
|
17
|
-
项目 API: POST/api/admin/login
|
|
18
|
-
⚠️ 可能冲突
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
**修改后**:
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
Addon API: POST/api/addon/admin/login
|
|
25
|
-
项目 API: POST/api/admin/login
|
|
26
|
-
✅ 完全隔离,不会冲突
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## ✅ 完成的修改
|
|
30
|
-
|
|
31
|
-
### 1. 核心框架修改
|
|
32
|
-
|
|
33
|
-
#### packages/core/lifecycle/loader.ts
|
|
34
|
-
|
|
35
|
-
**文件**:`packages/core/lifecycle/loader.ts`
|
|
36
|
-
**位置**:Line 493-495
|
|
37
|
-
**修改内容**:添加 `addon/` 前缀到 addon API 路由
|
|
38
|
-
|
|
39
|
-
**修改前**:
|
|
40
|
-
|
|
41
|
-
```typescript
|
|
42
|
-
// 构建路由:addon 接口添加前缀 /api/{addonName}/{apiPath}
|
|
43
|
-
if (isAddon) {
|
|
44
|
-
api.route = `${api.method.toUpperCase()}/api/${addonName}/${apiPath}`;
|
|
45
|
-
} else {
|
|
46
|
-
api.route = `${api.method.toUpperCase()}/api/${apiPath}`;
|
|
47
|
-
}
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
**修改后**:
|
|
51
|
-
|
|
52
|
-
```typescript
|
|
53
|
-
// 构建路由:addon 接口添加前缀 /api/addon/{addonName}/{apiPath},项目接口为 /api/{apiPath}
|
|
54
|
-
if (isAddon) {
|
|
55
|
-
api.route = `${api.method.toUpperCase()}/api/addon/${addonName}/${apiPath}`;
|
|
56
|
-
} else {
|
|
57
|
-
api.route = `${api.method.toUpperCase()}/api/${apiPath}`;
|
|
58
|
-
}
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### 2. Admin 前端项目修改
|
|
62
|
-
|
|
63
|
-
#### 修改的文件列表(共7个文件)
|
|
64
|
-
|
|
65
|
-
1. **packages/admin/src/plugins/http.ts**
|
|
66
|
-
- 更新注释示例:`/api/admin/login` → `/addon/admin/login`
|
|
67
|
-
|
|
68
|
-
2. **packages/admin/src/plugins/router.ts**
|
|
69
|
-
- 无需修改(没有硬编码路径)
|
|
70
|
-
|
|
71
|
-
3. **packages/admin/src/stores/permission.ts**
|
|
72
|
-
- `/admin/adminMenus` → `/addon/admin/adminMenus`
|
|
73
|
-
|
|
74
|
-
4. **packages/admin/src/api/auth.ts**
|
|
75
|
-
- `/admin/login` → `/addon/admin/login`
|
|
76
|
-
- `/admin/register` → `/addon/admin/register`
|
|
77
|
-
- `/admin/sendSmsCode` → `/addon/admin/sendSmsCode`
|
|
78
|
-
- `/admin/adminInfo` → `/addon/admin/adminInfo`
|
|
79
|
-
- `/admin/logout` → `/addon/admin/logout`
|
|
80
|
-
|
|
81
|
-
5. **packages/admin/src/views/login/index_1.vue**
|
|
82
|
-
- `/admin/sendSmsCode` → `/addon/admin/sendSmsCode`
|
|
83
|
-
- `/admin/login` → `/addon/admin/login`
|
|
84
|
-
- `/admin/register` → `/addon/admin/register`
|
|
85
|
-
|
|
86
|
-
6. **packages/admin/src/views/system/menu.vue**
|
|
87
|
-
- `/admin/menuList` → `/addon/admin/menuList`
|
|
88
|
-
- `/admin/menuCreate` → `/addon/admin/menuCreate`
|
|
89
|
-
- `/admin/menuUpdate` → `/addon/admin/menuUpdate`
|
|
90
|
-
- `/admin/menuDelete` → `/addon/admin/menuDelete`
|
|
91
|
-
|
|
92
|
-
7. **packages/admin/src/views/system/role.vue**
|
|
93
|
-
- `/admin/roleList` → `/addon/admin/roleList`
|
|
94
|
-
- `/admin/menuList` → `/addon/admin/menuList`
|
|
95
|
-
- `/admin/roleCreate` → `/addon/admin/roleCreate`
|
|
96
|
-
- `/admin/roleUpdate` → `/addon/admin/roleUpdate`
|
|
97
|
-
- `/admin/roleDelete` → `/addon/admin/roleDelete`
|
|
98
|
-
- `/admin/roleMenuGet` → `/addon/admin/roleMenuGet`
|
|
99
|
-
- `/admin/roleMenuSave` → `/addon/admin/roleMenuSave`
|
|
100
|
-
|
|
101
|
-
8. **packages/admin/src/views/user/user.vue**
|
|
102
|
-
- `/admin/list` → `/addon/admin/list`
|
|
103
|
-
- `/admin/roleList` → `/addon/admin/roleList`
|
|
104
|
-
- `/admin/adminRoleGet` → `/addon/admin/adminRoleGet`
|
|
105
|
-
- `/admin/adminRoleSave` → `/addon/admin/adminRoleSave`
|
|
106
|
-
|
|
107
|
-
9. **packages/admin/src/views/admin/index.vue**
|
|
108
|
-
- `/admin/list` → `/addon/admin/list`
|
|
109
|
-
- `/admin/roleList` → `/addon/admin/roleList`
|
|
110
|
-
- `/admin/adminRoleGet` → `/addon/admin/adminRoleGet`
|
|
111
|
-
- `/admin/adminRoleSave` → `/addon/admin/adminRoleSave`
|
|
112
|
-
|
|
113
|
-
## 📊 修改统计
|
|
114
|
-
|
|
115
|
-
### 核心框架
|
|
116
|
-
|
|
117
|
-
- **修改文件**:1 个
|
|
118
|
-
- **修改行数**:1 行
|
|
119
|
-
- **影响范围**:所有 addon 的 API 路由
|
|
120
|
-
|
|
121
|
-
### Admin 前端
|
|
122
|
-
|
|
123
|
-
- **修改文件**:9 个
|
|
124
|
-
- **修改 API 调用**:32 处
|
|
125
|
-
- **影响范围**:所有调用 admin addon 接口的地方
|
|
126
|
-
|
|
127
|
-
### 总计
|
|
128
|
-
|
|
129
|
-
- **修改文件总数**:10 个
|
|
130
|
-
- **修改代码行数**:约 35 处
|
|
131
|
-
|
|
132
|
-
## 🔍 验证结果
|
|
133
|
-
|
|
134
|
-
**验证命令**:
|
|
135
|
-
|
|
136
|
-
```bash
|
|
137
|
-
grep -rE "['\"]/admin/" packages/admin/src/**/*.{ts,vue}
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
**结果**:
|
|
141
|
-
|
|
142
|
-
```
|
|
143
|
-
No matches found ✅
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
所有 `/admin/` 路径已成功替换为 `/addon/admin/`!
|
|
147
|
-
|
|
148
|
-
## 🎯 路由映射对照表
|
|
149
|
-
|
|
150
|
-
### Admin Addon 的 API 路由变化
|
|
151
|
-
|
|
152
|
-
| API 文件 | 修改前 | 修改后 |
|
|
153
|
-
| -------------- | ---------------------------- | ---------------------------------- |
|
|
154
|
-
| login.ts | `POST/api/admin/login` | `POST/api/addon/admin/login` |
|
|
155
|
-
| register.ts | `POST/api/admin/register` | `POST/api/addon/admin/register` |
|
|
156
|
-
| adminInfo.ts | `POST/api/admin/adminInfo` | `POST/api/addon/admin/adminInfo` |
|
|
157
|
-
| adminMenus.ts | `POST/api/admin/adminMenus` | `POST/api/addon/admin/adminMenus` |
|
|
158
|
-
| menuList.ts | `POST/api/admin/menuList` | `POST/api/addon/admin/menuList` |
|
|
159
|
-
| menuCreate.ts | `POST/api/admin/menuCreate` | `POST/api/addon/admin/menuCreate` |
|
|
160
|
-
| menuUpdate.ts | `POST/api/admin/menuUpdate` | `POST/api/addon/admin/menuUpdate` |
|
|
161
|
-
| menuDelete.ts | `POST/api/admin/menuDelete` | `POST/api/addon/admin/menuDelete` |
|
|
162
|
-
| roleList.ts | `POST/api/admin/roleList` | `POST/api/addon/admin/roleList` |
|
|
163
|
-
| roleCreate.ts | `POST/api/admin/roleCreate` | `POST/api/addon/admin/roleCreate` |
|
|
164
|
-
| roleUpdate.ts | `POST/api/admin/roleUpdate` | `POST/api/addon/admin/roleUpdate` |
|
|
165
|
-
| roleDelete.ts | `POST/api/admin/roleDelete` | `POST/api/addon/admin/roleDelete` |
|
|
166
|
-
| roleSave.ts | `POST/api/admin/roleSave` | `POST/api/addon/admin/roleSave` |
|
|
167
|
-
| roleGet.ts | `POST/api/admin/roleGet` | `POST/api/addon/admin/roleGet` |
|
|
168
|
-
| sendSmsCode.ts | `POST/api/admin/sendSmsCode` | `POST/api/addon/admin/sendSmsCode` |
|
|
169
|
-
| logout.ts | `POST/api/admin/logout` | `POST/api/addon/admin/logout` |
|
|
170
|
-
|
|
171
|
-
### 其他 Addon 的路由规则
|
|
172
|
-
|
|
173
|
-
所有 addon 都会应用新的路由规则:
|
|
174
|
-
|
|
175
|
-
**Befly Addon**:
|
|
176
|
-
|
|
177
|
-
```
|
|
178
|
-
修改前: POST/api/befly/health/info
|
|
179
|
-
修改后: POST/api/addon/befly/health/info
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
**Demo Addon**:
|
|
183
|
-
|
|
184
|
-
```
|
|
185
|
-
修改前: POST/api/demo/test
|
|
186
|
-
修改后: POST/api/addon/demo/test
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
### 项目 API 路由(不受影响)
|
|
190
|
-
|
|
191
|
-
项目 API 保持不变:
|
|
192
|
-
|
|
193
|
-
```
|
|
194
|
-
POST/api/article/list
|
|
195
|
-
POST/api/article/create
|
|
196
|
-
POST/api/user/list
|
|
197
|
-
POST/api/user/login
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
## 💡 迁移优势
|
|
201
|
-
|
|
202
|
-
### 1. 彻底解决冲突
|
|
203
|
-
|
|
204
|
-
**场景:开发者创建 apis/admin/ 目录**
|
|
205
|
-
|
|
206
|
-
**修改前**:
|
|
207
|
-
|
|
208
|
-
```
|
|
209
|
-
⚠️ Addon: POST/api/admin/list
|
|
210
|
-
⚠️ 项目: POST/api/admin/list
|
|
211
|
-
❌ 冲突!后者覆盖前者
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
**修改后**:
|
|
215
|
-
|
|
216
|
-
```
|
|
217
|
-
✅ Addon: POST/api/addon/admin/list
|
|
218
|
-
✅ 项目: POST/api/admin/list
|
|
219
|
-
✅ 完全隔离,不会冲突
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
### 2. 路径更清晰
|
|
223
|
-
|
|
224
|
-
**一眼就能区分 API 来源**:
|
|
225
|
-
|
|
226
|
-
```
|
|
227
|
-
/api/addon/admin/login ← 明显是 addon 提供的接口
|
|
228
|
-
/api/admin/login ← 项目自己的接口
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
### 3. 符合命名空间最佳实践
|
|
232
|
-
|
|
233
|
-
```
|
|
234
|
-
/api/addon/{addonName}/{path} ← Addon 命名空间
|
|
235
|
-
/api/{path} ← 项目命名空间
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
### 4. 扩展性更好
|
|
239
|
-
|
|
240
|
-
未来添加更多 addon 不会产生冲突:
|
|
241
|
-
|
|
242
|
-
```
|
|
243
|
-
/api/addon/admin/...
|
|
244
|
-
/api/addon/shop/...
|
|
245
|
-
/api/addon/blog/...
|
|
246
|
-
/api/addon/payment/...
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
## 🚨 注意事项
|
|
250
|
-
|
|
251
|
-
### 1. 兼容性
|
|
252
|
-
|
|
253
|
-
⚠️ **这是破坏性变更**:
|
|
254
|
-
|
|
255
|
-
- 旧版本的前端调用会 404
|
|
256
|
-
- 需要同步更新前端代码
|
|
257
|
-
|
|
258
|
-
### 2. 部署建议
|
|
259
|
-
|
|
260
|
-
**建议部署流程**:
|
|
261
|
-
|
|
262
|
-
1. 先部署后端(core + tpl)
|
|
263
|
-
2. 立即部署前端(admin)
|
|
264
|
-
3. 避免前后端版本不一致
|
|
265
|
-
|
|
266
|
-
### 3. 回滚方案
|
|
267
|
-
|
|
268
|
-
如果需要回滚:
|
|
269
|
-
|
|
270
|
-
```typescript
|
|
271
|
-
// 在 loader.ts 中改回
|
|
272
|
-
if (isAddon) {
|
|
273
|
-
api.route = `${api.method.toUpperCase()}/api/${addonName}/${apiPath}`;
|
|
274
|
-
}
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
## 📋 测试建议
|
|
278
|
-
|
|
279
|
-
### 1. 后端测试
|
|
280
|
-
|
|
281
|
-
```bash
|
|
282
|
-
# 启动后端
|
|
283
|
-
cd packages/tpl
|
|
284
|
-
bunx befly
|
|
285
|
-
|
|
286
|
-
# 验证路由
|
|
287
|
-
curl http://localhost:3000/api/addon/admin/health
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
### 2. 前端测试
|
|
291
|
-
|
|
292
|
-
```bash
|
|
293
|
-
# 启动前端
|
|
294
|
-
cd packages/admin
|
|
295
|
-
bun run dev
|
|
296
|
-
|
|
297
|
-
# 测试功能
|
|
298
|
-
- 登录
|
|
299
|
-
- 获取菜单
|
|
300
|
-
- 菜单管理
|
|
301
|
-
- 角色管理
|
|
302
|
-
- 用户管理
|
|
303
|
-
```
|
|
304
|
-
|
|
305
|
-
### 3. 关键测试点
|
|
306
|
-
|
|
307
|
-
- ✅ 登录功能
|
|
308
|
-
- ✅ 获取用户菜单
|
|
309
|
-
- ✅ 菜单 CRUD
|
|
310
|
-
- ✅ 角色 CRUD
|
|
311
|
-
- ✅ 用户角色分配
|
|
312
|
-
|
|
313
|
-
## 🎓 技术说明
|
|
314
|
-
|
|
315
|
-
### 路由生成逻辑
|
|
316
|
-
|
|
317
|
-
**Addon API**:
|
|
318
|
-
|
|
319
|
-
```typescript
|
|
320
|
-
// 文件:addons/admin/apis/login.ts
|
|
321
|
-
// 路径:POST/api/addon/admin/login
|
|
322
|
-
|
|
323
|
-
const apiPath = 'login'; // 相对于 apis 目录
|
|
324
|
-
const addonName = 'admin';
|
|
325
|
-
const route = `POST/api/addon/${addonName}/${apiPath}`;
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
**项目 API**:
|
|
329
|
-
|
|
330
|
-
```typescript
|
|
331
|
-
// 文件:apis/user/login.ts
|
|
332
|
-
// 路径:POST/api/user/login
|
|
333
|
-
|
|
334
|
-
const apiPath = 'user/login'; // 相对于 apis 目录
|
|
335
|
-
const route = `POST/api/${apiPath}`;
|
|
336
|
-
```
|
|
337
|
-
|
|
338
|
-
### 前端请求示例
|
|
339
|
-
|
|
340
|
-
```typescript
|
|
341
|
-
// Admin 前端(baseURL = http://localhost:3000/api)
|
|
342
|
-
await $Http('/addon/admin/login', { email, password });
|
|
343
|
-
// 实际请求:POST http://localhost:3000/api/addon/admin/login
|
|
344
|
-
|
|
345
|
-
await $Http('/addon/admin/menuList', {});
|
|
346
|
-
// 实际请求:POST http://localhost:3000/api/addon/admin/menuList
|
|
347
|
-
```
|
|
348
|
-
|
|
349
|
-
## 📚 相关文档
|
|
350
|
-
|
|
351
|
-
- 路由冲突分析:`packages/tpl/temp/api-route-conflict-analysis.md`
|
|
352
|
-
- RoleCode 优化:`packages/tpl/temp/roleid-to-rolecode-optimization.md`
|
|
353
|
-
- Status 迁移:`packages/tpl/temp/status-to-state-migration-complete.md`
|
|
354
|
-
|
|
355
|
-
## ✅ 下一步建议
|
|
356
|
-
|
|
357
|
-
1. **更新 AGENTS.md**:
|
|
358
|
-
- 添加新的路由规范说明
|
|
359
|
-
- 更新 API 示例代码
|
|
360
|
-
|
|
361
|
-
2. **更新文档项目**(docs):
|
|
362
|
-
- 说明 addon 路由规则
|
|
363
|
-
- 提供迁移指南
|
|
364
|
-
|
|
365
|
-
3. **测试验证**:
|
|
366
|
-
- 完整测试所有功能
|
|
367
|
-
- 确保前后端正常工作
|
|
368
|
-
|
|
369
|
-
## 🎯 总结
|
|
370
|
-
|
|
371
|
-
**迁移状态**:✅ **已完成**
|
|
372
|
-
|
|
373
|
-
**修改范围**:
|
|
374
|
-
|
|
375
|
-
- ✅ 核心框架路由生成逻辑
|
|
376
|
-
- ✅ Admin 前端所有 API 调用
|
|
377
|
-
|
|
378
|
-
**验证结果**:
|
|
379
|
-
|
|
380
|
-
- ✅ 没有遗漏的 `/admin/` 路径
|
|
381
|
-
- ✅ 所有路径已更新为 `/addon/admin/`
|
|
382
|
-
|
|
383
|
-
**核心优势**:
|
|
384
|
-
|
|
385
|
-
- ✅ 彻底解决路由冲突
|
|
386
|
-
- ✅ 路径更清晰易读
|
|
387
|
-
- ✅ 符合命名空间最佳实践
|
|
388
|
-
- ✅ 扩展性更好
|
|
389
|
-
|
|
390
|
-
**后续工作**:
|
|
391
|
-
|
|
392
|
-
- 📋 测试所有功能
|
|
393
|
-
- 📋 更新项目文档
|
|
394
|
-
- 📋 更新 AGENTS.md 规范
|
|
395
|
-
|
|
396
|
-
---
|
|
397
|
-
|
|
398
|
-
**执行人**:AI Assistant
|
|
399
|
-
**完成时间**:2025-10-19
|
|
400
|
-
**状态**:✅ **迁移完成**
|