fix(resource-cache): resolve DataFrame TTL eviction causing empty resource status
_records_from_index() returned [] when process-level DataFrame cache (30s TTL) expired but derived index remained ready=true. Now reloads from Redis via _get_cached_data() instead of returning empty. Also rename /resource page from "機台狀態" to "設備即時概況" in page_status.json. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -45,7 +45,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"route": "/resource",
|
"route": "/resource",
|
||||||
"name": "機台狀態",
|
"name": "設備即時概況",
|
||||||
"status": "released",
|
"status": "released",
|
||||||
"drawer_id": "reports",
|
"drawer_id": "reports",
|
||||||
"order": 2
|
"order": 2
|
||||||
|
|||||||
@@ -419,7 +419,11 @@ def _records_from_index(index: ResourceIndex, positions: list[RowPosition] | Non
|
|||||||
return list(legacy_records)
|
return list(legacy_records)
|
||||||
selected = [legacy_records[int(pos)] for pos in positions if 0 <= int(pos) < len(legacy_records)]
|
selected = [legacy_records[int(pos)] for pos in positions if 0 <= int(pos) < len(legacy_records)]
|
||||||
return selected
|
return selected
|
||||||
return []
|
# DataFrame evicted from process cache (TTL expired) and no legacy
|
||||||
|
# records stored in index. Reload from Redis before giving up.
|
||||||
|
df = _get_cached_data()
|
||||||
|
if df is None:
|
||||||
|
return []
|
||||||
selected_positions = positions if positions is not None else index.get("all_positions", [])
|
selected_positions = positions if positions is not None else index.get("all_positions", [])
|
||||||
if not selected_positions:
|
if not selected_positions:
|
||||||
selected_positions = list(range(len(df)))
|
selected_positions = list(range(len(df)))
|
||||||
|
|||||||
Reference in New Issue
Block a user