# TestBoardManagementSystem **Repository Path**: hssfp/TestBoardManagementSystem ## Basic Information - **Project Name**: TestBoardManagementSystem - **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-02-13 - **Last Updated**: 2026-03-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 测试单板使用管理系统 为嵌入式开发团队设计的开箱即用、极简、高性能的单板预约管理系统。 ## 技术栈 - **框架**: Next.js 15 (App Router) - **UI**: Tailwind CSS + Shadcn UI (工业极简风) - **数据库**: SQLite + Prisma ORM - **状态管理**: React Server Actions - **部署**: Docker ## 功能特性 - 单板列表查看与搜索 - 按状态筛选(闲置/使用中/故障) - 单板借用与归还 - 管理员后台(添加/编辑/删除单板) - 局域网部署支持 ## 项目结构 ``` test-board-management-system/ ├── app/ │ ├── actions/ # Server Actions │ │ ├── board.ts # 单板CRUD操作 │ │ └── booking.ts # 预约/归还操作 │ ├── admin/ # 管理员页面 │ │ └── page.tsx │ ├── boards/ │ │ └── page.tsx # 单板列表/看板 │ ├── components/ # 自定义组件 │ │ ├── BoardCard.tsx │ │ ├── BorrowDialog.tsx │ │ ├── SearchBar.tsx │ │ └── StatusBadge.tsx │ ├── lib/ │ │ └── db.ts # 数据库配置 │ └── ... ├── components/ui/ # Shadcn UI组件 ├── prisma/ │ ├── schema.prisma # 数据模型 │ └── seed.ts # 初始化数据 ├── Dockerfile ├── docker-compose.yml └── ... ``` ## 本地开发 ### 1. 安装依赖 ```bash npm install ``` ### 2. 配置数据库 ```bash # 初始化数据库 npm run db:push # 填充示例数据(可选) npm run db:seed ``` ### 3. 启动开发服务器 ```bash npm run dev ``` 访问 [http://localhost:3000](http://localhost:3000) ## Docker 部署 ### 方式一:使用 Docker Compose(推荐) ```bash # 构建并启动 docker-compose up -d # 查看日志 docker-compose logs -f # 停止服务 docker-compose down ``` ### 方式二:使用 Docker 命令 ```bash # 构建镜像 docker build -t test-board-management . # 运行容器(数据持久化) docker run -d \ --name test-board-management \ -p 3000:3000 \ -v evb-data:/app/data \ test-board-management ``` ## 局域网部署说明 本项目设计为在 Linux 服务器上部署,局域网内其他设备通过浏览器访问: 1. **服务器准备**:确保 Linux 服务器已安装 Docker 和 Docker Compose 2. **端口访问**:开放 3000 端口(或修改配置使用其他端口) 3. **防火墙配置**: ```bash # Ubuntu/Debian sudo ufw allow 3000 # CentOS/RHEL sudo firewall-cmd --permanent --add-port=3000/tcp sudo firewall-cmd --reload ``` 4. **访问地址**:`http://服务器IP:3000` ## 数据管理 ### 查看数据库位置 - **Docker 部署**: `/app/data/database.db`(在容器内,挂载到 Docker volume) - **本地开发**: `./prisma/data.db` ### 备份数据库 ```bash # Docker 部署 docker cp test-board-management:/app/data/database.db ./backup-$(date +%Y%m%d).db # 本地开发 cp ./prisma/data.db ./backup-$(date +%Y%m%d).db ``` ### 恢复数据库 ```bash # Docker 部署 docker cp ./backup-20240213.db test-board-management:/app/data/database.db docker restart test-board-management ``` ## API 说明 ### Server Actions 本项目使用 React Server Actions,直接在前端调用,无需 API 路由。 **板卡操作** (`app/actions/board.ts`): - `getBoards(filter?)` - 获取单板列表 - `getBoard(id)` - 获取单板详情 - `createBoard(data)` - 创建单板 - `updateBoard(id, data)` - 更新单板 - `deleteBoard(id)` - 删除单板 - `getBoardStats()` - 获取统计信息 **借用操作** (`app/actions/booking.ts`): - `borrowBoard(data)` - 借用单板 - `returnBoard(boardId)` - 归还单板 - `getActiveBorrowing(boardId)` - 获取活跃借用记录 - `getAllBorrowings(page?, limit?)` - 获取所有借用记录 ## 配置说明 ### 环境变量 - `DATABASE_URL`: 数据库连接字符串(默认使用 SQLite) - `NODE_ENV`: 运行环境(development/production) - `PORT`: 服务端口(默认 3000) ### 数据模型 ```prisma model Board { id String @id @default(cuid()) name String // 单板名称 model String // 型号 serialNumber String @unique // 唯一编号 status Status @default(IDLE) // 状态 lanIp String? // 局域网IP serialPort Int? // 串口服务器端口 createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } enum Status { IDLE // 闲置 IN_USE // 使用中 FAULT // 故障 } ``` ## 故障排查 ### 问题:无法访问数据库 - 检查数据库文件路径是否正确 - 确认 Docker volume 挂载正确 - 查看容器日志:`docker logs test-board-management` ### 问题:better-sqlite3 编译失败 - Windows 开发环境:项目已配置为使用预编译二进制 - Linux 生产环境:Dockerfile 中已包含编译工具 ### 问题:局域网无法访问 - 检查防火墙规则 - 确认服务器 IP 地址正确 - 使用 `netstat -tlnp | grep 3000` 确认端口监听 ## 许可证 MIT