Files
egg f14591c7dc feat(mid-section-defect): full-line bidirectional defect trace center with dual query mode
Transform /mid-section-defect from TMTT-only backward analysis into a full-line
bidirectional defect traceability center supporting all detection stations.

Key changes:
- Parameterized station detection: any workcenter group as detection station
- Bidirectional tracing: backward (upstream attribution) + forward (downstream reject rates)
- Dual query mode: date range OR LOT/工單/WAFER container-based seed resolution
- Multi-select filters for upstream station, equipment model (RESOURCEFAMILYNAME), and loss reasons
- Progressive 3-stage trace pipeline (seed-resolve → lineage → events) with streaming UI
- Equipment model lookup via resource cache instead of SPECNAME
- Session caching, auto-refresh, searchable MultiSelect with fuzzy matching
- Remove legacy tmtt-defect module (fully superseded)
- Archive openspec change artifacts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 16:16:33 +08:00

95 lines
4.8 KiB
Markdown

## ADDED Requirements
### Requirement: FilterBar SHALL include station dropdown
FilterBar SHALL display a `<select>` dropdown populated from `GET /api/mid-section-defect/station-options` on mount. The dropdown SHALL default to '測試' and emit `station` via the `update-filters` mechanism.
#### Scenario: Station dropdown loads on mount
- **WHEN** the FilterBar component mounts
- **THEN** it SHALL fetch station options from the API and populate the dropdown with 12 workcenter groups
- **THEN** the default selection SHALL be '測試'
#### Scenario: Station selection updates filters
- **WHEN** user selects a different station
- **THEN** `update-filters` SHALL emit with the new `station` value
### Requirement: FilterBar SHALL include direction toggle
FilterBar SHALL display a toggle button group with two options: '反向追溯' (`backward`) and '正向追溯' (`forward`). Default SHALL be `backward`.
#### Scenario: Direction toggle switches direction
- **WHEN** user clicks '正向追溯'
- **THEN** `update-filters` SHALL emit with `direction: 'forward'`
- **THEN** the active button SHALL visually indicate the selected direction
### Requirement: KPI cards SHALL display direction-aware labels
KpiCards component SHALL accept `direction` and `stationLabel` props and switch card labels between backward and forward modes.
#### Scenario: Backward KPI labels
- **WHEN** `direction='backward'`
- **THEN** KPI cards SHALL display existing labels: 偵測批次數, 偵測不良數, 上游追溯批次數, 上游站點數, etc.
#### Scenario: Forward KPI labels
- **WHEN** `direction='forward'`
- **THEN** KPI cards SHALL display: 偵測批次數, 偵測不良數, 追蹤批次數, 下游到達站數, 下游不良總數, 下游不良率
### Requirement: Chart layout SHALL switch by direction
App.vue SHALL render direction-appropriate chart sets.
#### Scenario: Backward chart layout
- **WHEN** `direction='backward'`
- **THEN** SHALL render 6 Pareto charts: by_station, by_loss_reason, by_machine, by_detection_machine, by_workflow, by_package
#### Scenario: Forward chart layout
- **WHEN** `direction='forward'`
- **THEN** SHALL render 4 Pareto charts: by_downstream_station, by_downstream_loss_reason, by_downstream_machine, by_detection_machine
### Requirement: Detail table columns SHALL switch by direction
DetailTable component SHALL accept a `direction` prop and render direction-appropriate columns.
#### Scenario: Backward detail columns
- **WHEN** `direction='backward'`
- **THEN** columns SHALL match existing backward layout (CONTAINERID, station history, upstream machine attribution, etc.)
#### Scenario: Forward detail columns
- **WHEN** `direction='forward'`
- **THEN** columns SHALL include: CONTAINERID, 偵測設備, 偵測投入, 偵測不良, 下游到達站數, 下游不良總數, 下游不良率, 最差下游站
### Requirement: Page header SHALL reflect station and direction
Page title SHALL be '製程不良追溯分析'. Subtitle SHALL dynamically reflect station and direction.
#### Scenario: Backward subtitle
- **WHEN** `station='電鍍', direction='backward'`
- **THEN** subtitle SHALL indicate: `電鍍站不良 → 回溯上游機台歸因`
#### Scenario: Forward subtitle
- **WHEN** `station='成型', direction='forward'`
- **THEN** subtitle SHALL indicate: `成型站不良批次 → 追蹤倖存批次下游表現`
### Requirement: CSV export SHALL include direction-appropriate columns
Export SHALL produce CSV with columns matching the current direction's detail table.
#### Scenario: Forward CSV export
- **WHEN** user exports with `direction='forward'`
- **THEN** CSV SHALL contain forward-specific columns (detection equipment, downstream stats)
### Requirement: Page metadata SHALL be updated
`page_status.json` SHALL update the page name from '中段製程不良追溯' to '製程不良追溯分析'.
#### Scenario: Page name in page_status.json
- **WHEN** the page metadata is read
- **THEN** the name for `mid-section-defect` SHALL be '製程不良追溯分析'
## REMOVED Requirements
### Requirement: TMTT印字腳型不良分析 page
**Reason**: Functionality fully superseded by generalized traceability center (station=測試 + loss reasons filter for 276_腳型不良/277_印字不良)
**Migration**: Use `/mid-section-defect` with station=測試 and filter loss reasons to 276_腳型不良 or 277_印字不良
#### Scenario: TMTT defect page removal
- **WHEN** the change is complete
- **THEN** `frontend/src/tmtt-defect/` directory SHALL be removed
- **THEN** `src/mes_dashboard/routes/tmtt_defect_routes.py` SHALL be removed
- **THEN** `src/mes_dashboard/services/tmtt_defect_service.py` SHALL be removed
- **THEN** `src/mes_dashboard/sql/tmtt_defect/` directory SHALL be removed
- **THEN** `nativeModuleRegistry.js` SHALL have tmtt-defect registration removed
- **THEN** `page_status.json` SHALL have tmtt-defect entry removed