室内装修工程污染物预测系统(复刻版)
基于原 indoorhealthair.com 功能复刻。全栈 TypeScript。
技术栈
| 层 |
选型 |
| 前端 |
Vue3 + Vite + Ant Design Vue + Pinia + Vue Router |
| 后端 |
NestJS + Prisma |
| 数据库 |
PostgreSQL |
| 包管理 |
pnpm 单仓(monorepo) |
目录结构
apps/
api/ NestJS 后端
prisma/schema.prisma 数据模型
prisma/seed.ts 种子数据(组织 + 公共材料)
src/auth/ 登录鉴权 (JWT)
src/materials/ 材料库接口
web/ Vue3 前端
src/pages/ 页面(登录/首页/材料库/模板库/历史)
src/layouts/ 顶部导航布局
src/api/ 接口封装
src/stores/ Pinia 状态
packages/
shared/ 前后端共享:污染物/标准/枚举 + 预测引擎
research/ 对原站的功能抓取(截图+脚本,仅供参考)
快速开始
# 1. 安装依赖
pnpm install
# 2. 配置数据库连接
cp apps/api/.env.example apps/api/.env
# 编辑 .env,填入 DATABASE_URL
# 3. 建表 + 种子数据
pnpm db:migrate # 创建数据库表
pnpm db:seed # 写入组织(YPJKKJ/CBMA123456) + 示例材料
# 4. 启动(前后端并行)
pnpm dev
# API: http://localhost:3000/api
# Web: http://localhost:5173 登录账号 YPJKKJ / CBMA123456
开发路线图
⚠️ 待补充的关键资产
- 散发模型公式:
packages/shared/src/prediction.ts 的 emissionRate() 目前为占位实现,需替换为你已标定的公式。
- 材料检测数据:
apps/api/prisma/seed.ts 中材料散发参数(Y0/Yp/B)为占位值,需导入真实实验室检测数据。
- 国标限值:
packages/shared/src/pollutants.ts 中 GB39126-2020 / GB-T18883-2022 限值为草拟值,需按官方标准核对(GB50325-2020 已按原站抓取)。