Files
dashboard/.qoder/repowiki/knowledge/zh/Audio Dashboard 全栈项目根(前后端 + 部署编排)/架构设计.md
T

6 lines
1.4 KiB
Markdown
Raw Normal View History

2026-07-17 17:17:22 +08:00
仓库为 monorepo 根目录,按职责拆分为三个顶层子工程:
- `backend/`Express + Sequelize 后端,入口 `src/app.js`,按领域分层组织——`config/` 加载数据库、Redis、日志等运行时配置;`models/` 定义 Sequelize 模型并通过 `index.js` 统一导出;`routes/` 暴露 REST 接口;`services/` 封装外部依赖(Curve 客户端、S3/OSS 存储、Meilisearch、OTA 存储、用户初始化);`middleware/` 提供鉴权与请求体大小限制;`validators/` 使用 zod 校验入参;`utils/` 集中 JWT 与密码工具。
- `frontend/`:基于 Vite + Vue3 + Naive UI 的管理后台,包含 `packages/` 下的内部 pnpm workspace 子包(alova、axios、hooks、materials、scripts、uno-preset、utils),业务路由与页面位于 `src/views/`,状态由 Pinia store 管理,API 调用集中在 `src/service/api`
- `autoeq/`:存放历史测量数据 CSV/TXT 与生成脚本,作为离线参考数据集。
部署层由根级 `docker-compose.yml` 编排两个服务:`backend` 基于 `backend/Dockerfile` 构建 Node 镜像,`frontend` 直接使用 `nginx:alpine` 挂载 `frontend/dist` 静态资源,两者共享 `audio-network` 网络并通过 `/api` 反向代理通信;宿主机卷 `/data/projects/source` 用于 X9 OTA 升级包持久化。本地开发可通过 `pnpm --dir frontend build && ./scripts/upload.sh all` 一键构建并上传至服务器。