feat(reject-history): two-phase query architecture with cached views

Replace per-interaction Oracle queries with a two-phase model:
- POST /query: single Oracle hit, cache full LOT-level DataFrame (L1+L2)
- GET /view: read cache, apply supplementary/interactive filters via pandas

Add container query mode (LOT/工單/WAFER LOT with wildcard support),
supplementary filters (Package/WC GROUP/Reason) from cached data,
PB_* series exclusion (was PB_Diode only), and query loading spinner.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
egg
2026-02-23 07:08:27 +08:00
parent 57a0b780b1
commit 58e4c87fb6
11 changed files with 1707 additions and 657 deletions

View File

@@ -16,6 +16,7 @@ sqlalchemy>=2.0.0,<3.0.0
# Data Processing
pandas==2.3.3 # pandas 3.x removed DBAPI2 flow used by current pd.read_sql + SQLAlchemy usage
pyarrow>=17.0.0,<20.0.0 # Parquet serialization for Redis DataFrame cache
openpyxl>=3.0.0 # Excel file support
# Cache (Redis)