@gadmin2n/schematics 0.0.146 → 0.0.147
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.
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
## 与 Gadmin2 模板的关系
|
|
2
|
+
|
|
3
|
+
本项目(gadmin-test)是 gadmin2 模板的**实例项目**,用于日常迭代新功能。迭代完成后需将新特性合并回 gadmin2 模板。
|
|
4
|
+
|
|
5
|
+
| | 路径 |
|
|
6
|
+
|------|------|
|
|
7
|
+
| 实例(本项目) | `/Users/kavenma/Documents/work/code/oit/test/gadmin-test` |
|
|
8
|
+
| 模板(上游) | `/Users/kavenma/Documents/work/code/common/gadmin2/schematics/src/lib/application/files/gadmin2-game-angle-demo` |
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
## 项目简介
|
|
2
|
+
- 本项目由 lowcode 生成工具 Gadmin2 生成:Admin page(CRUD) + Dashboard,包括前端和后端。
|
|
3
|
+
- 前端的 Admin page(CRUD) 代码由配置(`config/ui/{ModelName}.ts`)驱动生成,后端的数据模型和 CRUD 代码由 prisma schema(`config/prisma/{module}.prisma`)驱动生成。
|
|
4
|
+
|
|
5
|
+
## 常用命令
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# 改了 config/prisma/*.prisma —— 迁移数据库 + 生成前后端代码
|
|
9
|
+
gadmin2 g prisma:dev
|
|
10
|
+
|
|
11
|
+
# 只改了 config/ui/*.ts —— 只生成代码,不碰数据库
|
|
12
|
+
gadmin2 g prisma
|
|
13
|
+
|
|
14
|
+
cd server && yarn start:dev # 后端,端口 8000(优先读 server/.env.local)
|
|
15
|
+
cd web && yarn dev # 前端,端口 3000(注意web/ 用 yarn,不用 npm)
|
|
16
|
+
cd server && yarn seed # 执行 seed(页面/资源/权限声明)
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
> gadmin2 命令需要在项目根目录执行
|
|
20
|
+
|
|
21
|
+
## Architecture Overview
|
|
22
|
+
|
|
23
|
+
### Frontend Tech Stack
|
|
24
|
+
React 18, TypeScript, Vite, Ant Design v5, Refinedev, ECharts, i18next
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
web/src/
|
|
28
|
+
├── routes/ #页面模块:user/、role/ 等
|
|
29
|
+
├── components/ # 共享 UI 组件(PageHeader、RowActions、SearchBar 等)
|
|
30
|
+
├── hooks/ # 自定义 hooks(useECharts、useDynamicResources、useListPageState 等)
|
|
31
|
+
├── providers/ # auth / data / access control provider
|
|
32
|
+
├── config/ # routeRegistry.tsx(路由注册)、http.ts
|
|
33
|
+
├── constants/# layout.ts(页面布局共享常量)
|
|
34
|
+
├── enums/ # 共享枚举
|
|
35
|
+
└── helpers/ # 工具函数(http.ts的 customRequest 等)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Backend Tech Stack
|
|
39
|
+
NestJS v10, Prisma v6, TypeScript, nest-access-control, Winston logger
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
server/src/
|
|
43
|
+
├── modules/ # 业务模块,每个含 Module → Controller → Service
|
|
44
|
+
├── generated/ # Prisma 自动生成(禁止直接修改)
|
|
45
|
+
├── lib/ # 核心:auth.guard.ts、roles.guard.ts、taihu.ts、woaAuth.ts、logger.ts
|
|
46
|
+
├── enums/ # 共享枚举
|
|
47
|
+
└── utils/ # 工具函数
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Permission Model (RBAC)
|
|
51
|
+
参考 `.agent/references/permission-model.md`
|
|
52
|
+
|
|
53
|
+
### 数据库迁移、dev/prod 模式差异、认证绕过等本地开发
|
|
54
|
+
细节见 `.agent/references/local-dev.md`。
|
|
55
|
+
|
|
56
|
+
### playwright 无头浏览器访问项目页面
|
|
57
|
+
用 `server/scripts/gen-jwt.ts` 生成临时 token。
|
|
58
|
+
|
|
59
|
+
## 开发原则(必须遵守)
|
|
60
|
+
- 使用 TypeScript 严格模式
|
|
61
|
+
- 严格遵循前、后端既有技术栈,如无必要不要引入新库
|
|
62
|
+
- 不确定时询问,不要猜;存在歧义时不要默默选择;有更简单的方案要说出来
|
|
63
|
+
- 修改 config/ui/ 或 config/prisma/ 配置后,必须在**项目根目录**执行生成命令 `gadmin2 g prisma` 或者 `gadmin2 g prisma:dev`。
|
|
64
|
+
- 修改 config/prisma/ 后必须同步检查 server/seed/:raw SQL 引用的列/表、seed 数据的必填字段与字段名要与新 schema 一致,改完需要提醒开发者 yarn seed 验证。
|
|
65
|
+
- **优先使用 skill 解决问题** skill 的决策逻辑(配置优先、DB 先于页面等)见 `.agent/references/decision-map.md`
|
|
66
|
+
- **默认业务代码范围:** 前端修改限定在 `web/src/routes/`,后端修改限定在 `server/src/modules/`、`server/seed/`。
|
|
67
|
+
- **配置驱动源码:** `config/prisma/`、`config/ui/` 可按生成流程修改;标准 CRUD 优先改配置,不要绕过配置直接改生成物。
|
|
68
|
+
- **跨切面窄白名单:** `web/src/config/routeRegistry.tsx` 仅可用于注册自定义路由。
|
|
69
|
+
- skill 中列出的目标文件不会自动扩大修改权限。除上述范围外,修改 `web/src/components/`、`web/src/hooks/`、`web/src/constants/`、`web/src/providers/`、全局认证文件,以及 `server/src/lib/`、`server/src/app.module.ts`、`server/src/main.ts` 等跨切面文件,必须由用户明确要求或确认具体实施计划,并限定为最小必要改动。
|
|
70
|
+
- **生成目录禁止直接修改:** `web/src/generated/`、`server/src/generated/` 只能由生成命令更新。
|