# node-starter **Repository Path**: gastrodia/node-starter ## Basic Information - **Project Name**: node-starter - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-13 - **Last Updated**: 2026-03-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 安全隐患检测管理系统后端 基于 `better-sqlite3 + TypeORM + Express + AdminJS + TypeScript + pnpm` 构建的后端管理系统。 ## 功能特性 ### 数据模型 #### 隐患描述 (HiddenDanger) - **描述内容**: 隐患的详细描述(必填) - **温度描述**: 额外的温度/状态描述(可选) - **描述附件**: 可上传多张图片/视频作为描述的附件 - **温度附件**: 可上传多张图片/视频作为温度描述的附件 - **隐患等级**: 低 / 中 / 高 / 严重 - **隐患位置**: 发现隐患的具体位置 - **发现人**: 发现隐患的人员 - **发现时间**: 发现隐患的时间 - **状态**: 草稿 / 已提交 #### 问答 (Question) - 每个隐患描述最多包含 3 对问答 - **问题内容**: 问题的详细描述 - **回答内容**: 问题的回答(可选) - **问答附件**: 每个问答可以上传多张图片/视频 - **状态**: 草稿 / 已完成 #### 附件 (Attachment) - 支持多种文件类型:图片、视频、音频、文档 - 支持关联到隐患描述或问答 - 附件类型:description(描述)/ temperature(温度) ## 技术栈 - **数据库**: SQLite (better-sqlite3) - **ORM**: TypeORM - **Web框架**: Express - **管理后台**: AdminJS - **语言**: TypeScript - **包管理**: pnpm - **API文档**: OpenAPI 3.0 + Swagger UI ## 快速开始 ### 安装依赖 ```bash pnpm install ``` ### 环境配置 复制 `.env.example` 为 `.env` 并配置: ```env PORT=8000 NODE_ENV=development DB_NAME=./data/safe_inspect.db UPLOAD_DIR=./public/uploads MAX_FILE_SIZE=10485760 JWT_SECRET=your-secret-key ADMIN_JS_COOKIE_PASSWORD=your-cookie-password ``` ### 开发模式 ```bash pnpm dev ``` ### 生产构建 ```bash pnpm build pnpm start ``` ## API 接口 ### 隐患描述接口 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/hidden-dangers` | 获取隐患列表 | | POST | `/api/hidden-dangers` | 创建隐患 | | GET | `/api/hidden-dangers/:id` | 获取隐患详情 | | PUT | `/api/hidden-dangers/:id` | 更新隐患 | | DELETE | `/api/hidden-dangers/:id` | 删除隐患 | | POST | `/api/hidden-dangers/:id/submit` | 提交隐患 | ### 问答接口 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/questions/:id` | 获取问答详情 | | PUT | `/api/questions/:id` | 更新问答 | | DELETE | `/api/questions/:id` | 删除问答 | ### 附件接口 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/attachments/:id` | 获取附件信息 | | DELETE | `/api/attachments/:id` | 删除附件 | | GET | `/api/attachments/:id/download` | 下载附件 | | GET | `/api/hidden-dangers/:id/attachments` | 获取隐患附件 | | POST | `/api/hidden-dangers/:id/attachments` | 上传隐患附件 | | GET | `/api/questions/:id/attachments` | 获取问答附件 | | POST | `/api/questions/:id/attachments` | 上传问答附件 | ## 管理后台 AdminJS 管理后台地址:`http://localhost:8000/admin` ### 功能模块 1. **隐患管理**: 管理隐患描述,支持创建、编辑、删除、提交 2. **问答管理**: 管理隐患相关的问答对 3. **附件管理**: 查看和管理上传的附件 ## 数据库结构 ``` SQLite Database ├── hidden_dangers (隐患表) ├── questions (问答表) └── attachments (附件表) ``` ## 开发说明 ### 添加新的 Entity 1. 在 `src/entities/` 目录下创建新的实体类 2. 在 `src/data-source.ts` 中添加实体引用 3. 在 AdminJS 配置中添加资源 ### 添加新的 API 1. 在 `src/controllers/` 目录下创建/修改控制器 2. 在 `src/routes/` 目录下添加路由 3. 更新 OpenAPI 文档 ## 许可证 MIT License