# 毕业设计双选系统 **Repository Path**: hopper/graduationMachingSystem ## Basic Information - **Project Name**: 毕业设计双选系统 - **Description**: 毕业设计师生双选系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-11-21 - **Last Updated**: 2025-11-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

Graduation Project Matching System

## Introduction The Graduation Project Matching System is a full-stack application based on **Monorepo** architecture, designed to help universities efficiently manage the student-teacher matching process for graduation projects. The system supports student team formation, preference submission, teacher review, intelligent allocation, and grade management with a complete workflow. Built on **RuoYi framework** and integrated with **Tauri** for cross-platform desktop applications (Windows/macOS/Linux), offering both web and desktop deployment options. ## Core Features ### Student Portal - Registration, login, and profile management - Team creation and management (leader/member roles) - Teacher preference submission (multiple ranked choices) - View allocation results - Grade inquiry ### Teacher Portal - Profile management - View student preference lists - Team review and confirmation - Grade assessment and management ### Admin Portal - Student/Teacher information management - Major management, team management - Intelligent allocation algorithm (preference-based with capacity constraints) - Manual adjustment of allocation results - Grade statistics and export - System configuration (dictionaries, menus, role permissions, etc.) ### System Features - Multi-role permission management (RBAC-based) - Intelligent matching algorithm (preference priority + capacity limits) - Real-time notification system - Data import/export (Excel) - Operation log auditing - Cache optimization (Redis) - File storage (MinIO/OSS) ## Technology Stack ### Frontend - **Framework**: Vue 3.2.45 + Vite 3.2.3 - **UI Components**: Element Plus 2.11.1 - **State Management**: Pinia 2.0.22 - **Router**: Vue Router 4.1.4 - **Desktop**: Tauri 2.x (Windows/macOS/Linux support) - **HTTP Client**: Axios 0.27.2 - **Others**: VueQuill, ECharts, Fuse.js, Cropper, etc. ### Backend - **Framework**: Midway.js 3.20 (Koa-based) - **ORM**: TypeORM 0.3.25 - **Database**: PostgreSQL / MySQL - **Cache**: Redis (cache-manager) - **Authentication**: JWT + bcryptjs - **File Storage**: MinIO - **API Docs**: Swagger - **Others**: Captcha, ExcelJS, Nodemailer, etc. ### Engineering - **Package Manager**: pnpm 10.17.1 (Workspace Monorepo) - **Code Quality**: ESLint + Prettier + Husky + Commitlint - **Testing**: Vitest + @vitest/browser - **Build**: Vite + Rollup ## Project Structure ``` graduationMachingSystem/ ├── apps/ │ ├── frontend/ # Frontend app (Vue 3 + Tauri) │ │ ├── src/ │ │ │ ├── views/ # Page views │ │ │ │ ├── home/ # Home page (student/teacher) │ │ │ │ ├── myTeam/ # Team management │ │ │ │ ├── group/ # Team list │ │ │ │ ├── allocate/ # Allocation management │ │ │ │ ├── grade/ # Grade management │ │ │ │ ├── student/ # Student management │ │ │ │ └── system/ # System management │ │ │ ├── components/ # Shared components │ │ │ ├── layout/ # Layout components │ │ │ └── api/ # API interfaces │ │ └── src-tauri/ # Tauri desktop configuration │ └── backend/ # Backend app (Midway.js) │ ├── src/ │ │ ├── controller/ # Controllers │ │ ├── service/ # Business logic │ │ ├── entity/ # Database entities │ │ ├── middleware/ # Middleware │ │ └── config/ # Configuration files ├── packages/ │ ├── components/ # Shared component library │ └── utils/ # Shared utilities ├── scripts/ # Build scripts ├── package.json # Root configuration └── pnpm-workspace.yaml # pnpm workspace config ``` ## Quick Start ### Prerequisites - Node.js >= 20.19.0 - pnpm >= 10.17.1 - PostgreSQL >= 13 or MySQL >= 8.0 - Redis >= 6.0 - Rust (only required for building Tauri desktop app) ### Installation ```bash # Clone the repository git clone https://gitee.com/yi-jingqq/graduationMachingSystem.git cd graduationMachingSystem # Install all dependencies (managed by Monorepo) pnpm install ``` ### Backend Configuration 1. **Database Configuration** Configure database connection in `apps/backend/src/config/config.default.ts`: ```typescript // PostgreSQL example typeorm: { dataSource: { default: { type: 'postgres', host: '127.0.0.1', port: 5432, username: 'your_username', password: 'your_password', database: 'graduationSystem', synchronize: false, logging: false, } } } ``` 2. **Redis Configuration** ```typescript redis: { client: { port: 6379, host: '127.0.0.1', password: '', db: 0, } } ``` 3. **MinIO Configuration (Optional)** ```typescript oss: { client: { endPoint: 'your-minio-endpoint', accessKey: 'your-access-key', secretKey: 'your-secret-key', } } ``` ### Run Backend ```bash # Navigate to backend directory cd apps/backend # Development mode (with hot reload) pnpm dev # Production build pnpm build # Production run pnpm start ``` Backend runs at: `http://localhost:7001` ### Run Frontend (Web) ```bash # Navigate to frontend directory cd apps/frontend # Development mode pnpm dev # Production build pnpm build:prod # Preview build pnpm preview ``` Frontend runs at: `http://localhost:8888` ### Build Desktop Application (Tauri) ```bash # Navigate to frontend directory cd apps/frontend # Development mode (desktop app) pnpm tauri-dev # Build Windows desktop app pnpm tauri-build:win # Build macOS desktop app pnpm tauri-build:macos # Build Linux desktop app pnpm tauri-build:linux # Build for all platforms pnpm tauri-build:all ``` After build, installers are located in `apps/frontend/src-tauri/target/release/bundle/` ## Access URLs - **Frontend Web**: http://localhost:8888 - **Backend API**: http://localhost:7001 - **API Documentation**: http://localhost:7001/swagger-ui/index.html - **Desktop App**: Run the generated installer ## Default Account The system creates a default admin account after initialization: - Username: admin - Password: admin123 (Recommend changing password immediately after first login) ## Main Modules ### 1. Team Management Module (`myTeam`) - Students can create teams (automatically become team leader) - Leaders can invite members (by student ID) - Members can apply to join teams - Support team info editing and disbanding ### 2. Preference Submission Module (`home`) - Students submit teacher preferences (multiple ranked choices) - Teachers view student preference lists - Preferences can be modified before deadline ### 3. Intelligent Allocation Module (`allocate`) - Preference-based priority algorithm - Consider teacher capacity constraints - View by major dimension - Support manual adjustment of results - Generate allocation reports ### 4. Grade Management Module (`grade`) - Teachers input grades - Multi-dimensional grading criteria - Grade review workflow - Grade statistics and export ### 5. System Management Module (`system`) - User management (students/teachers/admins) - Role and permission management - Menu management - Dictionary management - Department management - Operation logs ## Development Guide ### Monorepo Workflow ```bash # Install all dependencies in root directory pnpm install # Run all apps (parallel) pnpm dev # Build all apps pnpm build # Run tests pnpm test # Code formatting pnpm lint:prettier # ESLint check pnpm lint:eslint ``` ### Git Commit Convention This project uses Commitizen + Commitlint for commit standardization: ```bash # Use interactive commit pnpm commit # Commit format # feat: new feature # fix: bug fix # docs: documentation # style: formatting # refactor: code refactoring # test: testing # chore: build/tooling ``` ### Generate Database Entities (TypeORM) ```bash cd apps/backend pnpm generate-models ``` ## Deployment ### Backend Deployment 1. Build project: ```bash cd apps/backend pnpm build ``` 2. Deploy files: - `dist/` directory (compiled code) - `package.json` - `bootstrap.js` 3. Start in production: ```bash NODE_ENV=production node ./bootstrap.js ``` ### Frontend Deployment 1. Build project: ```bash cd apps/frontend pnpm build:prod ``` 2. Deploy `dist/` directory to static server (Nginx/CDN) ### Nginx Configuration Example ```nginx server { listen 80; server_name your-domain.com; # Frontend location / { root /path/to/frontend/dist; try_files $uri $uri/ /index.html; } # Backend API proxy location /prod-api/ { proxy_pass http://localhost:7001/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` ## Desktop Application Features - Support Windows 7+ / macOS 10.13+ / Linux - Native performance with low memory footprint - Local file access support - Auto-update (configurable) - System tray integration - Native dialogs ## FAQ ### 1. Frontend cannot connect to backend? Check `baseURL` configuration in `apps/frontend/src/utils/request.js` ### 2. Tauri build failed? Ensure Rust environment is installed: https://tauri.app/v1/guides/getting-started/prerequisites ### 3. Database connection failed? Check database configuration, network connection, and firewall settings ### 4. pnpm install failed? ```bash # Clear cache pnpm store prune # Reinstall pnpm install ``` ## Support - Submit Issue: https://github.com/graduationMachingSystem/issues - Repository: https://gitee.com/yi-jingqq/graduationMachingSystem ## License [MIT License](LICENSE) Copyright (c) 2024-2025 GraduationMachingSystem Team ## Acknowledgements - [RuoYi Framework](http://ruoyi.vip/) - [Vue.js](https://vuejs.org/) - [Element Plus](https://element-plus.org/) - [Midway.js](https://midwayjs.org/) - [Tauri](https://tauri.app/)