Project Name: Zhenhai High School Volunteer Management System (ZVMS) - Backend Version: 4.0 Language: Python Framework: FastAPI Database: MongoDB Report Date: August 14, 2025
ZVMS4 is a comprehensive volunteer management system backend designed for Zhenhai High School. The system manages student volunteer activities, time tracking, user authentication, group management, and administrative functions. It's built using modern Python technologies with a focus on async operations and real-time capabilities.
- FastAPI: Modern, fast web framework for building APIs with Python 3.7+
- Python: Primary programming language
- Uvicorn: ASGI server for running the FastAPI application
- MongoDB: NoSQL document database
- Motor: Async MongoDB driver for Python
- AsyncIOMotorClient: Async MongoDB client
- bcrypt: Password hashing
- OAuth2PasswordBearer: Token-based authentication
- RSA encryption: Public/private key pair for secure operations
- AES encryption: Symmetric encryption for sensitive data
- Socket.IO: Real-time bidirectional event-based communication
- python-socketio: Socket.IO server implementation
- APScheduler (AsyncIOScheduler): Advanced Python Scheduler for background tasks
- Pandas: Data manipulation and analysis
- OpenPyXL: Excel file operations
- ReportLab: PDF generation
- OpenAI API: AI-powered features
- Anthropic Claude API: Alternative AI provider
- Merriam-Webster Dictionary API: Dictionary services
- DeepL API: Translation services
- Desmos API: Mathematical graphing
- OpenWeather API: Weather data
├── main.py # FastAPI application entry point
├── database.py # MongoDB connection and configuration
├── settings.py # Configuration and API keys
├── config.py # Application constants
├── routers/ # API route handlers
├── typings/ # Pydantic models and type definitions
├── util/ # Utility functions and helpers
├── tasks/ # Background task implementations
└── conversion/ # Data conversion utilities
- users_router.py: User authentication, profile management
- activities_router.py: Volunteer activity management
- groups_router.py: Class/group management
- exports_router.py: Data export functionality
- imports_router.py: Data import functionality
- logs_router.py: System logging and audit trails
- times_router.py: Time tracking and calculations
- activity_statistics_router.py: Analytics and reporting
- mcp_router.py: MCP (Model Context Protocol) integration
The system includes v2 implementations for:
- activities_v2_router.py
- users_v2_router.py
- groups_v2_router.py
This suggests ongoing API evolution and backward compatibility support.
- User: Student/admin user management
- Activity: Volunteer activity definitions
- Group: Class/organizational groups
- Time: Time tracking records
- Log: System audit logs
- Notification: System notifications
- Rating: Activity rating system
- Trophy: Achievement system
The system uses MongoDB with two databases:
- zvms: Legacy/current database
- zvms_new: New database structure
- Users: Student and administrator accounts
- Activities: Volunteer activities and events
- Groups: Classes and organizational units
- Times: Time tracking records
- Logs: System audit trails
- Notifications: User notifications
-
Authentication System
- JWT token-based authentication
- Password hashing with bcrypt
- Role-based access control (student, secretary, department, admin)
-
Encryption
- RSA public/private key pairs
- AES symmetric encryption
- Secure credential storage
-
CORS Configuration
- Configured for specific frontend domains
- Supports development and production environments
The system implements complex volunteer time calculations with different rates:
- BASE_ON_CAMPUS: 25 hours baseline
- BASE_OFF_CAMPUS: 15 hours baseline
- BASE_SOCIAL_PRACTICE: 18 hours baseline
- ON_TO_OFF_RATE: 1/3 conversion rate
- OFF_TO_ON_RATE: 1/2 conversion rate
- On-campus: School-based activities
- Off-campus: External activities
- Social-practice: Community service
The system implements scheduled tasks for:
- compute_tasks: Automatic time calculations
- generate_reports: Periodic report generation
- wash_data: Data cleaning and maintenance
The system supports:
- Excel file imports/exports
- PDF certificate generation
- Data archiving and backup
- Batch data processing
- Primary language: Chinese (zh-CN)
- Font support: Source Han Serif SC Medium
- Fallback: English (en-US)
- settings.py: Contains API keys and configuration
- settings.example.py: Template for environment setup
- Local MongoDB setup (mongodb://127.0.0.1:27017)
- Cloud MongoDB option available
- nginx: Web server configuration
- supervisor.conf: Process management
- config.sh: Setup scripts
The system includes conversion utilities for migrating data:
- activities.py: Activity data conversion
- groups.py: Group data conversion
- convert_v2.py: Version 2 migration utilities
- Create: New user registration with validation
- Read: User profile retrieval, search, and filtering
- Update: Profile modifications, password changes, role assignments
- Delete: User account deactivation and data archival
- Create: Activity creation with type classification (specified, special, social, scale)
- Read: Activity listing, filtering by status, type, and date ranges
- Update: Activity details modification, status changes, member management
- Delete: Activity cancellation and historical preservation
- Create: Class/organizational group creation
- Read: Group hierarchy browsing, member listings
- Update: Group information updates, member assignments
- Delete: Group dissolution with member reassignment
- Create: Time record creation for volunteer activities
- Read: Time tracking history, individual and aggregate reports
- Update: Time record corrections and validations
- Delete: Invalid time record removal
The system provides comprehensive statistical analysis for volunteer activities:
Descriptive Statistics:
- Mean: Average volunteer hours per activity
- Median: Middle value of time distributions
- Mode: Most frequent volunteer duration
- Standard Deviation: Variability in volunteer participation
- Min/Max Values: Range of volunteer hours
- Variance: Spread of data points
- Percentiles: 25th and 75th percentile calculations
- Total Participants: Count of volunteers per activity
Implementation Features:
- Uses NumPy and SciPy for statistical computations
- Real-time calculation of distribution metrics
- Support for activity-specific analytics
- Historical trend analysis capabilities
Complex volunteer time calculation engine with:
Base Requirements:
- On-campus activities: 25 hours baseline
- Off-campus activities: 15 hours baseline
- Social practice: 18 hours baseline
Conversion Mechanisms:
- On-campus to off-campus rate: 1:3 conversion
- Off-campus to on-campus rate: 1:2 conversion
- Maximum exceed discount: 100 hours cap
Advanced Features:
- Automatic time aggregation across activity types
- Surplus hour redistribution algorithms
- Credit transfer between activity categories
- Compliance checking against graduation requirements
Supported Formats:
- Excel (.xlsx) spreadsheets
- PDF certificates and reports
- JSON data dumps
- CSV for data analysis
Export Types:
- Individual student reports
- Class-wide summaries
- Activity participation records
- Time tracking reports
- Administrative dashboards
Background Processing:
- Asynchronous export task management
- Progress tracking with status updates
- Large dataset handling with pagination
- Cached export generation for performance
Data Sources:
- Excel file batch imports
- CSV data integration
- Legacy system migrations
- External activity databases
Validation Pipeline:
- Data format verification
- Duplicate detection and handling
- Constraint validation
- Error reporting and rollback
- Live activity updates
- Real-time volunteer registration
- Instant notification delivery
- Admin dashboard live metrics
Types:
- Activity announcements
- Registration confirmations
- Status change alerts
- Deadline reminders
- Achievement notifications
Delivery Channels:
- In-app notifications
- Real-time push updates
- Email integration (configurable)
- SMS alerts for critical updates
User Search:
- Name, ID, class, and role filtering
- Activity participation history
- Time contribution rankings
- Achievement and trophy listings
Activity Search:
- Type, status, and date range filters
- Location-based filtering
- Organizer and participant searches
- Capacity and availability checks
Advanced Queries:
- Complex boolean logic support
- Fuzzy matching for names
- Regular expression patterns
- Geospatial queries for activities
System Logs:
- User authentication events
- Data modification tracking
- Administrative actions
- System performance metrics
Audit Trail:
- Complete change history
- User action attribution
- Timestamp precision
- Rollback capabilities
Compliance Features:
- Data retention policies
- Privacy protection measures
- Access control monitoring
- Regulatory compliance reporting
Features:
- PDF certificate generation
- Custom template support
- Digital signature integration
- Batch processing capabilities
- Multi-language support (Chinese/English)
Report Types:
- Individual volunteer summaries
- Class performance reports
- Activity impact assessments
- Statistical analysis reports
- Compliance verification documents
Daily Tasks:
- Time calculation updates
- Report generation
- Data validation checks
- Cache refresh operations
Periodic Maintenance:
- Database optimization
- Log rotation
- Backup operations
- System health checks
Event-driven Tasks:
- Registration confirmations
- Status change notifications
- Deadline reminders
- Achievement calculations
V1 APIs: Legacy endpoints with deprecation notices V2 APIs: Enhanced functionality with:
- Improved data models
- Better performance optimization
- Enhanced security features
- Expanded functionality
Migration Support:
- Backward compatibility layers
- Data conversion utilities
- Gradual migration tools
- Client upgrade assistance
AI Services:
- OpenAI integration for content analysis
- Anthropic Claude for advanced text processing
- Natural language processing for activity descriptions
Utility Services:
- Weather API for outdoor activity planning
- Translation services for multilingual support
- Dictionary API for content validation
- Mathematical graphing for statistics visualization
- Advanced AI model integration
- Context-aware processing
- Intelligent content generation
- Automated analysis capabilities
- Connection pooling (10 min/max connections)
- Async query processing
- Index optimization strategies
- Query performance monitoring
- Export result caching
- User session management
- Activity data caching
- Statistical computation caching
- Horizontal scaling support
- Load balancing capabilities
- Resource usage monitoring
- Performance bottleneck detection
- Modern Architecture: Uses FastAPI for high performance and automatic API documentation
- Async Operations: Full async/await support for better scalability
- Real-time Features: Socket.IO integration for live updates
- Comprehensive Type System: Extensive use of Pydantic models
- Security: Multiple layers of authentication and encryption
- Extensibility: Modular router design and v2 API support
- External Integrations: Rich set of third-party API integrations
- Background Processing: Scheduled task system for maintenance
- Configuration Management: API keys are hardcoded in settings.py (should use environment variables)
- Documentation: Limited README and code documentation
- Testing: No visible test suite or testing framework
- Requirements: Empty requirements.txt file
- Error Handling: Could benefit from more comprehensive error handling
- Logging: Basic logging setup could be enhanced
- Database Schema: No formal schema documentation
- Exposed API Keys: Sensitive keys are visible in settings.py
- CORS Origins: Should validate and restrict CORS origins in production
- Input Validation: Ensure comprehensive input validation across all endpoints
- Rate Limiting: No visible rate limiting implementation
The application appears production-ready with:
- Nginx configuration
- Supervisor process management
- MongoDB connection pooling
- CORS configuration for production domains
-
Immediate Actions:
- Move API keys to environment variables
- Create proper requirements.txt file
- Add comprehensive documentation
- Implement test suite
-
Security Enhancements:
- Add rate limiting
- Implement request validation middleware
- Add security headers
- Regular security audits
-
Performance Optimizations:
- Add database indexing strategy
- Implement caching layer
- Monitor and optimize query performance
-
Monitoring & Logging:
- Add structured logging
- Implement health checks
- Add performance monitoring
- Error tracking and alerting
ZVMS4 backend is a well-architected volunteer management system with modern Python technologies. The use of FastAPI, MongoDB, and async operations provides a solid foundation for scalability. The system demonstrates good separation of concerns with its modular router design and comprehensive type system.
While the core architecture is sound, attention should be paid to security practices, documentation, and testing to ensure production readiness and maintainability.