## ADDED Requirements ### Requirement: Equipment tab SHALL provide equipment selection with date range filtering The equipment tab SHALL allow selecting multiple equipment and a date range for all sub-tab queries. #### Scenario: Equipment and date selection - **WHEN** the user opens the equipment tab - **THEN** a MultiSelect dropdown SHALL list available equipment from `GET /api/query-tool/equipment-list` - **THEN** date inputs SHALL default to the last 30 days - **THEN** a query button SHALL trigger data loading for the active sub-tab #### Scenario: Shared filter state across sub-tabs - **WHEN** the user selects equipment and date range then switches sub-tabs - **THEN** the filter values SHALL persist across all equipment sub-tabs - **THEN** switching to a new sub-tab with the same filters SHALL trigger a fresh query for that sub-tab's data type ### Requirement: Equipment Production Lots sub-tab SHALL display lots processed by selected equipment The Production Lots sub-tab SHALL show all lots processed on the selected equipment within the date range. #### Scenario: Production lots query - **WHEN** the user queries with selected equipment and date range - **THEN** the system SHALL call `POST /api/query-tool/equipment-period` with `query_type: "lots"` - **THEN** results SHALL display in a table showing CONTAINERID, SPECNAME, TRACK_IN, TRACK_OUT, QTY, EQUIPMENTNAME #### Scenario: Partial track-out handling - **WHEN** a lot has multiple track-out records (partial processing) - **THEN** all records SHALL be displayed (not deduplicated) ### Requirement: Equipment Maintenance sub-tab SHALL display maintenance job records with expandable detail The Maintenance sub-tab SHALL show maintenance jobs from `DW_MES_JOB` with cause/repair/symptom codes. #### Scenario: Maintenance job list - **WHEN** the user queries maintenance records - **THEN** the system SHALL call `POST /api/query-tool/equipment-period` with `query_type: "jobs"` - **THEN** results SHALL display: JOBID, STATUS, CAUSECODENAME, REPAIRCODENAME, SYMPTOMCODENAME, CREATE/COMPLETE dates #### Scenario: Job detail expansion - **WHEN** the user clicks on a maintenance job row - **THEN** the row SHALL expand to show full detail including employee names, secondary codes, and related lot IDs (CONTAINERNAMES) ### Requirement: Equipment Scrap sub-tab SHALL display reject/defect records The Scrap sub-tab SHALL show reject statistics grouped by loss reason for the selected equipment and date range. #### Scenario: Scrap records query - **WHEN** the user queries scrap records - **THEN** the system SHALL call `POST /api/query-tool/equipment-period` with `query_type: "rejects"` - **THEN** results SHALL display: EQUIPMENTNAME, LOSSREASONNAME, TOTAL_REJECT_QTY, TOTAL_DEFECT_QTY, AFFECTED_LOT_COUNT ### Requirement: Equipment Timeline sub-tab SHALL visualize equipment activity over time The Timeline sub-tab SHALL render a Gantt-style timeline showing equipment status, lots processed, and maintenance events. #### Scenario: Multi-layer timeline rendering - **WHEN** the user views the equipment timeline - **THEN** the timeline SHALL overlay three data layers: status bars (PRD/SBY/UDT/SDT), lot processing bars, and maintenance event markers - **THEN** each equipment SHALL appear as a separate track row #### Scenario: Status color coding - **WHEN** the timeline renders status bars - **THEN** PRD SHALL be green, SBY SHALL be amber, UDT SHALL be red, SDT SHALL be blue-gray - **THEN** a legend SHALL be displayed showing the color mapping #### Scenario: Maintenance marker interaction - **WHEN** the user hovers over or clicks a maintenance event marker on the timeline - **THEN** a tooltip or expanded panel SHALL show the job detail (CAUSECODENAME, REPAIRCODENAME, SYMPTOMCODENAME) ### Requirement: Each equipment sub-tab SHALL support CSV export Every equipment sub-tab SHALL have its own export button calling the existing export API. #### Scenario: Equipment CSV export - **WHEN** the user clicks export on any equipment sub-tab - **THEN** the system SHALL call `POST /api/query-tool/export-csv` with the appropriate `export_type` (equipment_lots, equipment_jobs, equipment_rejects) - **THEN** the exported params SHALL include the current equipment_ids/equipment_names and date range