- Fix multi-WO display: auto-select all tree roots after resolve so detail panel loads data for every work order, not just the first seed CID - Disable scroll-wheel zoom on lineage tree (roam: 'move') to prevent accidental layout jumps while preserving drag-pan - Add batch API endpoints (get_lot_history_batch, get_lot_associations_batch) to avoid N parallel requests hitting rate limits - Remove redundant Split sub-tab from LOT detail (tree already shows splits) - Rename 退貨 → 報廢 to match actual reject/scrap data semantics - Hide internal ID columns (CONTAINERID, EQUIPMENTID, RESOURCEID) from history table display - Add timeline scroll container and time range header for long timelines - Remove obsolete migration and architecture docs no longer needed Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1.9 KiB
1.9 KiB
ADDED Requirements
Requirement: Reject History page SHALL be a pure Vite HTML entry
The reject-history page SHALL be built from an HTML entry and emitted as static dist assets.
Scenario: Vite entry registration
- WHEN Vite config inputs are evaluated
- THEN
reject-historySHALL map tofrontend/src/reject-history/index.html
Scenario: Build output artifacts
- WHEN
vite buildcompletes - THEN output SHALL include
reject-history.html,reject-history.js, andreject-history.cssinstatic/dist/
Requirement: Reject History route SHALL serve static dist HTML
The Flask route for /reject-history SHALL serve pre-built static HTML through send_from_directory.
Scenario: Static page serving
- WHEN user navigates to
/reject-history - THEN Flask SHALL serve
static/dist/reject-history.htmlwhen the file exists - THEN HTML SHALL NOT be rendered through Jinja template interpolation
Scenario: Dist fallback response
- WHEN
reject-history.htmlis missing in dist - THEN route SHALL return a minimal fallback HTML that still references
/static/dist/reject-history.js
Requirement: Reject History shell integration SHALL use native module loading
The page SHALL integrate with portal-shell native module loading policy.
Scenario: Native module registration
- WHEN shell resolves a route component for
/reject-history - THEN it SHALL dynamically import
frontend/src/reject-history/App.vue - THEN the route style bundle SHALL be loaded via registered style loaders
Requirement: Reject History page SHALL call APIs through shared core API module
The page SHALL call backend APIs via frontend/src/core/api.js without legacy global dependencies.
Scenario: API call path
- WHEN reject-history page executes GET or export requests
- THEN requests SHALL use shared API utilities (
apiGet/equivalent) - THEN page behavior SHALL NOT depend on
window.MesApi