# ListLeaveConsumptionByRequest

## Overview

Lists the LeaveConsumption allocation lines recorded against a given LeaveRequest — every grant it drew days from, including lines already restored — so a request's ledger impact can be fully audited.

## Business Rules

- Returns every consumption row for the given `leaveRequestId`, including rows with `restoredAt` already set — restoration never deletes a row, it only stamps it
- A request whose LeaveType does not require a balance (MENSTRUAL, SPECIAL) has zero rows
- The sum of `days` across non-restored rows for the request equals the total days the request required (1.0 per full day, 0.5 per half day, summed over target dates); the full row set (restored + non-restored) shows how the reservation was split across grants and whether any of it was later given back
- Multiple rows exist for a single request when its reservation was split FIFO across more than one grant

## Process Flow

```mermaid
flowchart TD
    A[Caller requests consumption lines for a leaveRequestId] --> B{LeaveRequest exists?}
    B -- No --> C[Reject: LEAVE_REQUEST_NOT_FOUND]
    B -- Yes --> D[Load all LeaveConsumption rows for the request]
    D --> E[Return rows including restored ones, each showing days and restoredAt]
```

## External Dependencies

- [leave-management::LeaveConsumption](../model/LeaveConsumption.md) model — entity being queried
- [leave-management::LeaveRequest](../model/LeaveRequest.md) model — referenced by `leaveRequestId`

## Error Scenarios

- **LEAVE_REQUEST_NOT_FOUND**: no LeaveRequest exists for the given id

## Test Cases

- returns all consumption lines for a request, including restored ones
- returns an empty list for a non-deducting (MENSTRUAL or SPECIAL) request
- returns multiple lines when a reservation was split across grants
- returns LEAVE_REQUEST_NOT_FOUND for a non-existent request id
