63 lines
2.5 KiB
Markdown
63 lines
2.5 KiB
Markdown
# 室内装修工程污染物预测系统(复刻版)
|
||
|
||
基于原 [indoorhealthair.com](https://indoorhealthair.com/iapip-web) 功能复刻。全栈 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/ 对原站的功能抓取(截图+脚本,仅供参考)
|
||
```
|
||
|
||
## 快速开始
|
||
```bash
|
||
# 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
|
||
```
|
||
|
||
## 开发路线图
|
||
- [x] **阶段 0** 地基:monorepo、共享域、登录、布局导航
|
||
- [x] **阶段 1** 数据底座:数据模型、材料库接口、种子数据
|
||
- [x] **阶段 2** 材料库 + 模板库(收藏、自建库 CRUD、新建材料表单)
|
||
- [x] **阶段 3** 项目配置核心(新建项目、空间抽屉、选材/预计算、生成报告)
|
||
- [ ] **阶段 4** 预测引擎(接入标定散发公式、贡献率、评级)
|
||
- [ ] **阶段 5** 报告 + 历史记录(生成/查看/复用)
|
||
- [ ] **阶段 6** 联调打磨、部署
|
||
|
||
## ⚠️ 待补充的关键资产
|
||
1. **散发模型公式**:`packages/shared/src/prediction.ts` 的 `emissionRate()` 目前为占位实现,需替换为你已标定的公式。
|
||
2. **材料检测数据**:`apps/api/prisma/seed.ts` 中材料散发参数(Y0/Yp/B)为占位值,需导入真实实验室检测数据。
|
||
3. **国标限值**:`packages/shared/src/pollutants.ts` 中 GB39126-2020 / GB-T18883-2022 限值为草拟值,需按官方标准核对(GB50325-2020 已按原站抓取)。
|