miinventario-backend-v2/src/modules/admin/dto/dashboard.dto.ts
rckrdmrd 5a1c966ed2 Migración desde miinventario/backend - Estándar multi-repo v2
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 08:12:15 -06:00

67 lines
1.2 KiB
TypeScript

import { IsOptional, IsDateString, IsEnum } from 'class-validator';
export enum DashboardPeriod {
DAY = 'day',
WEEK = 'week',
MONTH = 'month',
YEAR = 'year',
}
export class DashboardQueryDto {
@IsOptional()
@IsDateString()
startDate?: string;
@IsOptional()
@IsDateString()
endDate?: string;
@IsOptional()
@IsEnum(DashboardPeriod)
period?: DashboardPeriod;
}
export interface DashboardMetrics {
users: {
total: number;
mau: number;
dau: number;
newThisPeriod: number;
};
stores: {
total: number;
activeThisPeriod: number;
};
videos: {
total: number;
processedThisPeriod: number;
averageProcessingTime: number;
};
revenue: {
total: number;
thisPeriod: number;
byPackage: { packageId: string; name: string; amount: number }[];
};
cogs: {
total: number;
thisPeriod: number;
byProvider: { providerId: string; name: string; cost: number }[];
};
margin: {
gross: number;
percentage: number;
};
credits: {
purchased: number;
used: number;
gifted: number;
};
}
export interface RevenueSeriesPoint {
date: string;
revenue: number;
cogs: number;
margin: number;
}