upskill-event-manager/docs/TRAINER-CERTIFICATION-REFACTORING-PLAN.md
Ben c3e7fe9140 feat: comprehensive HVAC plugin development framework and modernization
## Major Enhancements

### 🏗️ Architecture & Infrastructure
- Implement comprehensive Docker testing infrastructure with hermetic environment
- Add Forgejo Actions CI/CD pipeline for automated deployments
- Create Page Object Model (POM) testing architecture reducing test duplication by 90%
- Establish security-first development patterns with input validation and output escaping

### 🧪 Testing Framework Modernization
- Migrate 146+ tests from 80 duplicate files to centralized architecture
- Add comprehensive E2E test suites for all user roles and workflows
- Implement WordPress error detection with automatic site health monitoring
- Create robust browser lifecycle management with proper cleanup

### 📚 Documentation & Guides
- Add comprehensive development best practices guide
- Create detailed administrator setup documentation
- Establish user guides for trainers and master trainers
- Document security incident reports and migration guides

### 🔧 Core Plugin Features
- Enhance trainer profile management with certification system
- Improve find trainer functionality with advanced filtering
- Strengthen master trainer area with content management
- Add comprehensive venue and organizer management

### 🛡️ Security & Reliability
- Implement security-first patterns throughout codebase
- Add comprehensive input validation and output escaping
- Create secure credential management system
- Establish proper WordPress role-based access control

### 🎯 WordPress Integration
- Strengthen singleton pattern implementation across all classes
- Enhance template hierarchy with proper WordPress integration
- Improve page manager with hierarchical URL structure
- Add comprehensive shortcode and menu system

### 🔍 Developer Experience
- Add extensive debugging and troubleshooting tools
- Create comprehensive test data seeding scripts
- Implement proper error handling and logging
- Establish consistent code patterns and standards

### 📊 Performance & Optimization
- Optimize database queries and caching strategies
- Improve asset loading and script management
- Enhance template rendering performance
- Streamline user experience across all interfaces

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-29 11:26:10 -03:00

9.9 KiB

Trainer Certification System Refactoring Plan

Date: August 28, 2025
Status: Planning Phase
Scope: Refactor single trainer certification fields to support multiple certifications per trainer

Overview

Currently, the HVAC plugin stores trainer certifications as simple meta fields in trainer profiles:

  • certification_type (single value)
  • certification_status (single value)
  • date_certified (single date)
  • certification_color (auto-assigned)

Goal: Expand to support multiple certifications per trainer with proper tracking, expiration dates, and audit trails.

Current State Analysis

Existing Fields (in trainer_profile post type):

  • certification_type: "Certified measureQuick Champion", "Certified measureQuick Trainer"
  • certification_status: "Active", "Expired", "Suspended"
  • date_certified: Single certification date
  • certification_color: Color coding based on type

Current Usage:

  • Trainer profile displays show single certification
  • Find-a-trainer filtering by certification type
  • Color coding in UI based on certification level

Proposed Solution: Custom Post Type Architecture

1. New Custom Post Type: trainer_certification

register_post_type('trainer_certification', [
    'public' => false,
    'show_ui' => true,
    'show_in_menu' => 'hvac-dashboard',
    'supports' => ['title', 'editor'],
    'capability_type' => 'hvac_certification',
    'labels' => [
        'name' => 'Trainer Certifications',
        'singular_name' => 'Trainer Certification',
        'menu_name' => 'Certifications'
    ]
]);

2. Meta Fields Structure

Core Fields:

  • _trainer_user_id (BIGINT) - Links to trainer's WordPress user ID
  • _certification_type (VARCHAR) - Type of certification
  • _certification_number (VARCHAR) - Unique identifier (e.g., "MQT-2025-00123")
  • _issue_date (DATE) - When certification was granted
  • _expiration_date (DATE) - When certification expires (nullable)
  • _status (ENUM) - active, expired, suspended, revoked
  • _issued_by (BIGINT) - User ID of who granted the certification

Administrative Fields:

  • _renewal_date (DATE) - Last renewal date
  • _renewal_count (INT) - Number of times renewed
  • _revocation_reason (TEXT) - Reason if revoked
  • _revoked_by (BIGINT) - Who revoked it
  • _revoked_date (DATETIME) - When revoked

Future Expansion Fields:

  • _certification_level (VARCHAR) - Basic, Advanced, Master
  • _prerequisites_met (LONGTEXT) - JSON array of prerequisite certifications
  • _continuing_education_hours (INT) - CE hours associated
  • _certificate_file_url (TEXT) - Link to certification document

3. Custom Taxonomy: certification_category

Terms:

  • measureQuick (current focus)
  • NATE (future)
  • EPA (future)
  • Manufacturer (future)
  • Safety (future)

4. Database Schema

Post Structure:

  • post_title: Descriptive name (e.g., "John Doe - measureQuick Certified Trainer")
  • post_content: Notes about the certification
  • post_status: draft (pending), publish (active), private (revoked)
  • post_author: The trainer who holds the certification

Implementation Plan

Phase 1: Core Infrastructure (Week 1)

  1. Create Custom Post Type Registration

    • File: includes/certifications/class-hvac-trainer-certification-manager.php
    • Register post type and taxonomies
    • Set up meta field definitions
    • Add admin UI customizations
  2. Database Setup

    • No custom tables needed (using WordPress post system)
    • Add meta field validation
    • Set up proper indexing for queries
  3. Admin Interface

    • Custom meta boxes for certification details
    • List view with certification status filters
    • Bulk actions for status changes

Phase 2: Migration System (Week 1)

  1. Migration Script

    • File: includes/certifications/class-hvac-certification-migrator.php
    • Convert existing certification fields to new post type
    • Preserve historical data
    • Create audit trail
  2. Backward Compatibility Layer

    • Maintain old meta field getters during transition
    • Add deprecation notices
    • Gradual migration approach

Phase 3: Integration Updates (Week 2)

  1. Trainer Profile Manager Updates

    • Update display logic for multiple certifications
    • Modify save/update routines
    • Maintain color coding system
  2. Find-a-Trainer Integration

    • Update filtering to work with new structure
    • Support multiple certification searches
    • Performance optimization
  3. API Endpoints

    • REST API for certification management
    • AJAX handlers for admin interface
    • Export capabilities

Phase 4: Advanced Features (Week 2-3)

  1. Expiration Management

    • Automated expiration checking
    • Email notifications for expiring certifications
    • Renewal workflow
  2. Audit Trail

    • Track all certification changes
    • Admin reporting interface
    • Export audit logs
  3. Bulk Operations

    • Bulk certification renewal
    • Batch imports
    • Mass status changes

Migration Strategy

Step 1: Data Preservation

// Before migration, backup existing data
$existing_certifications = [];
$trainers = get_users(['role' => 'hvac_trainer']);
foreach ($trainers as $trainer) {
    $profile = get_trainer_profile($trainer->ID);
    if ($profile) {
        $existing_certifications[$trainer->ID] = [
            'type' => get_post_meta($profile->ID, 'certification_type', true),
            'status' => get_post_meta($profile->ID, 'certification_status', true),
            'date' => get_post_meta($profile->ID, 'date_certified', true),
            'color' => get_post_meta($profile->ID, 'certification_color', true)
        ];
    }
}

Step 2: Create New Certification Records

foreach ($existing_certifications as $trainer_id => $cert_data) {
    if (!empty($cert_data['type'])) {
        $certification_id = wp_insert_post([
            'post_type' => 'trainer_certification',
            'post_title' => get_user_meta($trainer_id, 'display_name', true) . ' - ' . $cert_data['type'],
            'post_status' => 'publish',
            'post_author' => $trainer_id
        ]);
        
        update_post_meta($certification_id, '_trainer_user_id', $trainer_id);
        update_post_meta($certification_id, '_certification_type', $cert_data['type']);
        update_post_meta($certification_id, '_status', strtolower($cert_data['status']));
        update_post_meta($certification_id, '_issue_date', $cert_data['date']);
        update_post_meta($certification_id, '_issued_by', get_current_user_id());
    }
}

Step 3: Update Display Logic

  • Modify trainer profile templates to show multiple certifications
  • Update find-a-trainer filters
  • Maintain existing color coding where possible

API Design

New Manager Class: HVAC_Trainer_Certification_Manager

Key Methods:

class HVAC_Trainer_Certification_Manager {
    // Core CRUD operations
    public function create_certification($trainer_id, $type, $data = []);
    public function get_trainer_certifications($trainer_id, $active_only = true);
    public function update_certification_status($cert_id, $status, $reason = '');
    public function renew_certification($cert_id, $new_expiration = null);
    
    // Queries and reporting
    public function get_expiring_certifications($days_ahead = 30);
    public function get_certification_stats();
    public function search_certifications($criteria = []);
    
    // Migration and compatibility
    public function migrate_legacy_certifications();
    public function get_primary_certification($trainer_id); // Backward compatibility
}

Security Considerations

  1. Capability Management

    • Only hvac_master_trainer and administrator can manage certifications
    • Trainers can view their own certifications (read-only)
    • Audit all certification changes
  2. Data Validation

    • Validate all input fields
    • Prevent duplicate certifications
    • Enforce business rules (expiration dates, etc.)
  3. Access Control

    • Nonce verification for all actions
    • User permission checks
    • Sanitize all inputs

Testing Strategy

  1. Unit Tests

    • Test all CRUD operations
    • Validate migration scripts
    • Test search and filter functionality
  2. Integration Tests

    • Test trainer profile display
    • Verify find-a-trainer filtering
    • Check admin interface functionality
  3. Performance Tests

    • Query performance with large datasets
    • Page load times with multiple certifications
    • Search performance

Future Enhancements

Phase 5: Advanced Certification Types (Future)

  1. NATE Certifications

    • Multiple NATE specialty areas
    • Expiration tracking
    • CE hour requirements
  2. EPA Certifications

    • Section 608 certifications
    • Universal, Type I, II, III tracking
    • Renewal management
  3. Manufacturer Certifications

    • Brand-specific certifications
    • Product line specializations
    • Training completion tracking

Phase 6: Reporting and Analytics (Future)

  1. Certification Dashboard

    • Real-time certification status
    • Expiration alerts
    • Trainer qualification reports
  2. Compliance Reporting

    • Export certification records
    • Audit trail reports
    • Regulatory compliance tracking

Success Metrics

  1. Migration Success

    • 100% data preservation during migration
    • Zero downtime during transition
    • All existing functionality maintained
  2. Performance

    • Page load times remain under 2 seconds
    • Search performance under 500ms
    • Admin interface responsive
  3. User Experience

    • Intuitive admin interface
    • Clear certification status displays
    • Easy bulk operations

Timeline

Week 1:

  • Core infrastructure implementation
  • Migration system development
  • Basic admin interface

Week 2:

  • Integration with existing systems
  • Testing and bug fixes
  • Performance optimization

Week 3:

  • Advanced features
  • Documentation
  • Production deployment

This document will be updated as implementation progresses.