.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 注释 |
data/ 目录),备份 = 拷文件;node:sqlite 驱动,无任何原生编译依赖;.db 文件放在网络共享盘上让多人同时写 —— 网络文件系统的文件锁不可靠,可能锁库甚至损坏文件。多人共用请用 MySQL。utf8mb4;pnpm db:init:mysql(需要先手工建库与账号,见 scripts/db/00_init_database.sql —— 幂等脚本,含建库 / 建账号 / 授权 / 校验四段);USAGE),不要用 root 连库。两库共用同一套 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 预览) |
pnpm build && pnpm preview(或用进程管理器常驻,见下);http://<内网IP>:<端口>。client_max_body_size(建议 220m,略高于单文件 200 MB 上限)。systemd unit 或 pm2。注意:使用平台的人是 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,定时任务清理)
备份要点:
data/uploads/ 必须成套备份,只备 .db 等于没备(文件本体不在库里,库里只有元信息);tmp/*.part 半截文件与「磁盘有、库里无」的真孤儿。admin5555;NUXT_SESSION_PASSWORD 使用 ≥32 字符随机串(不要用示例值);.env 不进版本库(已在 .gitignore,确认部署流程也不会带出去);uploads/ 目录不被静态暴露(应用内所有文件访问都过接口鉴权,不要额外配静态目录映射)。