# GetWorkSchedule

## Overview

getWorkSchedule retrieves a single WorkSchedule generation by id. It is the single-record lookup behind schedule detail views and behind other commands/queries that need to resolve one specific 所定 generation (e.g. confirming a generation before closing it).

## Business Rules

- Accepts a `workScheduleId` as input
- Returns the single WorkSchedule generation whose id matches, regardless of whether it is the current generation or a past/future generation
- Returns the full generation record: `assignmentId`, `scheduledDailyMinutes`, `scheduledWeeklyMinutes`, `effectiveStart`, `effectiveEnd`, and `versionOf`
- Does not resolve "current as of a date" — that is `getWorkScheduleAsOf` / `listActiveWorkSchedules`

## Process Flow

```mermaid
flowchart TD
    A[Receive workScheduleId] --> B[Look up WorkSchedule by id]
    B --> C{Found?}
    C -->|No| D[Return error: WORK_SCHEDULE_NOT_FOUND]
    C -->|Yes| E[Return WorkSchedule generation]
```

## External Dependencies

- [WorkSchedule](../model/WorkSchedule.md) model — entity being queried

## Error Scenarios

- **WORK_SCHEDULE_NOT_FOUND**: no current WorkSchedule generation exists for the given assignment

## Test Cases

- returns the WorkSchedule generation for a given id
- returns planned minutes, effective dates, and versionOf
- returns a past (closed) generation as well as the current one
- throws WORK_SCHEDULE_NOT_FOUND for an unknown id
