Skip to content

RoadAspen/SailStack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nestjs + Vue 实现若依管理系统

结合你的需求(单仓库管理全栈项目+未来拓展 React/H5),推荐采用「monorepo 全栈仓库结构」,通过统一的工程化配置管理多端应用(Vue3 管理端、未来的 React 应用、H5 端)和后端服务,同时保留扩展性。以下是调整后的仓库结构设计和版本计划:

一、全栈 Monorepo 仓库结构设计

project-root/
├── .github/               # CI/CD配置(GitHub Actions)
├── apps/                  # 应用层(各端独立应用)
│   ├── api/               # NestJS后端服务(核心后端)
│   ├── admin-vue/         # Vue3管理端(当前重点)
│   ├── admin-react/       # 预留:React管理端(未来拓展)
│   └── h5/                # 预留:H5应用(未来拓展)
├── packages/              # 共享包(跨应用复用代码)
│   ├── shared-types/      # 共享类型定义(前后端通用API类型、枚举等)
│   ├── shared-utils/      # 共享工具函数(如日期处理、加密等,前后端通用)
│   ├── ui-vue/            # Vue专用UI组件库(基于antd-design-vue封装)
│   └── ui-react/          # 预留:React专用UI组件库(未来拓展)
├── docs/                  # 项目文档(架构、接口、开发规范)
├── docker/                # Docker配置(各应用部署镜像)
├── .eslintrc.js           # 根目录ESLint配置(子项目可继承)
├── .prettierrc            # 统一代码格式化规则
├── pnpm-workspace.yaml    # pnpm workspace配置(管理依赖)
└── README.md              # 项目说明

核心设计思路

  1. ** apps/**:存放可独立运行的应用(后端服务、各前端应用),未来新增 React/H5 只需在此目录添加,不影响现有结构。
  2. ** packages/**:提取共享代码(类型、工具、组件),避免重复开发(如前后端通用的 API 接口类型放在shared-types,两端都能引用)。
  3. ** 统一工程化**:根目录配置 ESLint、Prettier、Husky,子项目通过extends继承,保证代码规范一致。

二、调整后的版本计划(兼顾扩展性)

版本 0.1:全栈 Monorepo 基建与技术栈初始化(2 周)

核心目标:搭建支持多端拓展的仓库结构,跑通前后端基础链路
功能范围

  • 初始化仓库结构(含apps/packages目录,预留 React/H5 位置)
  • 后端:NestJS 项目初始化,PostgreSQL+Prisma 连接
  • 前端:Vue3 管理端初始化,antd-design-vue 集成

技术栈实践

  • ** 工程化**:

    • pnpm workspace 配置:pnpm-workspace.yaml声明apps/*packages/*,实现跨应用依赖引用(如admin-vue依赖shared-types)。
    • 统一配置:根目录eslint(支持 TS、Vue、React 语法)、prettier,子项目通过"extends": "../../.eslintrc.js"继承。
    • 类型共享:packages/shared-types定义基础类型(如BaseResponse<T>接口),后端接口返回和前端请求都引用此类型。
  • ** 后端(apps/api)**:

    • NestJS:初始化模块(app.moduledatabase.module),配置 Prisma(prisma/schema.prisma连接 PostgreSQL)。
    • Zod:定义通用响应 Schema(ApiResponseSchema),统一接口返回格式({ code: number; data: T; msg: string })。
  • ** 前端(apps/admin-vue)**:

    • Vue3+TS:vite初始化,配置 antd-design-vue 按需导入(unplugin-vue-components)。
    • Axios:封装请求工具(@/utils/request.ts),引用shared-typesBaseResponse类型,实现响应类型自动推导。

输出物

  • 可运行的全栈仓库结构(后端启动成功,前端显示基础页面)。
  • 共享类型库shared-types、工具库shared-utils雏形。
  • 《仓库结构与开发规范文档》(含新增应用的流程)。

版本 0.2:用户认证体系(2 周)

核心目标:实现登录流程,验证跨应用类型共享
功能范围

  • 后端:登录/注册接口(返回 JWT token)
  • 前端:登录页(antd 表单)、token 存储与路由拦截

技术栈实践

  • ** 类型共享**:

    • shared-types定义LoginDto(前端表单/后端接收的参数类型)、UserInfo(登录后返回的用户信息),前后端同步使用。
  • ** 前端(admin-vue)**:

    • Pinia:stores/auth.ts管理登录状态,引用UserInfo类型。
    • 表单验证:antd Form + Zod(前端用zod验证表单,与后端LoginDtoSchema保持一致)。
    • 路由守卫:vue-router拦截未登录请求,跳转登录页。
  • ** 后端(api)**:

    • Prisma:User模型 CRUD(prisma.user.findUnique查用户,bcrypt加密密码)。
    • Zod:LoginDtoSchemausername: z.string().min(3))绑定到控制器,与前端表单验证规则对齐。
    • JWT:@nestjs/jwt生成 token,passport-jwt验证 token。

输出物

  • 完整登录流程(前端表单 → 后端验证 →token 存储 → 页面跳转)。
  • 前后端类型同步示例(LoginDto在两端复用)。

版本 0.3:用户/角色管理(RBAC)+ 共享组件封装(2-3 周)

核心目标:实现基础权限功能,强化前端组件复用
功能范围

  • 后端:用户/角色 CRUD 接口(支持分页、搜索)
  • 前端:用户管理页(表格)、角色管理页(表单)

技术栈实践

  • ** 前端共享(packages/ui-vue)**:

    • 封装ProTable组件(基于 antd Table,支持分页、搜索、批量操作),供admin-vue使用。
    • 封装ProForm组件(支持 Zod 验证、动态表单项),依赖shared-utils的表单工具函数。
  • ** 前端(admin-vue)**:

    • Pinia:stores/user.ts/stores/role.ts,用shared-utilsformatDate处理时间格式化。
    • Lodash:_.debounce处理搜索输入防抖,_.pick筛选表格字段。
  • ** 后端(api)**:

    • Prisma:User-Role多对多关联(中间表UserRole),关联查询(include: { roles: true })。
    • Zod:UserQuerySchema(分页参数page/size),验证查询条件。

输出物

  • 用户/角色管理功能模块。
  • ui-vue组件库雏形(ProTable/ProForm)。

版本 0.4:菜单管理+动态路由+多端架构预留(2-3 周)

核心目标:实现动态菜单,为 React/H5 预留扩展点
功能范围

  • 后端:菜单 CRUD 接口(树形结构)、用户权限菜单接口
  • 前端:动态侧边栏、路由自动注册

技术栈实践

  • ** 多端扩展准备**:

    • shared-types新增Menu类型(id/path/icon等),未来 React/H5 端可直接复用。
    • shared-utils新增treeUtils(树形数据递归处理),前后端/多端通用。
  • ** 前端(admin-vue)**:

    • 动态路由:基于后端返回的Menu数据,用vue-router addRoute注册路由,路由配置引用Menu类型。
    • 侧边栏:基于 antd Menu组件递归渲染,使用treeUtils处理树形结构。
  • ** 后端(api)**:

    • Prisma:Menu模型(parentId实现树形),递归查询(where: { parentId: null } + include: { children: true })。

输出物

  • 动态菜单与路由系统。
  • 多端通用的树形工具函数(treeUtils)。

版本 0.5:字典管理+全局状态+共享配置(2 周)

核心目标:实现字典功能,强化全局状态管理
功能范围

  • 后端:字典 CRUD 接口、缓存接口
  • 前端:字典管理页、全局字典选择器

技术栈实践

  • ** 前端共享(ui-vue)**:

    • 封装DictSelect组件(基于 antd Select),通过字典类型码自动加载数据,依赖shared-typesDictItem类型。
  • ** 前端(admin-vue)**:

    • Pinia:stores/dict.ts缓存字典数据,使用lodash.memoize避免重复请求。
  • ** 后端(api)**:

    • Redis 缓存:@nestjs/cache-manager缓存字典数据,更新时清除缓存。
    • Zod:DictSchema验证字典数据格式。

输出物

  • 字典管理模块与DictSelect组件。

版本 0.6:日志管理+数据可视化+工程化完善(2-3 周)

核心目标:实现日志监控,完善多端工程化配置
功能范围

  • 后端:操作日志记录接口
  • 前端:日志列表页、ECharts 统计图表

技术栈实践

  • ** 工程化增强**:

    • 根目录添加nxturbo(可选):优化 monorepo 构建速度(只构建变更的应用/包)。
    • 统一测试配置:根目录vitest.config.ts/jest.config.ts,子项目继承(如admin-vue用 vitest,api用 jest)。
  • ** 前端(admin-vue)**:

    • ECharts:封装ProChart组件(放在ui-vue),实现登录统计图表,数据处理用shared-utilsformatNumber
  • ** 后端(api)**:

    • 日志拦截器:全局记录请求日志,Prisma 写入OperationLog表。

输出物

  • 日志监控与数据可视化模块。
  • 优化的 monorepo 构建与测试流程。

版本 0.7:高级功能+多端拓展准备(3 周)

核心目标:补全功能,为 React/H5 搭建基础框架
功能范围

  • 后端:部门管理、通知公告接口
  • 前端:部门管理页;初始化admin-reacth5项目骨架

技术栈实践

  • ** 新增应用初始化**:

    • apps/admin-react:用create-react-appvite初始化,集成antd,引用shared-typesshared-utils
    • apps/h5:用vite初始化 Vue3 移动端项目,集成vant,复用shared-types
  • ** 后端(api)**:

    • 数据权限:基于部门的行级权限控制。

输出物

  • 部门/通知功能模块。
  • admin-reacth5项目骨架(可运行,能调用后端 API)。

版本 0.8:性能优化+部署(2 周)

核心目标:系统调优,支持多应用独立部署
技术栈实践

  • ** 部署配置**:
    • Docker:为api/admin-vue/admin-react/h5编写独立Dockerfiledocker-compose.yml管理多服务。
    • CI/CD:GitHub Actions 配置多应用部署流程(如admin-vue推送到 CDN,api部署到服务器)。

输出物

  • 生产级部署配置(支持多应用独立部署)。

版本 1.0:验收与文档(1 周)

输出物

  • 完整的全栈系统(Vue 管理端+后端 API+React/H5 基础框架)。
  • 《多端拓展指南》(如何新增应用、复用共享包)。

三、多端拓展关键设计

  1. ** 类型同步**:通过shared-types统一 API 接口类型、枚举(如UserRoleEnum),确保前后端/多端类型一致,减少联调问题。
  2. ** 工具复用**:shared-utils只放纯逻辑工具(无框架依赖),如dateFormatencrypt,Vue/React/H5/后端均可引用。
  3. ** 组件隔离**:UI 组件按框架拆分(ui-vue/ui-react),避免框架冲突,但保持 API 设计一致(如ProTable在 Vue 和 React 中用法相似)。
  4. ** 独立部署**:每个应用(api/admin-vue等)可单独构建部署,通过环境变量配置 API 地址,互不影响。

这种结构既满足当前 Vue3+NestJS 的开发需求,又为未来 React 和 H5 拓展预留了清晰的路径,同时通过 monorepo 保证代码复用和工程化一致性。如果需要某个环节的具体配置(如 pnpm workspace 设置、多端类型共享示例),可以进一步细化说明!

修改項

新知加油站-第二頁 變更前: 当前,业界正积极探索多种智能算法在能源优化中的应用,其中以强化学习-马尔可夫决策过程和生物进化算法最具代表性——前者让系统通过反馈不断自我学习,后者则以“优胜劣汰”式的优化思维持续进化 變更後: 今天的数字能源系统越来越复杂,就像下棋一样。AI 的加入让控制不再只是“听命行事”,而是学会“主动思考”。为了解决这些难题,业界正积极应用各种智能算法。其中,强化学习就像反复试错的棋手,能通过实时经验找到最佳控制方案;生物进化算法则像筛选最优基因,能在高难度选择题中找到最完美的配置。这两种算法联手,让能源系统既能自己学习,又能持续进步,打造出一套全新聪明的、灵活的能源管理大脑。

實戰直通車 業内案例: 删除了图片, 添加了智能化接入詳情,變更了展示形式 暖通精益模型加码智能调控: 去除原先的算法流程,新增了算法的計算詳情

About

一个公寓的前后端项目

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors