bim-issue-platform

配置与部署

环境变量(.env)

以 .env.example 为模板复制为 .env(不入库)。全部变量:

运行环境

变量 默认 说明
NODE_ENV development 运行环境
APP_PORT 3000 服务端口(开发模式另见 nuxt.config.ts 的 devServer.port = 5555)

数据库

变量 说明
DATABASE_CLIENT sqlite(默认推荐)/ mysql。模板里默认 mysql,单机试用请改 sqlite
DATABASE_FILE SQLite 模式的库文件路径,如 ./data/db/bim_issue.sqlite
DATABASE_HOST / DATABASE_PORT MySQL 连接地址与端口
DATABASE_NAME 库名
DATABASE_USERNAME / DATABASE_PASSWORD MySQL 账号。密码含 #、空格等特殊字符时必须用双引号包裹(不加引号会被当行内注释截断)

凭据红线:真实口令 / 连接信息只存本地 .env;仓库(含文档、脚本、源码)一律不留明文,脚本中只用 __DB_PASSWORD__ 占位符。若部署到公网或共享环境,请务必使用强口令。

会话

变量 说明
NUXT_SESSION_PASSWORD nuxt-auth-utils 会话加密密钥,≥32 字符随机串。缺失或过短会话无法建立

应用密钥(如模板中存在)

变量 说明
AUTH_SECRET 预留占位,见 .env.example 注释

数据库选择

SQLite(默认,推荐单机 / 小团队)

MySQL(多人共享 / 接入既有基础设施)

切换与迁移

两库共用同一套 Drizzle schema(server/database/schema.ts / schema.mysql.ts)与迁移脚本,切换只需改 DATABASE_CLIENT。表结构变更流程见 06-database.md。

初始化命令

命令 作用
pnpm db:init SQLite 建库 + 建表 + 自动创建默认管理员(幂等)
pnpm db:init:mysql MySQL 建表 + 自动创建默认管理员(幂等)
pnpm db:migrate 执行未应用的迁移
pnpm db:seed-tags 给项目补灌 41 项标准分类(--project <ID> / --all / --dry-run;只补缺、不改不删)
pnpm db:seed-demo 灌演示数据(--dry-run 预览)

部署形态

局域网部署(最常见)

  1. 一台常开的主机 / 服务器(Windows 或 Linux 均可),安装 Node 22 + pnpm;
  2. 按快速开始完成安装与建库;
  3. pnpm build && pnpm preview(或用进程管理器常驻,见下);
  4. 同事浏览器访问 http://<内网IP>:<端口>。

外网部署

进程常驻

注意:使用平台的人是 BIM 工程师而非运维 —— 部署脚本务必做成「关掉窗口服务也不停」或随系统自启,否则工程师顺手关掉终端窗口,平台就下线了且无人知晓。

数据目录与备份

data/
├─ bim_issue.db                  # SQLite 库(DATABASE_CLIENT=sqlite 时)
├─ uploads/<项目ID>/             # 按项目分层的文件存储
│   ├─ issues/YYYY/MM/<记录ID>.webp   # 问题截图
│   ├─ thumbs/<记录ID>.png            # 缩略图(不入库,按记录 ID 推导)
│   ├─ attach/YYYY/MM/<记录ID>.<ext>  # 过程附件
│   ├─ models/<记录ID>.ifc            # BIM 模型(暂缓展示,可上传存储)
│   └─ cover/<记录ID>.<ext>           # 项目封面
├─ avatars/<用户ID>.<ext>        # 用户头像
└─ exports/                      # 导出产物(带 TTL,定时任务清理)

备份要点:

安全清单(上线前过一遍)