Sprint 2 Etapas 1-2: modelo recursos utilizationMinutes+units, Dexie v3, ActivityPanel wow
This commit is contained in:
@@ -10,7 +10,8 @@ export const ResourceSchema = z.object({
|
||||
|
||||
export const ActivityResourceAssignmentSchema = z.object({
|
||||
resourceId: z.string().uuid(),
|
||||
utilizationPercent: z.number().min(0).max(1),
|
||||
utilizationMinutes: z.number().min(0, 'Los minutos no pueden ser negativos'),
|
||||
units: z.number().int().min(1, 'Las unidades deben ser al menos 1').default(1),
|
||||
})
|
||||
|
||||
export const ActivitySchema = z.object({
|
||||
|
||||
@@ -207,7 +207,7 @@ export function runSimulation(input: SimulationInput): SimulationResult {
|
||||
for (const assignment of activity.assignedResources) {
|
||||
const resource = resources.get(assignment.resourceId)
|
||||
if (!resource) continue
|
||||
const hoursUsed = (executionTimeMinutes / 60) * assignment.utilizationPercent
|
||||
const hoursUsed = (assignment.utilizationMinutes / 60) * assignment.units
|
||||
const cost = resource.costPerHour * hoursUsed * execProb
|
||||
resourceBreakdown.push({ resourceId: resource.id, resourceName: resource.name, cost })
|
||||
resourceCostDirect += cost
|
||||
@@ -215,7 +215,7 @@ export function runSimulation(input: SimulationInput): SimulationResult {
|
||||
const prev = resourceTotals.get(resource.id) ?? { cost: 0, minutes: 0, name: resource.name }
|
||||
resourceTotals.set(resource.id, {
|
||||
cost: prev.cost + cost,
|
||||
minutes: prev.minutes + activity.executionTimeMinutes * assignment.utilizationPercent * execProb,
|
||||
minutes: prev.minutes + assignment.utilizationMinutes * assignment.units * execProb,
|
||||
name: resource.name,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -36,7 +36,8 @@ export interface Activity {
|
||||
|
||||
export interface ActivityResourceAssignment {
|
||||
resourceId: UUID
|
||||
utilizationPercent: number
|
||||
utilizationMinutes: number // minutos que este recurso dedica por ejecución (independiente del tiempo de la actividad)
|
||||
units: number // cantidad de unidades del recurso (ej: 2 impresoras). Default: 1.
|
||||
}
|
||||
|
||||
export type GatewayType = 'exclusive' | 'parallel' | 'inclusive' | 'event-based'
|
||||
|
||||
Reference in New Issue
Block a user