全新的前端ui
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
schema_version: 1
|
||||
module_path: ""
|
||||
title: Luxsin 音频设备管理后台(前后端单体仓库)
|
||||
scope: []
|
||||
source_files: []
|
||||
depends_on: []
|
||||
related_to: []
|
||||
@@ -0,0 +1 @@
|
||||
后端:Express + Sequelize + JWT + Redis + Meilisearch + AWS S3(X9 OTA 包存储)+ squiglink 曲线客户端;前端:Vue 3 + Vite + Element Plus + axios;构建与运行:pnpm v11、Node 22、Docker Compose(Nginx 静态托管 + Node API)。
|
||||
@@ -0,0 +1,7 @@
|
||||
仓库采用前后端分离、Docker Compose 编排的单体部署形态:
|
||||
- `backend/src` 为 Express 应用,入口 `app.js` 通过 `routes/index.js` 聚合各业务路由(auth、brands、models、ota、blacklist、users 等),按 MVC 分层组织:`models/` 使用 Sequelize 定义数据模型并统一由 `models/index.js` 初始化连接;`services/` 封装外部依赖(S3、Redis EQ 缓存、Meilisearch、squiglink 曲线服务、OTA 存储);`middleware/` 注入认证与请求体大小限制;`validators/` 用 zod 校验入参。
|
||||
- `frontend/` 为 Vue 3 + Element Plus SPA,Vite 构建产物 `dist/` 由 Nginx 容器静态托管,并通过 `/api` 反向代理到后端 8000 端口;`src/api/` 按领域拆分 API 调用,`views/` 对应功能页面,`components/` 存放通用组件(TabsView、ChangePasswordDialog 等)。
|
||||
- `frontend_v2/` 是基于 Soybean Admin 模板的重构分支,采用 pnpm workspace 多包结构(@soybeanjs/axios、hooks、scripts 等),尚未替换主前端。
|
||||
- `autoeq/` 存放第三方测量 CSV/TXT 数据及日期归档,供 OTA 推送时读取频响曲线。
|
||||
- 根级 `docker-compose.yml` 编排 backend(Node 22 Alpine 镜像)与 frontend(nginx:alpine)两个服务,共享 `audio-network` 网络,宿主机卷挂载 `/data/projects/source` 用于 X9 OTA 包本地存储。
|
||||
- 部署脚本 `scripts/upload.sh` 负责将 dist、后端源码、compose 文件上传至服务器 `/data/project/dashboard/`,环境变量集中维护在根 `.env`。
|
||||
@@ -0,0 +1 @@
|
||||
基于 Node.js + Vue 3 的 Luxsin 音频设备与 OTA 升级管理后台,提供品牌/型号/黑名单/OTA/用户等管理能力。
|
||||
@@ -0,0 +1 @@
|
||||
首次部署需在服务器创建 `/data/project/dashboard/.env`(参考 `.env.example`)并手动上传代码后执行 `docker compose build --no-cache backend && docker compose up -d`;本地开发推荐先 `cd frontend && pnpm build` 生成 dist,再分别启动后端与前端 dev server,或直接用 `./scripts/upload.sh all` 一键上传。
|
||||
@@ -0,0 +1,5 @@
|
||||
- 后端路由按领域拆分为独立文件(如 `routes/models.js`、`routes/ota.js`),并在 `routes/index.js` 中统一注册,控制器内直接操作 Sequelize model。
|
||||
- 每个业务模块配套一个 `validators/<module>.js`,使用 zod schema 对入参进行结构化校验,路由层在执行业务前调用 validator。
|
||||
- 对外部依赖(S3、Redis、Meilisearch、squiglink)统一收敛到 `services/` 目录下的单一 client 文件,路由层不直接调用 SDK。
|
||||
- 前端 API 调用按领域拆分到 `src/api/*.js`,统一通过 `src/utils/request.js` 封装的 axios 实例发起,携带 JWT 与基础路径。
|
||||
- 前端视图按功能域划分目录(`views/brand/`、`views/model/`、`views/ota/` 等),复杂页面内部再细分 `components/` 与 `composables/`。
|
||||
Reference in New Issue
Block a user