修改 wiki
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
schema_version: 1
|
||||
module_path: backend
|
||||
title: 耳机品牌与型号管理后端 API
|
||||
scope:
|
||||
- backend/
|
||||
source_files: []
|
||||
depends_on: []
|
||||
related_to:
|
||||
- path: frontend
|
||||
@@ -0,0 +1 @@
|
||||
Node.js 22 (Alpine) + Express v4;Sequelize v6 + mysql2 访问 MySQL;ioredis 连接 Redis 缓存 EQ;@aws-sdk/client-s3 上传 OTA 包与测量文件;axios 调用 Meilisearch 搜索索引;jsonwebtoken 签发/验证 JWT;zod 做参数校验;winston 输出到 `logs/app.log`。
|
||||
@@ -0,0 +1,4 @@
|
||||
- 入口 `src/app.js` 加载 `.env`(`config/loadEnv.js` 从仓库根目录读取)、注册 CORS/JSON/bodyLimit 中间件、挂载路由数组并调用 `sequelize.sync()` 建表后执行 `ensureBootstrapSuperAdmin` 引导超级管理员。
|
||||
- 分层组织:`routes/` 按业务域拆分(auth, brands, models, ota, blacklist, otaTargetDevice, shareCodeLogs, users, dashboard),由 `routes/index.js` 汇总导出供 app 遍历挂载;`models/` 使用 Sequelize 定义实体并通过 `index.js` 统一导出;`services/` 封装外部依赖(S3、Redis、Meilisearch、曲线服务);`middleware/` 提供认证与请求体大小限制;`utils/` 暴露 JWT、密码哈希、统一响应格式;`validators/` 以 zod schema 校验入参。
|
||||
- 认证边界:`middleware/auth.js` 解析 Bearer token 注入 `req.user`,受保护路由在各自文件中通过 `router.use(authMiddleware)` 全局启用,仅 `/health`、根路径等公开接口例外;`requireSuperAdmin` 用于超管专用端点。
|
||||
- 启动流程:`start.sh` → `node src/app.js` → `loadEnv` → `sequelize.sync()` → `userBootstrap.ensureBootstrapSuperAdmin()` → `app.listen(8083)`,异常时降级继续运行。
|
||||
@@ -0,0 +1 @@
|
||||
基于 Express + Sequelize 的 RESTful 服务,提供耳机品牌、型号、OTA 升级、用户与黑名单管理的后端接口。
|
||||
@@ -0,0 +1 @@
|
||||
包管理器锁定为 `pnpm@11.5.2`,安装需 `pnpm install --frozen-lockfile`;本地开发可用 `pnpm dev`(nodemon 热重载),生产通过 `start.sh`/`stop.sh`/`restart.sh` 或 Docker 镜像启动;首次启动若 `dashboard_user` 为空则根据 `DASHBOARD_ADMIN_USERNAME/PASSWORD` 环境变量创建初始超级管理员。
|
||||
@@ -0,0 +1,5 @@
|
||||
- 所有 API 返回统一 JSON 结构,包含 `code`(1:成功 / 0:错误 / 2:无数据)、`msg` 和 `data` 字段,由 `utils/response.js` 的 `ApiResponse` 生成。
|
||||
- 受保护路由在各自文件顶部通过 `router.use(authMiddleware)` 全局启用 JWT 校验,仅健康检查等公开接口例外。
|
||||
- 更新操作显式判断请求体字段是否为 `undefined` 或 `'null'` 字符串,区分“未提供”与“设为空”,避免覆盖现有值。
|
||||
- 关键业务动作(登录、CRUD、权限拒绝)通过 `logger.info/warn/error` 记录到 `logs/app.log`,错误堆栈附带上下文信息。
|
||||
- 环境变量集中通过 `config/loadEnv.js` 从仓库根目录 `.env` 加载,Docker 场景下由 compose env_file 注入而不覆盖已有变量。
|
||||
Reference in New Issue
Block a user