6 lines
1.4 KiB
Markdown
6 lines
1.4 KiB
Markdown
仓库为 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` 一键构建并上传至服务器。 |