Scoreboard Feature โ
Overview โ
The Scoreboard feature provides a comprehensive view of test results for Wallets, Issuers, Verifiers, and Pipelines in the Credimi platform. Results are available in OpenTelemetry-compatible format for standardized telemetry integration.
API Endpoints โ
1. /api/my/results (Authenticated) โ
Returns scoreboard results for the current authenticated user's Wallet/Issuer/Verifier/Pipelines.
Method: GET
Authentication: Required
Response Format:
{
"summary": {
"wallets": [...],
"issuers": [...],
"verifiers": [...],
"pipelines": [...]
},
"otelData": {
"resourceSpans": [...]
}
}2. /api/all-results (Public) โ
Returns scoreboard results for all Wallet/Issuer/Verifier/Pipelines across the system.
Method: GET
Authentication: Not required
Response Format: Same as /api/my/results
Data Structures โ
ScoreboardEntry โ
Each entity (wallet, issuer, verifier, pipeline) is represented with:
{
id: string;
name: string;
type: 'wallet' | 'issuer' | 'verifier' | 'pipeline';
totalRuns: number;
successCount: number;
failureCount: number;
successRate: number; // Percentage (0-100)
lastRun: string; // ISO 8601 timestamp
}OpenTelemetry Format โ
Results are also provided in OpenTelemetry format with:
- Resource spans containing service metadata
- Scope spans with trace/span information
- Attributes including test metrics (success rate, counts, etc.)
- Status information (OK/ERROR)
Frontend Pages โ
1. User Scoreboard (/my/scoreboard) โ
Authenticated users can view their own scoreboard with:
- Tabbed interface for Wallets, Issuers, Verifiers, and Pipelines
- Summary table showing success rates and test statistics
- Links to detailed pages for each entity
- Expandable OpenTelemetry data section
2. Public Scoreboard (/scoreboard) โ
Public view showing aggregate results for all entities across the system.
3. Detail Pages (/my/scoreboard/[type]/[id]) โ
Individual entity pages showing:
- Summary statistics cards
- Test run history visualization (placeholder)
- Recent test runs table with OpenTelemetry span data
- Raw OpenTelemetry data in expandable section
Implementation Notes โ
Current Status โ
The implementation includes:
- โ Full API structure with OpenTelemetry format
- โ Frontend components with responsive design
- โ Type definitions for TypeScript
- โ ๏ธ Placeholder data aggregation - Currently returns example data
TODO: Real Data Integration โ
The following functions need to be implemented with actual database queries:
aggregateWalletResults()- Querywalletsandwallet_actionscollectionsaggregateIssuerResults()- Querycredential_issuerscollectionaggregateVerifierResults()- Queryverifiersanduse_cases_verificationscollectionsaggregatePipelineResults()- Querypipelinesandpipeline_resultscollections
Each function should:
- Filter by
ownerIDwhenuserSpecificis true - Aggregate test run data from related collections
- Calculate success/failure counts and rates
- Return properly formatted
ScoreboardEntryobjects
Database Collections โ
The following PocketBase collections are relevant:
wallets- Wallet definitionswallet_actions- Wallet action test resultscredential_issuers- Credential issuer definitionsverifiers- Verifier definitionsuse_cases_verifications- Use case verification resultspipelines- Pipeline definitionspipeline_results- Pipeline execution results (withowner,workflow_id,run_id)
OpenTelemetry Integration โ
The current implementation provides OpenTelemetry-compatible data structures:
- Traces - Each entity represents a logical trace
- Spans - Test runs are represented as spans
- Attributes - Test metrics are stored as span attributes
- Status - Success/failure indicated via status codes
This format allows integration with standard OpenTelemetry collectors and visualization tools.
Usage Examples โ
Fetching User Results โ
const response = await fetch('/api/my/results', {
headers: {
'Authorization': 'Bearer <token>'
}
});
const data = await response.json();
console.log(data.summary.wallets);Fetching Public Results โ
const response = await fetch('/api/all-results');
const data = await response.json();
console.log(data.summary.pipelines);Future Enhancements โ
Potential improvements:
- Real-time updates via WebSocket
- Filtering and sorting options
- Date range selection for historical data
- Export functionality (CSV, JSON, OpenTelemetry format)
- Integration with external OpenTelemetry collectors
- Custom visualization charts (line graphs, pie charts)
- Comparison views between entities
- Detailed error logs and debugging information