1.8333333333333333h) when services combine to partial hours.inspection.duration is an optional Number on the inspection document (attik-backend/src/models/inspectionSchema.ts); the backend PATCH path in attik-backend/src/routes/inspection.ts persists whatever number the client sends with no rounding on write.attik-frontend/src/app/tools/inspections/[id]/components/InspectionDateChip.tsx renders {inspection.duration}h directly in JSX (lines 30–34) with no display formatting — whatever is stored is stringified as-is.attik-frontend/src/util/functions/schedulingHelpers/calculateServicePrices.ts sums base hours (duration / durationAsPrimary) plus modifier time from attik-frontend/src/util/functions/data/modifierPriceAdjFn.ts, where time modifiers convert accumulated minutes to hours via / 60 without rounding the per-service result.attik-frontend/src/util/functions/inspection/buildDurationEndtimePatch.ts rounds to two decimals when persisting duration + endtime from workorder/reschedule flows.computeTotalJobDurationHours in attik-frontend/src/util/functions/schedulingHelpers/recalculateChargesForRequiredInfo.ts uses round2 (two decimals) when recalculating from required-info changes.attik-frontend/src/components/scheduling/NewSchedulingForm.tsx saving priceData.totalDuration) and usePriceCalculation totals do not consistently round before save.attik-frontend/src/app/tools/inspections/[id]/components/WorkorderPriceChangeConfirmModal.tsx shows duration with .toFixed(2), while attik-frontend/src/app/tools/inspections/[id]/components/EditChargesModal.tsx footer shows raw {totalDuration} Hour(s). Reschedule duration inputs use 0.5-hour steps (RescheduleJobModal.tsx, RescheduleManualPanel.tsx) but still display/store whatever number results from calculation.attik-frontend/src/app/tools/inspections/[id]/components/InspectionDateChip.tsx — workorder header chip next to date/time; confirmed render path for user-reported behavior.attik-frontend/src/app/tools/inspections/[id]/components/EditChargesModal.tsx (footer total duration), WorkorderPriceChangeConfirmModal.tsx (already two-decimal preview — align or reuse formatter).calculateServicePrices.ts, modifierPriceAdjFn.ts, usePriceCalculation.ts, buildDurationEndtimePatch.ts, recalculateChargesForRequiredInfo.ts (computeTotalJobDurationHours), and scheduler save paths (NewSchedulingForm.tsx, attik-frontend/src/app/scheduler/hooks/useDraftSaveOrchestrator.ts, attik-frontend/src/app/scheduler/SchedulerContext.tsx).RescheduleJobModal.tsx derives totalDuration from charge service definitions and allows manual 0.5-hour edits — regression-check after any formatter or rounding change.attik-backend/src/models/inspectionSchema.ts — duration field type only; no precision constraint.attik-backend/src/routes/inspection.ts — reschedule/PATCH assigns inspection.duration from request body without normalization.3.5h), two decimals (matches confirm modal / some save paths), or integers when whole (e.g. 3h vs 3.5h).attik-frontend/src/util/... reused by chip, Edit Charges, and confirm modal.attik-frontend/src/app/tools/inspections/[id]/components/InspectionDateChip.tsxattik-frontend/src/util/functions/data/modifierPriceAdjFn.tsattik-backend/src/models/inspectionSchema.ts (duration)Please authenticate to join the conversation.
Planned
Main App
6 days ago
Linear
Get notified by email when there are changes.
Planned
Main App
6 days ago
Linear
Get notified by email when there are changes.