Complete guide to the comprehensive analytics system that tracks amateur radio callsign recognition training with character-level error analysis, CWOps integration, and performance insights across all difficulty levels.
The Callsign Training Analytics system provides comprehensive insights into amateur radio callsign recognition training through detailed multi-level data collection and analysis. Every training session automatically captures character-level errors, difficulty-specific performance, and CWOps member callsign analytics.
Character-Level Error Analysis: Unlike basic accuracy tracking, this system compares expected vs received callsigns character-by-character to identify specific error patterns:
โข Substitution: User types 'C' instead of 'K' (VK8ABC โ VC8ABC)
โข Missing: User omits a character (VK8DX โ VK8D)
โข Extra: User adds unnecessary character (VK8DX โ VK8DXX)
Track callsigns by difficulty level with detailed accuracy metrics
Individual character errors with position and context analysis
Special tracking for CWOps member callsigns with member info
Comprehensive performance tracking across all difficulty levels
The system tracks performance across seven distinct difficulty levels, each optimized for specific training objectives:
Short callsigns for initial pattern recognition
Standard amateur radio callsign format
Common longer callsign patterns
Longest standard callsign format
Field Day and portable operation formats
Real CWOps member callsigns with member data
Each difficulty level maintains separate analytics allowing users to track improvement in specific callsign complexity areas. The system identifies which character positions cause the most errors at each difficulty level, enabling targeted practice recommendations.
Advanced integration with the CWOps member database provides enhanced training experience with real amateur radio operator information.
Comprehensive session-wide metrics captured automatically after each training session.
Detailed character-by-character error analysis with position tracking and error type classification.
User types wrong character
User omits a character
User adds unnecessary character
Comprehensive visualization and analysis tools for performance tracking and improvement recommendations.
CREATE TABLE callsign_sessions (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL,
difficulty_level VARCHAR(20) NOT NULL, -- '3', '4', '5', '6', 'portable', 'all', 'cwops'
callsigns_trained INT NOT NULL DEFAULT 0,
callsigns_correct INT NOT NULL DEFAULT 0,
callsigns_incorrect INT NOT NULL DEFAULT 0,
accuracy_percentage DECIMAL(5,2) NOT NULL DEFAULT 0.00,
session_duration DECIMAL(8,2) NOT NULL DEFAULT 0.00, -- in seconds
character_errors INT DEFAULT 0,
total_characters INT DEFAULT 0,
speed_wpm DECIMAL(6,2) DEFAULT 0.00, -- Character speed
effective_wpm DECIMAL(6,2) DEFAULT 0.00, -- Effective speed
cwops_callsigns_count INT DEFAULT 0, -- Number of CWOps callsigns in session
session_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_user_difficulty (username, difficulty_level),
INDEX idx_session_date (session_date),
INDEX idx_difficulty_level (difficulty_level)
);
CREATE TABLE callsign_character_errors (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL,
difficulty_level VARCHAR(20) NOT NULL,
expected_char CHAR(1) NOT NULL, -- Expected character
received_char CHAR(1) DEFAULT '', -- What user typed (empty for missing)
error_type ENUM('substitution', 'missing', 'extra') NOT NULL,
position_in_callsign INT NOT NULL, -- Position where error occurred (0-based)
callsign_context VARCHAR(10) NOT NULL, -- Full callsign where error occurred
is_cwops_callsign BOOLEAN DEFAULT FALSE, -- Whether callsign is from CWOps member
session_duration DECIMAL(8,2) DEFAULT 0.00,
session_accuracy DECIMAL(5,2) DEFAULT 0.00,
speed_wpm DECIMAL(6,2) DEFAULT 0.00,
effective_wpm DECIMAL(6,2) DEFAULT 0.00,
error_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_user_char (username, expected_char),
INDEX idx_error_type (error_type),
INDEX idx_difficulty_level (difficulty_level),
INDEX idx_cwops_flag (is_cwops_callsign),
INDEX idx_timestamp (error_timestamp)
);
{
"difficulty_level": "5",
"callsigns_trained": 10,
"callsigns_correct": 8,
"callsigns_incorrect": 2,
"session_duration": 180.5,
"character_errors": 12,
"total_characters": 50,
"speed_wpm": 25.0,
"effective_wpm": 18.0,
"cwops_callsigns_count": 3
}
{
"success": true,
"overall_stats": {
"total_sessions": 25,
"total_callsigns": 250,
"average_accuracy": 87.2,
"best_accuracy": 96.0,
"total_practice_time": 3600
},
"difficulty_breakdown": {...},
"recent_sessions": [...],
"best_sessions": [...]
}
{
"difficulty_level": "5",
"character_errors": [
{
"expected": "K",
"received": "C",
"type": "substitution",
"callsign": "VK8ABC",
"is_cwops": false
},
{
"expected": "9",
"received": "",
"type": "missing",
"callsign": "W9XYZ",
"is_cwops": true
}
],
"session_context": {...}
}
{
"success": true,
"error_types_breakdown": [
{
"error_type": "substitution",
"count": 45,
"percentage": 67.2
}
],
"most_problematic_characters": [
{
"expected_char": "K",
"error_count": 12,
"common_mistakes": "C,G",
"avg_session_accuracy": 76.3
}
],
"cwops_analysis": {...}
}
Clear all callsign analytics data for the current user. Returns confirmation of deletion.
Setup and testing tool for database tables and API endpoints. Admin access required.
analyzeCharacterErrors(expected, received) {
const errors = [];
const expectedChars = expected.split('');
const receivedChars = received.split('');
for (let i = 0; i < Math.max(expectedChars.length, receivedChars.length); i++) {
const expectedChar = expectedChars[i] || '';
const receivedChar = receivedChars[i] || '';
if (expectedChar !== receivedChar) {
if (!expectedChar && receivedChar) {
// Extra character
errors.push({
expected: '', received: receivedChar,
type: 'extra', position: i, callsign: expected
});
} else if (expectedChar && !receivedChar) {
// Missing character
errors.push({
expected: expectedChar, received: '',
type: 'missing', position: i, callsign: expected
});
} else {
// Substitution
errors.push({
expected: expectedChar, received: receivedChar,
type: 'substitution', position: i, callsign: expected
});
}
}
}
return errors;
}
/callsign-training-analytics.html
- Main analytics dashboard
- Comprehensive visualizations
- Filter controls and insights
/callsign-training.html (modified)
- Added analytics access button
- Enhanced UI integration
/callsign-training.js (enhanced)
- Character error analysis
- CWOps detection logic
- Analytics data capture
/api/callsign-session-analytics.php
- Session data save/retrieve
- Performance metrics API
/api/callsign-character-analytics.php
- Character error analytics
- Problematic character analysis
/api/callsign-character-errors.php
- Individual error logging
- Character-level data capture
/api/callsign-clear-statistics.php
- Data management utility
- User analytics reset
Run any callsign training session to automatically save detailed analytics
Access comprehensive insights through the analytics dashboard
Use character error insights to focus practice on weak areas
api/callsign-session-analytics.php
api/callsign-character-analytics.php
api/callsign-character-errors.php
debug-callsign-analytics-setup.php
callsign-training.html