team rating
This commit is contained in:
49
core/racing/application/dtos/TeamLedgerEntryDto.ts
Normal file
49
core/racing/application/dtos/TeamLedgerEntryDto.ts
Normal file
@@ -0,0 +1,49 @@
|
||||
/**
|
||||
* DTO: TeamLedgerEntryDto
|
||||
*
|
||||
* Simplified team rating event for ledger display/query.
|
||||
* Pragmatic read model - direct repo DTOs, no domain logic.
|
||||
*/
|
||||
|
||||
export interface TeamLedgerEntryDto {
|
||||
id: string;
|
||||
teamId: string;
|
||||
dimension: string; // 'driving', 'adminTrust'
|
||||
delta: number; // positive or negative change
|
||||
weight?: number;
|
||||
occurredAt: string; // ISO date string
|
||||
createdAt: string; // ISO date string
|
||||
|
||||
source: {
|
||||
type: 'race' | 'penalty' | 'vote' | 'adminAction' | 'manualAdjustment';
|
||||
id?: string;
|
||||
};
|
||||
|
||||
reason: {
|
||||
code: string;
|
||||
description?: string;
|
||||
};
|
||||
|
||||
visibility: {
|
||||
public: boolean;
|
||||
};
|
||||
}
|
||||
|
||||
export interface TeamLedgerFilter {
|
||||
dimensions?: string[]; // Filter by dimension keys
|
||||
sourceTypes?: ('race' | 'penalty' | 'vote' | 'adminAction' | 'manualAdjustment')[];
|
||||
from?: string; // ISO date string
|
||||
to?: string; // ISO date string
|
||||
reasonCodes?: string[];
|
||||
}
|
||||
|
||||
export interface PaginatedTeamLedgerResult {
|
||||
entries: TeamLedgerEntryDto[];
|
||||
pagination: {
|
||||
total: number;
|
||||
limit: number;
|
||||
offset: number;
|
||||
hasMore: boolean;
|
||||
nextOffset?: number | null;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user