diff --git a/backend/src/modules/planner/engine.ts b/backend/src/modules/planner/engine.ts index 649b42a..977fc9f 100644 --- a/backend/src/modules/planner/engine.ts +++ b/backend/src/modules/planner/engine.ts @@ -118,8 +118,17 @@ export function planDay( } if (!placed) { - // Overflow — doesn't fit - overflow.push(toProposed(act, 0, act.durationMinutes * 60_000)); + // Overflow — doesn't fit; no time slot assigned + overflow.push({ + label: act.label, + startTime: '', + endTime: '', + durationMinutes: act.durationMinutes, + priority: act.priority ?? 'medium', + urgency: act.urgency ?? priorityToUrgency(act.priority ?? 'medium'), + category: act.category, + cascade: urgencyToCascade(act.urgency ?? priorityToUrgency(act.priority ?? 'medium')), + }); } } @@ -147,8 +156,8 @@ function toProposed(act: Activity & { earliestStart?: number }, startMs: number, const urgency = act.urgency ?? priorityToUrgency(act.priority ?? 'medium'); return { label: act.label, - startTime: startMs > 0 ? new Date(startMs).toISOString() : '', - endTime: endMs > 0 && startMs > 0 ? new Date(endMs).toISOString() : '', + startTime: new Date(startMs).toISOString(), + endTime: new Date(endMs).toISOString(), durationMinutes: act.durationMinutes, priority: act.priority ?? 'medium', urgency, diff --git a/backend/src/modules/planner/routes.ts b/backend/src/modules/planner/routes.ts index 5d4ec77..e846ea9 100644 --- a/backend/src/modules/planner/routes.ts +++ b/backend/src/modules/planner/routes.ts @@ -11,10 +11,11 @@ import { extractAuth } from '../../lib/auth.js'; import { isFeatureEnabled } from '../../lib/feature-flags.js'; import { PRODUCT_ID } from '../../lib/product-config.js'; import { trackEvent } from '../../lib/telemetry.js'; -import { PLANNER_DAY_PLANNED, PLANNER_PLAN_APPLIED, PLANNER_PLAN_REJECTED } from '../../lib/telemetry-events.js'; +import { PLANNER_DAY_PLANNED, PLANNER_PLAN_APPLIED } from '../../lib/telemetry-events.js'; import { planDay } from './engine.js'; import { PlanDayRequestSchema, ApplyPlanRequestSchema } from './types.js'; import * as timerRepo from '../timers/repository.js'; +import type { UrgencyLevel, CascadePreset } from '../timers/types.js'; import { randomUUID } from 'node:crypto'; export async function plannerRoutes(app: FastifyInstance) { @@ -78,12 +79,12 @@ export async function plannerRoutes(app: FastifyInstance) { label: p.label, type: 'countdown', state: 'active', - urgency: (p.urgency as 'standard') || 'standard', + urgency: (p.urgency || 'standard') as UrgencyLevel, duration: endMs - startMs, targetTime: p.endTime, createdAt: now, startedAt: p.startTime, - cascade: { preset: p.cascade as 'standard', intervals: [] }, + cascade: { preset: (p.cascade || 'standard') as CascadePreset, intervals: [] }, category: p.category, syncVersion: 1, });