AishaNafy/it3030-paf-2026-smart-campus-group-100
GitHub: AishaNafy/it3030-paf-2026-smart-campus-group-100
一个基于 Spring Boot 和 React 的集中式智慧校园运营管理平台,整合资源管理、预订审批、事件工单和通知推送,帮助校园降低管理开销、提升运营效率。
Stars: 0 | Forks: 0
# 智慧校园运营中心
## IT3030 – PAF 课程作业 2026



## 项目名称 - 智慧校园
### 项目描述
**智慧校园运营中心**是一个集中式管理系统,旨在优化大学校园的运营流程。它提供了一个强大的平台,用于管理校园资源、处理设施预订、跟踪事件报告以及促进实时通知。该系统利用现代 Web 技术为学生、管理员和技术人员确保了效率、透明度和易用性。
## 团队成员
| 姓名 | 学号 | 贡献 |
|---|---|---|
| 成员 1 | IT23334410 | 资源管理 |
| 成员 2 | IT23317758 | 预订管理 |
| 成员 3 | IT23321236 | 事件工单 |
| 成员 4 | IT23317826 | 通知 + OAuth |
## 使用技术
### 后端
- **Java 17**:核心编程语言。
- **Spring Boot 3.2.4**:用于后端逻辑的企业级框架。
- **Spring Security**:强大的身份验证和授权。
- **Spring Data MongoDB**:用于 MongoDB 的对象文档映射。
- **OAuth 2.0**:通过 Google 进行安全的第三方身份验证。
- **Lombok**:减少样板代码。
- **Maven**:依赖管理和构建工具。
### 前端
- **React 19**:用于提供动态用户体验的现代 UI 库。
- **Tailwind CSS**:用于高级样式的实用优先 CSS 框架。
- **Axios**:用于 API 通信的 HTTP 客户端。
- **React Router 7**:客户端路由。
- **Lucide React**:高质量图标集。
- **Recharts**:交互式数据可视化和仪表板。
- **jsPDF & html2canvas**:客户端 PDF 报告生成。
## 系统模块 / 功能
### 1. 资源管理
- 编目和管理校园设施(礼堂、实验室、会议室)。
- 实时状态跟踪(活跃、维护中、停止服务)。
- 详细的设施描述和可用时间段。
### 2. 预订管理
- 面向学生的端到端预订工作流。
- 用于批准、拒绝或修改预订的管理员仪表板。
- 冲突检测和容量管理。
### 3. 事件工单
- 针对设施问题(IT、维护等)的事件报告系统。
- 将工单分配给特定技术人员。
- 从“Open”到“Resolved”的状态跟踪及解决说明。
### 4. 通知 + OAuth
- 针对预订/工单更新的自动电子邮件和应用内通知。
- 使用 Google OAuth 2.0 或本地凭证的安全登录。
- 基于角色的访问控制 (RBAC)。
## 项目结构
```
PAF_2/
├── backend/ # Spring Boot Application
│ ├── src/main/java/com/smartcampus/
│ │ ├── auth/ # Authentication & Security
│ │ │ ├── controller/ # Auth APIs (Login, Register)
│ │ │ ├── model/ # AppUser, Role entities
│ │ │ ├── repository/ # User persistence
│ │ │ └── security/ # OAuth2 & Spring Security configuration
│ │ ├── booking/ # Facility Reservation Logic
│ │ ├── facilities/ # Resource & Facility Management
│ │ ├── tickets/ # Incident Ticketing System
│ │ └── notifications/ # User alerts & Notification services
│ ├── src/main/resources/
│ │ └── application.properties # Database, OAuth & Server configs
│ └── pom.xml # Maven project configuration
├── frontend/ # React Application
│ ├── src/
│ │ ├── api/ # Axios configurations & API service hooks
│ │ ├── components/ # Reusable UI components (Modals, Buttons, Layouts)
│ │ ├── pages/ # Full-page views
│ │ │ ├── AdminDashboard.jsx # Management console for Admins
│ │ │ ├── Booking/ # Booking module specific pages
│ │ │ ├── LoginPage.jsx # User authentication portal
│ │ │ └── ... # Feature-specific pages (Tickets, Facilities)
│ │ ├── App.js # Main Router and Layout wrapper
│ │ └── index.js # React entry point
│ ├── public/ # Static assets (images, favicon)
│ ├── package.json # NPM dependencies and scripts
│ └── tailwind.config.js # Tailwind CSS design system configuration
└── .github/ # CI/CD Workflow definitions
```
## API 端点摘要
| 基础路径 | 方法 | 描述 |
|:---|:---|:---|
| `/api/auth` | POST, GET | 处理用户身份验证、登录、注册和会话信息。 |
| `/api/profile` | GET, PUT | 允许用户查看和更新其个人资料信息。 |
| `/api/admin/users` | GET, POST, PATCH, DELETE | 用于管理用户账户和分配角色的管理工具。 |
| `/api/bookings` | GET, POST, PUT, DELETE | 管理设施预订、状态批准和删除日志。 |
| `/api/tickets` | GET, POST, PUT, DELETE | 用于报告和解决校园问题的事件管理系统。 |
| `/api/facilities` | GET, POST, PUT, DELETE | 校园资源(如房间、实验室和设备)的目录管理。 |
| `/api/notifications` | GET, PATCH, POST | 工单更新和预订批准决定的实时警报。 |
| `/api/reports` | GET | 为仪表板聚合数据并生成 CSV/PDF 导出。 |
| `/api/comments` | GET, POST, DELETE | 处理特定支持工单内的讨论线程和更新。 |
## 设置说明
### 前置条件
- JDK 17 或更高版本
- Node.js (v18+) & NPM
- MongoDB Atlas 账户或本地 MongoDB 实例
### 后端设置
1. 导航到 `backend` 目录。
2. 使用您的 MongoDB URI 和 OAuth 凭证更新 `src/main/resources/application.properties`。
3. 构建项目:
mvn clean install
### 前端设置
1. 导航到 `frontend` 目录。
2. 安装依赖:
npm install
## 如何运行项目
### 运行后端服务器:
- **主机:** `http://localhost:9090`
- **命令:**
mvn spring-boot:run
### 运行前端服务器:
- **主机:** `http://localhost:3000`
- **命令:**
npm start
## 身份验证
Google OAuth 2.0 使用 Spring Security 实现,以提供无缝且安全的访问。
### 角色:
- **ADMIN**:完全的系统访问权限,管理设施、预订和用户。
- **TECHNICIAN**:访问分配的工单和解决方案管理。
- **STUDENT/USER**:设施预订和事件报告。
### 默认凭证(本地登录):
| 角色 | 邮箱 | 密码 |
|:---|:---|:---|
| **Admin** | `admin@gmail.com` | `Admin@123` |
| **Technician** | `aisha@gmail.com` | `aisha123` |
| **Student** | `hirusha@gmail.com` | `12345678` |
## 环境变量
确保在您的环境或 `application.properties` 中配置了以下变量:
- `SPRING_DATA_MONGODB_URI`:MongoDB 连接字符串。
- `GOOGLE_CLIENT_ID`:Google Cloud Console Client ID。
- `GOOGLE_CLIENT_SECRET`:Google Cloud Console Client Secret。
- `SERVER_PORT`:后端服务器的端口(默认:8080)。
## CI/CD
GitHub Actions 已配置用于自动化流水线:
- **构建**:Java 和 React 项目的自动编译。
- **测试**:执行单元和集成测试。
- **代码验证**:Lint 检查和安全扫描。
## 文档与测试
- **截图**:[查看项目截图 (PDF)](./docs/screenshots.pdf)
- **测试报告**:[查看测试文档 (PDF)](./docs/testing_report.pdf)
## 部署(可选)
**前端:** [实时演示链接]
**后端:** [API 生产 URL]
## 许可证与致谢
在 MIT 许可证下分发。本项目是作为 SLIIT **IT3030 – 平台应用框架 (PAF)** 模块的一部分开发的。
**致谢:**
- **SLIIT 计算学院**:感谢其指导与支持。
- **开源社区**:感谢本项目所使用的出色工具和库。
*为 IT3030 - 平台应用框架 (PAF) 作业而创建。*
标签:CISA项目, CSV输出, Java 17, MongoDB, OAuth 2.0, PDF报告生成, React, RESTful API, Spring Boot, Spring Security, Syscalls, Tailwind CSS, 事件追踪, 实时通知, 工单管理, 提示词优化, 教育数字化, 智慧校园, 权限管理, 校园管理系统, 校园运营, 模型越狱, 现代化Web应用, 第三方认证, 统一仪表盘, 自定义脚本, 设施预订, 资源优化